Moving average crossover (20/200)
The moving-average crossover identifies the trend's turn in time to get into it: buying the upward cross and selling the downward one captures the main move and keeps you off the wrong side of the market. You hold until the opposite cross.
Measured in crypto — Binance spot · 540 pairs, delisted ones included · 0.2% per round trip
- ✓invariance
- ✓costs
- ✓placebo
- ✓benchmark
- ?out of sample
- ✓multiple testing
At its worst the account was worth 24% less than its own best previous moment, and it spent 982 days below that peak.
What was measured
How many of those trades actually count
What it paid, before any deductions
Where it stalled · does it come back in the pieces?
What would have happened to the money
What this result does NOT say
- One market, one universe
- Measured on 484 spot cryptocurrency pairs, delisted ones included. It says nothing about futures, equities or indices, nor about how the same technique behaves in another market.
- One window of time, not every window
- The measured period runs from 2017-08-17 to 2026-07-28. A market moves through regimes, and a technique can work in one and fail in another — the card measures the regimes that fit inside this window, not the ones still to come.
- One cost structure
- The cost charged is 0.10% per leg, in and out. Anyone paying more than that gets a worse result, and anyone paying less gets a better one — the verdict holds for this fee.
- One exit rule
- The trade was closed by: the auditor's fixed horizon (10 bars). The same entry measured with a different exit is a different strategy, and can earn a different verdict — it happens in this archive.
- The number of trades is not the sample size
- There are 4,877 trades, but only 266 independent market episodes: a single move fires the technique across dozens of assets at once, and counting those as separate observations inflates any result. It is the smaller number that governs the arithmetic. With 266 episodes, what the data supports is a range from +1.02% to +3.43% per trade — the published average is the centre of it, not the exact measurement.
- Daily bars
- Measured at the daily close. Nothing here measures what happens inside the day, and an intraday technique is not auditable with this data.
Numbers and reproducibility
The six controls
| control | status | t | threshold | episodes |
|---|---|---|---|---|
| invariance | passed | — | — | — |
| costs | passed | 3.30 | 1.97 | 266 |
| placebo | passed | 3.67 | 1.97 | 266 |
| benchmark | passed | — | — | — |
| out of sample | inconclusive | — | — | — |
| multiple testing | passed | — | — | — |
- invariance4877 signals across 750934 bars
- costsgross +2.225% · cost 0.200% · net +2.025% (t=3.30)
- placeboactual +2.025% · placebo -0.282% · excess +2.307% ± 0.629% (t=3.67 against a threshold of 1.97, 266 real groups, 243,850 sham dates, draw error ±0.050%)
- benchmarktechnique +2.02% · buy and hold (same horizon) +0.17% · excess +1.86%
- out of sampleasset half A: +2.161% (t=2.64, 248 episodes) · asset half B: +1.897% (t=3.00, 252 episodes) · liquid half (>= US$ 2,135,927/day): +2.353% (t=3.44, 262 episodes) · illiquid half: +1.655% (t=1.80, 230 episodes) · period 1/4 (2018-03-23 a 2022-02-06): +1.224% (t=1.11, 105 episodes) · period 2/4 (2022-02-07 a 2023-11-05): -0.033% (t=-0.03, 64 episodes) · period 3/4 (2023-11-06 a 2024-12-08): +5.821% (t=3.22, 41 episodes) · period 4/4 (2024-12-09 a 2026-07-18): +1.043% (t=0.96, 59 episodes)
- multiple testing100 variation(s) tested · t=3.30 across 266 episodes (equivalent to t=3.28) · p≈0.0010 · false positives expected by chance ≈ 0.10
Equity — outside the six controls, and here is why
The t of the trade series is invariant to bet size: 0.5%, 1% and 3% agree to the sixth decimal. Nothing here moves the verdict — it moves what the account would have lived through.
- risking 1.0% per trade
- ×2.07
- worst drawdown from the peak
- −24%
- days below the previous peak
- 982
- signals refused for lack of capital
- 2%
- paths where the account halved (out of 12)
- 0
Reproducibility
- period
- 2017-08-17 to 2026-07-28
- assets that traded
- 484
- variations tested before this one
- 100
- gross per trade
- +2.22%
- net per trade
- +2.02%
- exit rule
- the auditor's fixed horizon (10 bars)
- horizon bars
- 10
- fee per leg
- 0.001
- episode days
- 10
- fast average
- 20
- slow average
- 200
Binance spot klines (delisted pairs included) · collected from 2026-07-27 23:31 to 2026-07-28 14:29 · 540 assets · 750,934 bars · 2017-08-17 to 2026-07-28
Seed not recorded: audits before 2026-07-29 used 20260728 by convention in the code, and the value is not in the record.
Hypothesis, filed before the result
The 'crossover' family contains no combination with a real edge: the ones that look good are the tails of the grid itself. I expect the best `t` in the sweep not to survive the multiple-testing control.
the filing date is not in this audit's record
The original, as it was filed
A família 'cruzamento' não contém uma combinação com vantagem real: as que parecem boas são as caudas da própria grade. Espero que o melhor `t` da varredura não sobreviva ao controle de múltiplos testes.
Pre-registration exists to keep prediction apart from rationalisation: written after the number, every hypothesis is right.
Earlier audits of the same technique
Each variation an author teaches enters as its own test, so that whatever might work in the strategy gets covered. The verdict changed along the way — a fix in the engine changes the number, and that is a fact that has to stay visible. No earlier record was deleted.