Serenity
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 . . .
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 . . .
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 . . .
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 . . .
Bladerunner
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 . . .
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 . . .
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 . . .