Another day, more hacking.
The pull request is here.
The passing CI build is here.
What all changed today?
More to come soon!
The code for day #3 is out and available:
Pull request (PR) is here
Repository is here
For that day, the following items were tackled:
- An initial implementation of continuous integration (CI) was added via a free service called Travis CI. CI in a nutshell is a way for a tight feedback loop that is also reproducible for developers. There are a few other features of it but I will keep the definition simple for now. It is free for open source projects and is easily integrated via a small YAML-based file in your repository. Our example is here. An example of an executed build via Travis CI for this project can be found here.
- Updated documentation around the initial Bazel builds.
- QuickFix is being built using Bazel’s rules_foreign_cc which is a set of rules for building from foreign build systems such as CMake (and others).
- A build target that provides the initial harness from which a simple order echo server will be built from was created. More details on that to come in the README file.
- clang-format support was added
- Future to-do items were added.
- Please feel free to add to-do items and submit a pull request should there be something that you want to see in particular.
Day #2 is up here. Unfortunately, I was unable to record and discuss the session due to a heavy travel schedule this weekend.
This change set provides more documentation around the project goals and some of the entities that we will be seeing. More to come soon, enjoy!
The trading resource repository has been updated with several new items with many more promised over the next few days. You can find it here. Over the next few days, I will move the books section to it’s own page and post several other books that have been value to my career.
Day #1 which was non-functional code repository setup has been pushed to Github here. Additionally, I have cut a repository that can hold interesting links of note that we may encounter along the path such as useful libraries, book references, etc. It is located here as well.
In terms of scheduling, I am aiming to have the first video go out this week in terms of setting up the build system for the project to support multiple languages (Java, C++, Python) and to run their associated tests. The reason for multiple languages is to support the needs of the hot path of execution (C++ typically) and also the quantitative analysts (“quants” as they are often called in the industry) whom typically work in Python (or a language called R which we can later add support for).
The build system will leverage an open source system from Google called Bazel. It is an open sourcing of their internal build system called Blaze. The first 1-2 videos will be of basic project setup, covering of the vocabulary around it, and such to build on in subsequent videos.
After that set of videos, I plan to move us onto foundational components definitions in Protocol Buffers next. This will cover defining things along the way like:
- What is an instrument?
- What is a derivative?
This should take up a chunk of the first week of the project. Also note, tentative schedule here that is subject to massively change should we go off on tangents, etc
I have been batting around the concept of doing an open source project for developing an automated trading system. I have decided to dedicate time to it and will codify many of the former concepts, spreadsheets, and papers into code. There will probably be some screencasts to walkthru the setup, etc of the codebase.
At a high level, the code will be here on Github when the project starts. I’ll post here the updates and a schedule as soon as I formalize it.
An interesting article was published to the Journal of Risk and Financial Management in regards to cryptocurrencies markets and performing statistical arbitrage. The TLDR version as one might expect:
- Execution is key
- The strategy performance is positive
The paper appears to aggregate order books over multiple markets for their research performed. The paper is available in open access format here.