Release history
FLOX C++ trading systems framework with MCP releases
All releases
15 shown
- `flox-mcp` installation: `pip install flox-mcp` followed by `flox-mcp init` to bootstrap `.mcp.json`.
- Use the new parity gate CI checks when adding or modifying bindings to ensure cross‑binding equivalence.
- `flox-mcp` Model Context Protocol server enabling AI agents to query bindings, indicators, runtime state and docs.
- Same strategy code runs unchanged in `BacktestRunner` and live `Runner` with identical pre‑trade gate behavior.
- Polyglot parity across Python, Node.js, Codon and embedded JavaScript via cross‑binding alignment helpers, composite‑condition DSL and shared execution algorithms.
Full changelog
v0.6.0 — polyglot strategies, AI-friendly DX, same code backtest→live
Strategies in Python, Node.js, Codon, and embedded JavaScript run on one C++ core through parity-tested bindings. The same strategy code goes from backtest to live without a rewrite — pre-trade gate, fill hooks, order events all behave the same on both runners. flox-mcp is a Model Context Protocol server that lets coding agents query the same FLOX install you're using: every binding's surface, every indicator, every error code, the live engine's positions and orders, the full doc set.
Highlights
flox-mcpMCP server. Install withpip install flox-mcp, bootstrap withflox-mcp init. Tools cover symbol lookup across bindings, indicator introspection, scaffolders, full-text doc search, runtime inspection, control-plane order routing, live analytics.- Same code backtest→live.
BacktestRunnernow takes the sameRiskManager/KillSwitch/OrderValidator/PnLTrackerstack as the liveRunner. Reduce-only and flatten orders bypass the gate (so you can always exit when caps tighten). flox engine simpaper engine in one command. BootsRunner+SimulatedExecutor+ControlServer+ a runtime-snapshot writer. Prints the engine URL and a copy-pasteableflox-mcp init --engine-url ... --token ....- Polyglot parity, all four bindings. Multi-TF alignment helpers, composite-condition DSL, indicator-grid sugar,
OrderGroupstate machine,MultiFeedClock,.floxruntrace format, latency models, tape diff, portfolio risk, execution algorithms. Cross-binding parity gate in CI. Strategy.on_fill/on_order_updatehooks across all bindings. Strategies see their own fills and order-lifecycle events..floxlogpublic spec + replay-equivalence CI gate. The recorded tape format is documented; a CI step blocks any binding change that breaks byte-for-byte replay equivalence.- AI-DX surface. llms.txt and llms-full.txt published,
.pyi+py.typedon PyPI,index.d.tson npm, structuredFloxErrorwith code + help URL, snippet linter that fails when doc examples drift. - IDL-driven C API codegen.
flox_capi_spec.hppis what generates the C header, the Codon FFI, and the LLMs reference. ABI snapshot gate fails the build on accidental breakage.
What's new
AI / MCP
flox-mcpModel Context Protocol server (#141)- Polyglot tools:
lookup_symbol,list_bindingsover bundled cross-binding data (#166) - Runtime tools:
run_backtest,compute_indicator,suggest_indicator(#168) - Read-only positions inspection (#174)
- Mutating control-plane tools with capability scopes + token security model (#178)
- Live analytics: read-only introspection over the control plane (#179)
- Lookahead-bias detector tool (#181)
lookup_symbolsurfaces curated semantic gotchas (#229)record_datatool wraps the canonical recording paths (#228)init_projectthin wrapper aroundflox new(#225)flox-mcp init— bootstrap.mcp.jsonin one command (#233)- Tier-4 read tools fail-graceful when no runtime snapshot exists (#232)
docs_searchAND-matches multi-word queries (#221)run_backtestroutes by strategy kind (#222)suggest_indicatorcovers mean-reversion / stddev / z-score (#223)- Friendlier no-engine error for runtime tools (#224)
- Surface canonical paths instead of building parallel ones (#219)
Strategy & backtest
BacktestRunnerpre-trade gate parity with liveRunner(#235)Strategy.on_fill/on_order_updatehooks — engine + pybind11 (#226)BacktestRunner.run_tape(path)for.floxlogreplay (#227)- Wire
MultiModePositionTrackerintoStrategy(silent zero-trade fix) (#220) - Strategy hot-reload without dropping connections (#192)
- Multi-TF alignment helpers on
Strategy(#196) Strategy.on_barcallback +run_bars(#123)- RL environment over a
.floxlogtape, Gymnasium-compatible (#186) - Execution algorithms: TWAP / VWAP / Iceberg / POV slicers (#185)
PaperBroker: live-data sandbox / paper trading mode (#175)
Polyglot parity
- Cross-binding parity gate in CI (#149)
- TypeScript strategy authoring with decorators (#187)
- Latency models, tape diff, portfolio risk, execution algos — C++ core with binding parity (#188, #189, #190, #191)
.floxrunstrategy-trace format with cross-binding parity (#194)- Composite-condition DSL for multi-symbol multi-TF strategies (#197)
- Indicator-grid sugar on top of composite DSL (#198)
- Latency-aware
MultiFeedClock(#200) - Multi-leg
OrderGrouphelper, BestEffort policy (#199) - Multi-TF alignment helpers in QuickJS + Codon (#204)
- Composite DSL ported to NAPI / QuickJS / Codon (#205)
- Indicator-grid sugar ported to NAPI / QuickJS / Codon (#206)
OrderGroupstate machine across all four bindings (#207)MultiFeedClockstate machine across all four bindings (#208)- Runner cross-binding
.floxrunparity gate (#212) Strategy.on_fill/on_order_updateparity for NAPI / QuickJS / Codon (#230)BacktestRunner.runTape— NAPI / Codon parity (#231)
Tooling & CLIs
flox engine sim— paper engine in one command (#234)flox tapeCLI: record / replay / inspect (#173)flox bundle: reproducibility bundle format (#176)flox tape diff: trade-by-trade comparison of two tapes (#182)flox lint lookahead(#181)flox newCLI scaffolder (#158)CcxtBrokerlive broker adapter (#157)- Notebook variant of the research scaffold (#160)
- Live-trading template via
flox new --template=live(#162) - Indicator-library scaffolder (#165)
Indicators & analytics
- Forward-looking targets distinct from indicators (#115)
- ADF stationarity test (#116)
AutoCorrelationindicator (#117)IndicatorGraph(batch) (#118)- Streaming
step()-basedIndicatorGraphfor live trading (#119) - Single source of truth for indicators and DAG (#122)
- HTML backtest report +
equity_curve/tradesaccessors (#161) - Walk-forward + type-erased grid search across bindings (#163)
- Heatmap HTML renderer across all bindings (#164)
- MLflow integration for FLOX backtests (#167)
- White's reality check across all bindings (#169)
- Latency models for backtest realism (#184)
- MVP web replay viewer for tape and run artifacts (#195)
Replay / tape format
- Public specification of the
.floxlogbinary tape format (#180) - Replay-equivalence CI gate (#177)
- Delta-book compression in the tape format (#193)
- Live-tail safety + book-update reads (#120)
- Mid-stream
_fromseek across all bindings (#126) - LZ4 link in the Node binding so compressed segments read on every platform (#127)
TraceSignalHandler/TraceExecutionListeneradapters for.floxrun(#201)flox bundleshipsexpected.floxrunalongsideexpected_output.json(#202)- Runner attaches a
TraceRecorderfor one-call signal auto-capture (#209) - Trace order events and fills through the attached recorder (#210)
OrderGroupauto-dispatches recommended actions through the executor (#211)OrderGroupbasket-level risk gate before submission (#215)- OneSided pair-latency budget on leg-A ack (#216)
- Bar-close dispatch ordering cross-binding parity test (#217)
Errors, typing, docs
- llms.txt and llms-full.txt published for AI agents (#128)
.pyistubs +py.typedfor typed PyPI distribution (#129)index.d.tsfor typed npm distribution (#130)- Structured
FloxErrorwith code + help URL (#138) - Auto-generated Python API index from
.pyi(#139) - Snippet linter + ratchet allowlist (#140)
- Top-20 throw sites migrated to
FloxError(#154) - Cross-binding
FloxErrorsurface in Node (#155) - Snippet coverage ratchet enforcement (#156)
- First-backtest tutorial with real BTC sample (#159)
- Architecture + contributor guide (#152)
- Cross-symbol pairing for two-input indicators (Correlation, AutoCorrelation) (#237)
mcp/README.mdflox-mcp initquickstart (#238)- README hero — polyglot + AI-friendly + same-code backtest-to-live (#240)
- Python + Node package READMEs refreshed (#241)
- pre-commit hook auto-regens
.pyi/llms.txt/ mcp data (#239)
C-API / IDL codegen
- IDL-driven C API codegen — slice prototype (#131)
- Full-coverage spec + enums/aliases + bootstrapper (#132)
emit-codon+emit-llmsemitters (#133)- ABI snapshot CI gate (#135)
RiskManagerpre-trade hook (#136)KillSwitch+OrderValidatorpre-trade hooks (#137)- Logger callback hook for binding-side log redirection (#144)
- Post-emission observer hooks:
PnLTracker,StorageSink(#145) MarketDataRecorderhook (#146)ReplaySourcehook for binding-supplied event streams (#147)Executor+ExecutionListenerhooks (#148)- pybind11 wrappers for extension hooks (#150)
- NAPI wrappers for extension hooks (#151)
- Pointer-variant create exports unblocking pure-Codon strategies (#213)
Connectors / build
- Native connectors merged into flox under
FLOX_BUILD_CONNECTORS(#171) - CMake feature flags:
FLOX_ENABLE_*→FLOX_BUILD_*split + CI flag matrix (#172)
Full changelog: https://github.com/FLOX-Foundation/flox/compare/v0.5.6...v0.6.0
Fixed handling of non‑contiguous arrays in Python raw→double converters.
Full changelog
What's Changed
- fix(python): handle non-contiguous arrays in raw→double converters by @eeiaao in https://github.com/FLOX-Foundation/flox/pull/113
- ci: dedicated Release workflow + fix publish job skip on tag push by @eeiaao in https://github.com/FLOX-Foundation/flox/pull/114
Full Changelog: https://github.com/FLOX-Foundation/flox/compare/v0.5.5...v0.5.6
Minor fixes and improvements.
Changelog
Same scope as a v0.5.4. This is a Python package hot fix release
- Minimum Python version raised to 3.10
- BinaryLogReader.forEach now guarantees monotonic exchange_ts_ns ordering (previous behavior allowed out-of-order trades)
- New statistical indicators: Correlation, Kurtosis, Skewness, ParkinsonVol, RogersSatchellVol, RollingZScore, ShannonEntropy (available in Python, Node, Codon, QuickJS)
- flox-py wheels now bundle LZ4; compressed .floxlog files are read correctly without manual handling
- Fixed‑point helpers exposed to Python: flox_py.PRICE_SCALE and prices_to_double(raw) replace hardcoding 1e8
Full changelog
New statistical indicators: Correlation, Kurtosis, Skewness, ParkinsonVol, RogersSatchellVol, RollingZScore, ShannonEntropy — available in Python, Node, Codon, QuickJS.
BinaryLogReader.forEach now guarantees monotonic exchange_ts_ns ordering. Out-of-order trades from exchange WS batches are no longer a problem. New segments stream at O(1) memory; legacy segments are auto-sorted on read.
flox-py wheels now bundle LZ4. Compressed .floxlog files read correctly out of the box — previously DataReader silently returned 0 trades.
Fixed-point helpers exposed to Python. Use flox_py.PRICE_SCALE / prices_to_double(raw) instead of hardcoding 1e8.
Python ≥ 3.10 required (docs aligned with pyproject.toml).
- Backtest now supports slippage, queue simulation, and advanced metrics
- Language bindings improvements for Node.js, Python, Codon, and QuickJS with updated documentation
Full changelog
What's Changed
- Backtest: slippage, queue simulation, advanced metrics by @eeiaao in https://github.com/FLOX-Foundation/flox/pull/98
- Language bindings improvements: Node.js, Python, Codon, QuickJS + docs by @eeiaao in https://github.com/FLOX-Foundation/flox/pull/103
Full Changelog: https://github.com/FLOX-Foundation/flox/compare/v0.5.2...v0.5.3
- Python bindings via pybind11 with comprehensive strategy classes and utilities
- Codon bindings compiling Python strategies to native code using C FFI
- JavaScript bindings embedded in QuickJS with TypeScript declarations
Full changelog
This release is focused on language bindings & C API
Starting this release FLOX provides 3 ways to write trading strategies: Python, Codon (compiled Python), and JavaScript.
C API is a flat C interface (flox_capi) bridging the C++ engine to all language bindings. Covers strategy lifecycle, order emission, indicators, order books, backtesting, position tracking, profiling, and statistics.
Python bindings (pip install flox-py) - pybind11 module with strategy classes, indicators (batch via numpy + streaming), order books, simulated executor, bar aggregation, position tracking, market/volume/footprint profiles, data replay, and segment operations.
Codon bindings - same strategy API compiled to native code via Codon. Indicators, order books, backtesting, position tracking, and profiling available through C FFI.
JavaScript bindings - embedded QuickJS engine for JS strategies. Ergonomic API with string symbol names, options objects for orders, TypeScript declarations. Includes indicators, order books, backtesting, position tracking, and profiling.
Strategy DX
• String symbol names ("BTCUSDT" instead of numeric IDs) across all bindings
• Keyword arguments / options objects for orders (market_buy(qty=1.0), this.limitBuy({ price: 50000, qty: 0.1 }))
• Callback data enriched with string symbol and side
• Unified indicator classes — .update() for per-tick, .compute() for batch
- L3 order book with individual order tracking, fixed capacity, and snapshot support
- Position aggregator supporting net, per-side, and grouped tracking modes with reconciliation and callbacks
- Technical analysis framework offering vectorized indicators (EMA, RSI, MACD, ATR, Bollinger) and TA-Lib compatible output
Full changelog
This release adds L3 order book, position aggregator, technical analysis framework and Python bindings. Also includes stability improvements and bug fixes in the core engine.
New features
L3 order book with individual order tracking, fixed capacity and snapshot support. Thanks @AsherValentini for the contribution.
Position aggregator with three tracking modes: net (auto open/close/flip), per-side (separate long/short), grouped (per-order with tag-based grouping for OCO/OTO). Includes exchange position reconciliation, atomic snapshots with unrealized PnL, and position change callbacks. Thanks @sirinath for the original idea and requirements.
Technical analysis framework with vectorized indicators (EMA, RSI, MACD, ATR, Bollinger, etc). TA-Lib compatible output, dependency graph for caching. Thanks @sirinath for the original idea and requirements.
Python bindings for most of the framework: backtest engine, order books, bar aggregation, indicators, position tracking, replay.
pip install flox-py, see the Python API reference for details.
- Backtesting infrastructure with interactive mode and mmap-based grid search
- Multi-symbol strategies and cross-exchange coordination components
- Advanced order types including OCO support
Full changelog
FLOX v0.4.0 release announcement
This release focuses on backtesting infrastructure and multi-exchange trading capabilities, bringing FLOX closer to a complete quantitative trading framework.
With v0.4.0, users can now validate strategies against historical data using the new backtesting engine, run strategies across multiple symbols and exchanges simultaneously, and leverage advanced order types including OCO (One-Cancels-Other) for more sophisticated execution logic.
Backtesting Framework
Complete backtesting infrastructure for strategy validation
Interactive backtest mode - step through execution with real-time control
Mmap-based grid search for efficient parameter optimization
Multi-Asset & Cross-Exchange Trading
Multi-symbol strategies support
Cross-exchange coordination components
Exchange ID in binary format for CEX replay
Order Management
Advanced order types with OCO support
Enhanced order tracking and position queries
Improved position management stability
Market Data
Heikin-Ashi bars with nanosecond resolution
Flexible tick aggregators
NLevelOrderBook: type-safe consume, Decimal 10^8 precision, cross-type operations
Infrastructure
Rate limiter for API calls
BinaryLog rotation callback
RELAXED/ADAPTIVE backoff modes for reduced CPU usage
Multi-compiler support (GCC, Clang, MSVC)
- Binary Log Replay System with time/symbol indexing, filtered reads and CRC32 validation
- EventBus overhaul to LMAX Disruptor pattern including multicast ring buffer, consumer gating, `tryPublish` API with timeout
Full changelog
FLOX v0.3.0
This release focuses on market data recording/replay infrastructure and a major EventBus overhaul.
Highlights
Binary Log Replay System
A complete subsystem for recording and replaying tick data in a custom binary format. Features time and symbol indexing, filtered reads, and CRC32 integrity validation. This lays the groundwork for the upcoming backtest engine.
EventBus Disruptor Refactor
The event bus has been rewritten following the LMAX Disruptor pattern: multicast ring buffer with sequence-based coordination, required/optional consumer gating for flexible backpressure, and a new tryPublish API with timeout support. Race conditions fixed, thread safety improved.
Other Changes
- NLevelOrderBook: Anchoring for consistent book state
- Tracy integration: Profiler support for hot path analysis
- BusyBackoff: Adaptive backoff strategy
- Extended timestamps: Improved event timing precision
- SymbolRegistry: Centralized symbol management
- Documentation: Restructured following Diataxis methodology
New Contributors
Welcome @AsherValentini who made their first contribution with SPSCQ capacity validation fix (#45)!
- Generic IWebSocketClient interface
- Asynchronous HTTP ITransport abstraction
- Low‑level OrderTracker for local order state
Full changelog
This release introduces several infrastructure improvements across the core engine and connectors module.
Within the core flox engine, new abstractions were added, including a generic IWebSocketClient interface, an asynchronous HTTP ITransport, and a low-level OrderTracker for maintaining local order state. The IExecutionTracker interface was extended to capture the full order lifecycle, including submission, acknowledgments, fills, cancels, and rejections. The engine also gained support for differentiating instrument types (spot, futures, options), CPU affinity configuration for performance tuning (thanks to @ErakhtinB), and a new logging system based on lightweight macros (FLOX_INFO, FLOX_WARN, etc.) designed for high-performance environments.
An architectural experiment was conducted to replace virtual interfaces with a concept- and trait-based polymorphism model using Ref handles and custom vtables. This work, described in this article (EN) and this article (RU), was ultimately reverted due to worse performance in benchmarks. Modern compilers were able to better optimize virtual dispatch in this context.
In parallel, the first release of the flox-connectors module was published. It includes a production-ready exchange connector for Bybit with WebSocket-based market data handling (order book and trades), as well as a fully integrated order executor that processes execution events via the private WebSocket channel. Both components are wired into the event bus system and support both live trading and data collection scenarios.
- Modular architecture via IEngineBuilder for registering connectors, strategies, and subsystems
- Unified MarketDataBus with synchronous/asynchronous delivery modes using lock‑free SPSCQueue structures
- High‑performance Order Books (FullOrderBook and WindowedOrderBook) with included performance benchmarks
Full changelog
The first version of Flox (v0.1.0) is an initial release of a C++ framework for building trading systems. Key features:
- Modular architecture with clean interfaces and explicit component lifetimes. Connectors, strategies, and auxiliary subsystems can be registered via IEngineBuilder.
- Unified MarketDataBus and dedicated buses for quotes, trades, and candles. Each bus supports synchronous or asynchronous delivery modes. Events propagate through EventBus and lock-free SPSCQueue structures for minimal latency.
- High-performance Order Books: includes a full-depth book (FullOrderBook) and an optimized windowed version (WindowedOrderBook). Performance benchmarks are included in the documentation.
- CandleAggregator: aggregates trade streams into OHLCV candles and publishes them to subscribers.
- Subsystem design and utilities, including KillSwitch, RiskManager, PositionManager, ExecutionTracker, and more.
- Demo application showcases the engine in action using synthetic connectors, a simple strategy, and basic execution components.
- Tests and benchmarks are implemented using GoogleTest and Google Benchmark to verify correctness and performance.
- MIT License
This release lays the foundation for further system development and serves as a starting point for experimentation, customization, and integration of new components.