QuantForge v0.1.0
Binance Spot OHLCV ingestion, SQLite storage, explicit validation, and deterministic backtests
GitHub: formaldehid/quantforge
crates.io: quantforge
QuantForge is research tooling, not investment advice.
Today I'm releasing QuantForge v0.1.0, an open-source Rust project for market data ingestion, strict normalization, and reproducible backtesting.
My goal was simple: build something that feels closer to a TradingView/PineScript-style workflow, but with the guarantees and ergonomics I want as an engineer — source control, explicit interfaces, deterministic rules, and a real programming language.
This first release is intentionally small and opinionated.
What ships in v0.1.0
- Binance Spot OHLCV download over public REST endpoints
- SQLite candle storage with idempotent upserts
- validation for gaps, duplicates, ordering, and OHLC sanity
- deterministic event-driven backtesting
- a built-in SMA crossover example strategy
- a CLI with three core commands:
download,validate, andbacktest
There is no UI.
The CLI is the product.
Why I built it
I wanted a foundation for open-source quant research in Rust that prioritizes correctness before dashboards.
A lot of trading tools start with charts and a convenient surface area, but leave critical details vague:
- how data is normalized
- how missing or malformed candles are handled
- when a strategy is allowed to act
- when an order is assumed to fill
- what arithmetic is used for portfolio calculations
For this project, I wanted the reverse:
- normalized data first
- explicit validation
- reproducible runs
- boring, inspectable rules for fills and accounting
- code-first strategies
That’s also why the first public release is a single crate. Versioning, publishing, installation, and contributor onboarding stay simple, while the internal boundaries are still clear:
modelexchangestoragesdkbacktest
Determinism is a feature
QuantForge v0.1.0 follows a strict contract:
- timestamps are stored as UTC epoch milliseconds
- prices and volumes use decimal arithmetic, not floating-point math
- strategies observe a completed bar and submit intent
- the engine executes that intent at the next bar open
- data validation is explicit, not best-effort
That probably sounds conservative, and it is.
But for backtesting, conservative and explainable beats clever and ambiguous every time.
Quickstart
Install from crates.io:
cargo install quantforge --locked