How it was tested

Built to be proven wrong first.

Anyone can produce a chart that goes up. What matters is what was done to prove it wrong. Five checks, run on every change, and what they caught is reported here.

01

No look-ahead

Every strategy is re-run so that at each moment it sees only what was knowable then. A test that peeks at prices that did not exist yet produces a brilliant result worth nothing.

One failed. A finished strategy was quietly using about eight hours of future prices. Corrected, it went from profitable to slightly losing. It was deleted, with every number that came from it.

02

Live code = tested code

A common way to lose money: the strategy is tested in one program, rewritten for live trading, and the two quietly differ.

The tests load the actual live trading file and replay five years through it. It agrees with the tested version on every trade, in all four parts of the system, and the alert software agrees with the engine across thousands of random moments.

03

Held out of sample

Every result is split between the years a strategy was built on and the years it never saw.

Model A’s average trade made 34% of the amount risked in the earlier half and 49% in the recent half. Whether the recent figure holds is the biggest open question, and the reason the live test exists.

04

Minute data, not hourly guesses

A test that only knows each hour’s high and low cannot tell which came first, and tends to assume the good one.

One result looked like a breakthrough. Re-run on minute-by-minute prices, the profit turned into a loss. Every trade is now managed on minute data.

05

Costs first

Fees come out of every trade in every figure on this site, at a rate worse than the exchange charges.

They come out when the position is sized, so a full loss costs the intended amount with fees in it, not that amount plus fees.

What five years can prove

Less precisely than it looks.

The average trade made +0.561R across 295 trades. With that much variation the honest range for the true long-run figure is +0.30R to +0.82R — the real edge could be half what was measured.

+0.56Raverage trade
+0.30Rlow end, 95%
+0.82Rhigh end, 95%
295trades

Was it luck?

The same trades, their order reshuffled 10,000 times. If the result depended on a lucky sequence, most reshuffles would land well below it. They don’t.

+3000%+6000%+9000%+12000%what actually happened
10,000 reshuffles of the same five years, balanced setting. Shaded: the middle 90%.
bad casetypicalgood case typical worst dropbad-case worst drop
Central estimate+730.0%+1,782.0%+4,537.2%-12.3%-17.8%
Pessimistic bound+544.6%+1,727.9%+6,113.0%-15.4%-24.4%

Reshuffling the same trades cannot tell an overfitted rule from a real one — the checks above do that.

What it implies going forward

A new period of each length, with the edge itself allowed to vary across the range above.

Horizonbad casetypicalgood case chance of ending down
1 year (57 trades)+10.4%+71.1%+213.2%2.1%
3 years (171 trades)+102.7%+420.2%+1,745.6%0.1%
5 years (285 trades)+280.1%+1,494.1%+9,020.6%0.1%

A losing year is possible, and likelier the shorter the window. A projection showing no chance of loss is measuring its own assumptions.

Where the profit comes from

A few large winners. Ten trades out of 295 made 50% of the profit; without the best twenty the rest average +0.11R a trade. The median trade is still positive (+0.54R) and 57% of trades win — but you have to still be trading when the large ones arrive, which is what the sizing below protects.

13%best trade
33%best 5
50%best 10
81%best 20

Share of all profit.

Position size

Sized for the drawdown it can survive, not the return.

Step one: take the edge left after removing the ten best trades — Model A +0.27R and Model B +0.33R a trade, against the measured +0.42R and +0.85R. Step two: promise a drawdown limit and take the largest size at which 19 in 20 reshuffled five-year paths stay inside it.

SettingModel A riskModel B risk limitbad case, cautious edgebad case, measured edge
Balanced2.41%1.47%20%20.0%15.8%
Growth3.76%2.30%30%30.0%23.8%

A size picked for its return is picked by hindsight. One picked for the drawdown it survives, on an edge smaller than measured, still holds if the future is worse than the past.

Risk controls

How the money is protected.

Fixed fractional risk

Every trade risks a set, small share of the account. No averaging down, no larger size after a loss.

A stop at the exchange

Placed on the exchange’s own servers the moment a position fills. It works even if our systems are offline — tested twice by unplanned outages.

A daily risk budget

A new signal is refused once the day’s open risk would pass 2.8% of the account: room for two fresh Model A trades, never a third. A trade stops counting once its stop is in profit.

Sized for the losing streak

Model B wins about a third of the time, so long losing runs are normal. Its size comes from the 99th-percentile losing run — 19 in a row — not the average.

Limits

Where this could go wrong.

It is a simulation

Real data and realistic costs, but no simulation charges for a bad fill in a panic or for systems being down at the worst moment. The Live page measures that gap.

Profit arrives in lumps

The October 2025 crash alone made 26% of Model A’s five-year profit. It is built to be positioned when everyone is forced to sell.

295 trades is evidence, not proof

Enough to say an edge probably exists, not enough to promise a return — see the range above.

Markets change

Both models rely on how large traders behave around obvious levels. That has held for five years; nothing guarantees the next five, so the system is monitored rather than left alone.

Capacity is small

At the balanced size the full book stops scaling at an account of roughly $1.5M–$2.0M (the account, not the position: tight stops make each position larger than the account), because its smallest market is thin; without that market, roughly $5.9M–$17.6M; BTC alone, $25.6M–$76.7M. Beyond that, orders would have to be split over time, which costs exactly the precise entries these setups rely on.

The ratios lean on a few days

Without its ten best days the balanced setting’s Calmar falls from 6.5 to 2.5, and its Sortino from 8.0 to 3.5. With only a handful of losing months, one bad new month moves Sortino a lot.