Every number on this site comes from the same pipeline. It runs offline, the results are fixed, and each page carries the hash of the inputs that produced it.
A rule that wins on BTC and loses on gold did not find an edge; it found a rising asset. The markets below start at different dates because gold data begins later — each strategy is compared only against buying and holding that same market over that same period.
Over 2018-01-01 → 2026-09-23, buying BTC once and never selling returned 530%. Most of the rules below did worse than that while trading hundreds of times and spending years under water. The column that matters is vs B&H, not the headline return.
| Return | One run over the whole period, from the first bar to the last. |
| vs B&H | How far the strategy finished above or below simply buying on the first day and holding. Negative means the trading was worse than doing nothing. |
| Grid beat | Share of that strategy's parameter settings that beat buy & hold. A single good result with 0% here means the default was lucky, not that the rule works. |
| All markets | How many of the tested markets this strategy beat buy & hold in. This is the column that separates a rule from a lucky asset. |
| Underwater | Longest unbroken stretch spent below the previous equity high, in days. This is what makes people quit, not the depth. |
| Median | The middle result once the start date is shifted forward 30 days at a time. Usually far below the headline. |
| Ruin | Share of runs where the account fell to 10% of its starting capital. On spot without leverage this is rare — the usual failure is capital locked up, not wiped out. |
| Win rate | Share of closed trades in profit. Systems that only close winners report 100% and still lose money. ? means the 95% confidence interval for that win rate spans 50% — at that sample size the figure cannot be told apart from chance. Hover for the interval. |
| Source | Binance public market data mirror (spot, daily candles) |
| BTC/USDT | 3188 bars · 2018-01-01 → 2026-09-23 · 0 gaps |
| ETH/USDT | 3188 bars · 2018-01-01 → 2026-09-23 · 0 gaps |
| Gold (PAXG) | 2214 bars · 2020-09-01 → 2026-09-23 · 0 gaps |
| Gaps | Not interpolated. Filling them would invent prices that never traded. |
| Fees | 0.10% taker on both legs |
| Slippage | 0.05% against the fill, every fill |
| Starting capital | 10,000 USDT |
| Instrument | Long-only spot. No leverage, no shorting. |
| Signal timing | Signals read the close and fill at the next open. Filling on the same close would be reading the future. |
| Intrabar order | When a bar could trigger both a favourable and an unfavourable event, the unfavourable one fills first. |
| Ruin threshold | Account equity at or below 10% of starting capital. |
A single backtest is one sample. The rolling window has to be long enough that what comes out reflects the rules rather than one market phase — so every strategy here is run over 365 daily bars, shifted forward 30 days at a time, giving 95 start dates.
Win rates are reported with a 95% Wilson confidence interval. Where that interval spans 50%, the figure cannot be told apart from chance and the page says so rather than dropping the number.
There is no button to re-run a backtest with your own parameters. That is not a missing feature.
Indicator maths is shared between the chart you see and the backtest that produced the numbers — one implementation, not two. A 188-case test suite pins the conventions (warm-up handling, seeding, population standard deviation) and a golden snapshot fails the build if any output value moves.
Some indicators use a fixed window — only the last n bars matter, and nothing before them can change the value. Others use smoothing, where every earlier bar still carries a decaying weight. The second kind gives a different reading depending on how much history was loaded before it, which matters here because each rolling window is computed inside itself.
| Indicators | Type | Deviation at 30 bars | Entry decision flips |
|---|---|---|---|
| SMA · Bollinger · Stochastic · Donchian | Fixed window | 0.000% | — |
| EMA | Smoothing | 0.024% | — |
| Supertrend (ATR) | Smoothing | 0.099% | 2.43% |
| MACD | Smoothing | 0.327% | — |
| RSI (Wilder) | Smoothing | 0.947% | 0.22% |
| Parabolic SAR | Smoothing | 3.317% | — |
| ADX (Wilder) | Smoothing | 3.578% | — |
Measured on BTC daily at one point for the deviation column, and across all 365-bar rolling windows for the flip column. Blank means not measured.
Each result page carries an input hash over the symbol, period, parameters, assumption set and engine version. Same hash, same numbers.
| Engine | v0.4.0 |
| Built | 2026-09-23T17:18Z |
| Assumption set | a1-taker10-slip05 |