Skip to main content
quant-ring, the backtester that rejected both strategies
Own product · Trading / research

Two strategies tested, both rejected, real money never staked

One NautilusTrader engine runs the same code in backtest and live, the judge scores only data the strategy has never seen, and the verdict gets published even when the answer is no.

24Tests on the judge itself

Covering the OOS judge, evaluate.py

0Strategies cleared the bar
2Cost levels priced in

0.3% and 0.4% round trip

1 dayIdea → working judge

Built with Claude Code in 1 day

Honest Backtester: Bitcoin hourly, trend strategy, net-of-cost result
01 / Honest Backtester

Pick a coin, get the number after fees

Choose the market, the strategy and the cost level, and the tool shows the out-of-sample result with the kill criteria that decided the verdict. The browser runs its own calculation and matches the Python backtest to the digit.

-34.66%net out-of-sample, trend on BTC
  1. 1The net number after fees is -34.66% out-of-sample
  2. 2The verdict right on the screen says rejected out-of-sample
Terminal session: the OOS judge walking through six windows and rejecting the trend strategy
02 / The OOS judge

Six windows decide, not one lucky stretch

evaluate.py splits the history, walks forward through six windows and prints net result, Sharpe and drawdown for each one. A single green window saves nothing, because the kill criteria read the whole sequence, and 24 tests guard the judge itself.

24tests guarding the judge
docs/results verdict table: both strategies rejected across all four cost runs
03 / Published verdict

Every run published, including the ones that failed

Four runs, two strategies and two cost levels. Each row carries the out-of-sample trade count, net result, Sharpe and drawdown next to a rejected verdict. A negative result ships in the docs and never gets quietly retried with new parameters.

0strategies cleared the bar
More screens
Before

A curve that looked perfect on the tuning data hid the fact that there was no edge.

After

Six walk-forward windows, real fees and one verdict, rejected and published in full.

Under the hood

01Context

A backtest that cheats is worse than no backtest

Crypto strategy projects usually ship the exciting part first, a strategy that backtests beautifully, then loses money live because the backtest never survived look-ahead, real fees or an out-of-sample test. quant-ring proves the discipline before trusting any strategy: one NautilusTrader engine runs the identical code in backtest and live, so there is no separate live version to drift out of sync with what got tested, and evaluate.py judges only on data a strategy has never seen.

02How it works

Walk-forward, net of cost, two fighters judged

evaluate.py enforces an out-of-sample split, walk-forward validation across six windows, net-of-cost Sharpe, drawdown and an overfit detector, all covered by 24 tests. Two fighters went through it on two years of Binance BTCUSDT hourly data spanning a full cycle, a trend signal on an MA cross and a mean-reversion signal on a z-score, each judged at two cost levels, a 0.3% round trip and a stressed 0.4%. The public face is the Honest Backtester, a web tool where the browser runs its own calculation and matches the Python backtest to the digit.

03Outcome

Both fighters rejected, and that counts as a win

Both fighters failed all four runs: the trend strategy lost 67.8% to 75.5% net of cost, mean reversion lost 52.4% to 66.7% and the published table lists every row rejected. No strategy has passed the out-of-sample bar yet, so nothing here trades real money. A negative result counts as money saved rather than money lost live. This is an internal research project, not investment advice. The next step is one new hypothesis under the same discipline, not a pile of parameter variations on the same data.

ANM SOLUTIONS / CONTACT US

Want something like this?

First 30-minute call is free. We scope it, you decide.

More cases