Changelog
July 26, 2026 · View on GitHub
All notable changes to the Open Backtest Format specification are recorded here.
The format itself follows Semantic Versioning, described in spec/9-versioning.md. This changelog tracks changes to the specification document, which may or may not correspond to a format version bump.
[Unreleased]
[0.1.0-draft] — 2026-07-26
Initial draft of the Open Backtest Format specification.
Added
- Envelope specification:
OBTFmagic, uint32 LE version, zstd + MessagePack body. - Top-level data model:
Bundle→Study→Run→Metrics/Summary/MonteCarloTest. @blobreference protocol for extracting large time-series metrics into Parquet payloads.- Reserved
sample_typevocabulary (in_sample,out_sample_time,out_sample_universe,walk_forward,stress,monte_carlo). - Two window primitives:
BacktestDateRange(simple, single contiguous period) andBacktestWindow(train / optional test / warmup / gap / step / fold_index — for walk-forward and k-fold workflows). - Non-normative "Workflow patterns" catalog in
spec/5-universe-windows.mdmapping rolling walk-forward, anchored walk-forward, time-series k-fold, one-off in-sample fit, and one-off with holdout to specificBacktestWindowfield combinations, plus a consumer decision tree for recognising each pattern. - Expanded overlap semantics: three distinct kinds of inter-window overlap (adjacent train, adjacent test, cumulative test-in-train containment) are documented and permitted. Consumer deduplication is a MUST for statistics that require disjoint samples.
- Full
ExecutionConfigshape: pluggableslippage_model/commission_model/fill_model, per-symbolTradingCostoverrides, reserved built-intypenames with per-typeparamsschemas (defaults + units) so any conforming implementation can emit or consume them. - Reader and writer contracts.
- Vendor extension namespace convention (
x-*). - Apache-2.0 license.
- Governance document with a stated path to multi-vendor governance.
Notes
- This is a draft. Field names, envelope layout, and MUST-level requirements MAY change without notice until
1.0.0. - The reference implementation currently lives inside
coding-kitties/investing-algorithm-frameworkand predates this spec. The spec has been derived from that implementation but has been generalised (no framework-specific magic bytes, opaquealgorithm_id, extensibleenginesmap rather than fixedvector/eventslots, etc.). The reference implementation will be aligned with the spec as OBTF stabilises.