Kyle Downey

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

Netty & Websockets

Building a simple crypto marketdata client

Labor Day's coding project was to figure out how to connect to the GDAX cryptocurrency exchange's websocket feed, building on some work done previously to connect via the REST API. As the latter had used Netty for its HTTP client and Jackson for the JSON support I wanted to do the same for Websockets to be consistent.


. . .

Read More

September 05, 2017