Fluxy · Fund · Backtesting
A backtest you could defend in front of an allocator
Most backtesters are built to make results look good. Ours is built to make them true: point-in-time data joins that make look-ahead impossible, funding charged on each venue's real settlement clock, delisted coins that stay in history, and out-of-sample discipline built into the run itself. The flattering number you lose is the blow-up you skip.
Market realism
The lies most backtests tell — closed off one by one
No look-ahead, by construction
Point-in-time joins
Every auxiliary series is aligned onto the bar clock with a backward as-of join — a bar at time t can only ever see values stamped at or before t. There is no code path that lets a strategy read the future, and stale feeds come back as no-data instead of being forward-filled forever.
Funding on the settlement clock
Perp carry, charged for real
Funding is accrued at each venue's actual settlement timestamps on live mark notional — a Binance 8h feed and an hourly-funding venue are each charged on their own clock, automatically, for any held perp. Carry and basis strategies test the way they trade.
Delistings stay in the record
No survivorship bias
History keeps the coins that died. A held asset that leaves a venue mid-window is force-closed at its last tradable price and surfaced in the report — not silently erased the way a survivors-only universe erases every loser.
In-sample / out-of-sample
Overfitting, measured
Declare the split and every report shows IS and OOS metrics side by side. The gap between them is your overfitting tax — measured, not guessed.
Volatility targeting built in
Size by risk, not by coins
Set a vol target and a leverage cap in strategy config; the engine sizes positions bar-by-bar from trailing realized volatility with the same point-in-time discipline as every other signal.
Metrics that do not flatter
Allocator-proof arithmetic
Annualization from calendar time (not bar counts), textbook downside deviation for Sortino, and a data-quality report attached to every run so thin coverage is disclosed before anyone has to ask.
Scale
Sweep thousands of variants before lunch
Parameter sweeps run your own strategy file across the whole grid with Parquet-cached data — the market data loads once and every variant reuses it. Each run is the exact same engine a single backtest uses, so sweep results are directly comparable to any one run. Write strategies in Python against a real engine API, start from working templates, or let the AI editor draft one grounded in your actual datasets — every generated strategy is validated by a real backtest before you see it.
Go deeper
The engineering, written up
Walk-forward analysis
Tune on one window, judge on the next — how IS/OOS discipline separates a strategy from a coincidence. Read the guide →
Funding carry, first class
Why ignoring perp funding fakes every carry backtest, and how settlement-clock accrual fixes it. Read the write-up →
Survivorship bias
The delisted coins your backtest forgot, and what force-closing them changes. Read the analysis →