OsmiMath
OsmiMath is a C++ tensor and matrix SIMD math library that utilizes AVX2 instructions for vectorized operations, including matrix transposition, inverse, dot and element products. It implements extensions for various forms of inference.
OsmiMath is a C++ tensor and matrix SIMD math library that utilizes AVX2 instructions for vectorized operations, including matrix transposition, inverse, dot and element products. It implements extensions for various forms of inference.
OsmiArrow is a C++ abstraction over Apache Arrow and Parquet for research workflows. It provides typed row and table interfaces for reading CSV and Parquet data, selecting and filtering data, adding derived columns, iterating over rows, and writing CSV or Parquet output.
Liquidator serves as a node-based algo builder and quoter similar to Trading Technologies Algo Design Lab (ADL). It’s a fallback for a deprecation that may prevent me from using OsmiTrader, which relies on specific ISVs for routing. Liquidator uses the Microsoft COM interop library to communicate with software that supports it, usually for the purpose of trading through Excel RTD. For example, Liquidator works with Trading Technologies to provide theo prices and offsets to TT autoTraders and MM algos as well as Stellar RTD. It can also be used for fully automated trading when used with other platforms such as Rithmic Trader and CQG. The strategies are saved to .strategy and can then be run in the executor windows with the ability to adjust public parameters. Thanks to Komorra for providing the node control library as OSS (https://github.com/komorra).
Liquidator has sub-par latency due to the nature of its design but is great for prototyping.
Timecop++ is my backtesting engine which ingests CME MDP MBO or BBOs, maintains each implied and outright order book in the file and fills with curve fitting for beyond-best-bid/offer fills in the case that BBOs are used. Timecop provides parameters for exchange delay, notification delay and internal latency. It was originally written in C# and the recent refactor has made it far more performant. Timecop returns a fill report and allows searching historical add/del/trade to see the market state at the time of a fill.
Genesis Research is an economic data and news platform. GR features high-speed news wires and economic event data from a number of sources as well as global commodity, equity/index and foreign exchange quotes. The UI imitates older versions of Refinitiv Eikon. I no longer maintain it.
C++ Win32 economic data CLI.
The FIXDapter API is an easy-to-use FIX API that maintains a TCP session and parses inbound and outbound FIX messages. FIXDapter is available in both a C++ and C# .NET version, the C# version utilizing event handlers. FIXDapter acts as both acceptor and initiator. The most important feature is its ability to codegen message schemas from a config using reflection, making it easy to implement ASCII FIX for multiple vendors.
OsmiTrader/Genesis is my complete trading stack consisting of the OsmiTrader daemon and the Genesis GUI instance. OsmiTrader is the core trading platform, featuring strategyManager, a quoting engine for market making, cross-contract spreading and hitting strategies. OsmiTrader has been coloed with the CME at CyrusOne CH1 and uses a combination of FIX binary over TCP and protobuf to receive market data and route orders to Cunningham Trading Systems with RTTs under a millisecond.
It started as a tool to pull orderbook data out of a retail futures platform to create an improved price ladder for click trading.
OsmiTrader is written in C++ and is deployed bare on CentOS Stream. Genesis is the front-end stack, built on the .NET Framework. Genesis consists of the StrategyManager UI which allows the creation of multiple algo instances simultaneously, the selection of hedging and basis markets and the user-defined or algo theo price. The user can open an order book ladder for click trading, view the audit trail, fills, working orders, etc.
The price ladders can also load autospreader markets between any two contracts on any exchange. I use the CME’s method of constructing the implied spread book (synthetic spreads in StrategyManager is a WIP).
The front end also has the ability to forward market data to a different computer, for which I have both an acceptor application written in C++ and a Qt GUI. The current WIP version of OsmiTrader gets rid of the old C++/CLR interface. Currently the feed handlers are implemented in modern .NET with a C++/CLR interface for C++ strategies. Strategies are based around a generic/parameterized quoter, providing their own fair value implementation. The new version features a separate trigger-based system which handles hedging internally, though its orders are still exposed to the quoter. The trigger system preloads order actions which can be triggered on events. It also implements new limit and batch preload actions. Preloads are orders sent to the gateway marked as held and with a maximum pay-up price; they pass pre-trade risk but are not released until they receive a trigger. The batch preload allows preload limits to manage child orders.
OsmiTrader quoter/hedger manager, Genesis ladder/autospreaders and risk screens (v3 build):
V2 build:
Market data streamer received BBOs:
The legacy version of Genesis. Built to target legacy Windows NT operating systems such as Windows XP, 2000, 7 and Vista. The visual layout and functionality is derived from older versions of Trading Technologies’ now-discontinued X_Trader platform (V7, V6.9).
Genesis Trader Classic features the following: