Kyle Downey


A simple crypto trading system

I sometimes trade Bitcoin on Coinbase Pro -- as a New York state resident I don't have many choices thanks to the BitLicense -- and while the Web interface is decent, it does not provide all the functionality I want. I also want to brush up on my C++ and Web development, both of which I last did professionally 20 years ago, and want to . . .

Read More

August 10, 2019

Streaming marketdata

Cryptocurrency exchange marketdata API in C++

One long-standing personal goal for me is to get up to speed on C++17 -- revisiting a programming language I last worked in professionally when I was at Goldman Sachs. Given my interest in Bitcoin and cryptocurrency trading a natural choice for a starter project is finding a way to source and parse marketdata. Bear in mind that the following . . .

Read More

July 27, 2019

Modular Microservices in Java 10

Building a Jigsaw-based application server

I started a small GitHub project called Wisp after some initial failed experiments with the Felix OSGi container, IntelliJ and Java 10. Once complete Wisp will host ultra-lightweight, Netty-based Websocket services in much the same way as Tomcat, Jetty and other Web containers host servlets, and to do this it uses the Jigsaw modularity . . .

Read More

August 11, 2018

Quantum of Rage

Streaming sentiment analysis of Reddit posts

VADER, or Valence-Aware Dictionary for sEntiment Reasoning, is a sentiment analysis tool first described in a paper by Hutto & Gilbert in 2014. Unlike its predecessors VADER is tuned for social media text, including emoji and common short-hands used in microblogs. I wanted to experiment with sentiment-based signals for Bitcoin, and it . . .

Read More

March 25, 2018


A lightweight application runner for Java

Bladerunner is an ultra-lightweight library which gives you an enhanced main() method for running your apps, including:

  • built-in HOCON configuration file support
  • built-in Dagger dependency injection
  • built-in logging setup (defaults to log4j2)
  • simple threading to run multiple components

In the spirit of . . .

Read More

March 11, 2018

Lightweight Data Layers

IntelliJ, SQLite and JDBI

Many years ago I designed and implemented a trading strategy container which included strategy persistence, and I used a toolkit that was ready to hand, familiar to me (Hibernate) -- and used the most commonly deployed SQL database at my employer. It's not quite the all-time winner for worst architectural choices I have made, but it's . . .

Read More

February 18, 2018

Cryptocurrency marketdata capture & replay

Chronicle, Flatbuffers and GDAX

I am certain that my book-building logic has a bug.

The computed bid-ask spread gets out of sync with what I can see on the exchange, and only after a period of time does it revert back to normal. What's happening? With several hundred updates a second, it is impossible to say. But what if I had a record of every single . . .

Read More

September 24, 2017