Skip to content

Design records

One record per decision, written when it was taken and not edited afterwards except by an amendment. They explain why the code is the way it is; Architecture and the reference pages describe what it does today.

# Decision Status
0001 Fixed-point int64 for Price and Qty accepted
0002 Exceptions and RTTI stay enabled, but off the hot path accepted
0003 #pragma once instead of include guards accepted
0004 doctest over GoogleTest accepted
0005 CPM.cmake over submodules, Conan or vcpkg accepted
0006 Static libraries with LTO accepted
0007 A hand-written network stack over Boost.Asio and libwebsockets accepted
0008 The simulated exchange speaks the Binance protocol accepted
0009 CRTP strategies over virtual interfaces accepted
0010 The .fmj journal format accepted; amended by format versions 2 and 3
0011 scikit-build-core for Python packaging accepted
0012 Strategy developer experience accepted; section 7 superseded by 0013
0013 Python strategies in live trading accepted
0014 US equities accepted, not implemented: the page is a plan, not the code
0015 UDP multicast market data and kernel-bypass receive accepted; amends 0014's market-data scope
0016 Pluggable storage backends, SQLite first accepted