+First time on the top traders desk?
The desk runs its own numbers and publishes its calls next to the account that trades them. The short route:
Donchian 55d × time 10 — a bull-phase algorithm
From an open library of 800+ free rules the desk picked a top-31 under pre-registered criteria and crossed them with each other: 7 entries × 14 exits, then 7 regime gates and 3 sizing models on top. 436 trials in this series; every pair runs against its OWN random-entry null by the same engine, finalists against 200 seeds.
The winner is a 55-day channel breakout sold 10 bars later. The best phase goes into the headline per the desk's rule: 88% of the log return accrues in bull phases; in bears it sits near zero without losing. Window 2020-09-23 — 2026-08-08 — the calendar starts at the basket's latest listing (AVAX, 2020-09-22).
The rules in full
Every number carries its constant's name in the engine: a report field equals a tuning parameter. The family's reference spec is data/algo/donchian-time-20-10.json; this variant differs by one parameter — ENTRY_DAYS 55 instead of 20. Promoting it to candidates requires its own spec and the full check battery.
| field | rule verbatim | constant in code |
|---|---|---|
| timeframe | 1d | bt_time_exit.py (daily engine) |
| entry | bar closes above the highest high of the prior 55 days; first breakout bar only — a run of closes above the channel is one trade | exit_lab.donchian_entries / ENTRY_DAYS=55 |
| entry fill | signal at close → buy at the next bar's open | bt_time_exit.run_symbol |
| gate | choppiness(14) < 55 — optional: +0.01 sharpe; 1.58 without it | exit_gate_lab.gates |
| exit | sell at the close of the 10th bar after entry; NO stop by design — the exit laboratory showed stop rules cut the entry's edge | bt_time_exit.HOLD_BARS=10 |
| trailing | none | — |
| averaging-in | none | — |
| % of deposit per position | 10% — a 1/10 sleeve per symbol, compounding inside the sleeve, no capital transfer between sleeves | sleeve_fraction=0.1 |
| simultaneous positions | up to 10 — one per symbol; signals are ignored while one is open | run_symbol (sequential pass) |
| universe | 10 Binance perp majors; survivorship: on the point-in-time top-30 sharpe is 1.0 instead of 1.59 — the bracket is measured, see baskets | bt_time_exit.SYMBOLS |
| window and reason | 2020-09-23 — 2026-08-08 — a common calendar exists only from the basket's latest listing (AVAX) | load_frames (common window) |
| costs | 0.15% per side, both sides | bt_structure_desk.FEE_PER_SIDE |
| leverage / short / hedge | 1.0 / none / none | spec invariants |
Returns by year
Yearly figures come from the same daily curve as everything else; partial years are labeled with month ranges. Alongside — the published 20×10 variant and benchmarks.
| year | donchian 55×10 | donchian 20×10 (published) | buy-hold basket | BTC |
|---|---|---|---|---|
| 2020 (09-12) | +14.1% | +33.1% | +77.7% | +182.8% |
| 2021 | +391.1% | +444.5% | +1157.0% | +59.6% |
| 2022 | -8.0% | -16.1% | -74.3% | -64.2% |
| 2023 | +55.7% | +16.5% | +111.0% | +155.9% |
| 2024 | +67.4% | +92.5% | +128.5% | +121.1% |
| 2025 | -6.8% | +17.3% | -40.3% | -6.4% |
| 2026 (01-08) | -4.3% | -7.3% | -36.9% | -25.9% |
Stage A: 98 entry × exit pairs
48 of 98 beat their null's p95. The whole top is Donchian entries: stop-and-reverse flips arrive half a trend late as entries, and turn-of-month does not exist in crypto. Click a header to sort.
| entry | exit | sharpe | PF | total | drawdown | trades | null p95 | beats p95 |
|---|---|---|---|---|---|---|---|---|
| donchian 55d | time 10 | 1.58 | 3.04 | +1108% | -19.9% | 268 | +360% | yes |
| donchian 20d | time 10 | 1.51 | 2.41 | +1382% | -29.9% | 463 | +211% | yes |
| donchian 55d | channel exit 10d | 1.36 | 3.82 | +1219% | -32.9% | 197 | +439% | yes |
| donchian 20d | channel exit 10d | 1.31 | 3.17 | +1376% | -30.5% | 340 | +453% | yes |
| donchian 100d | time 20 | 1.30 | 3.52 | +707% | -25.0% | 150 | +443% | yes |
| donchian 100d | time 10 | 1.28 | 3.39 | +476% | -21.2% | 178 | +223% | yes |
| donchian 55d | chandelier 22/3 | 1.26 | 2.50 | +673% | -31.1% | 235 | +219% | yes |
| donchian 55d | fib trail 0.618 | 1.22 | 2.75 | +580% | -19.1% | 259 | +205% | yes |
| donchian 20d | fib trail 0.618 | 1.21 | 2.23 | +714% | -34.1% | 453 | +358% | yes |
| donchian 55d | time 20 | 1.21 | 2.79 | +902% | -39.7% | 223 | +344% | yes |
| donchian 55d | gann hilo 3 | 1.21 | 2.72 | +432% | -22.2% | 315 | +68% | yes |
| donchian 100d | time 40 | 1.21 | 6.55 | +1758% | -46.3% | 108 | +705% | yes |
| donchian 55d | halftrend 2 | 1.19 | 2.24 | +238% | -12.5% | 367 | +30% | yes |
| donchian 20d | quantile 20/q10 | 1.16 | 3.14 | +1231% | -52.9% | 294 | +559% | yes |
| donchian 20d | gann hilo 3 | 1.14 | 2.10 | +510% | -30.0% | 551 | +88% | yes |
| donchian 55d | supertrend 10/3 | 1.13 | 3.02 | +900% | -43.1% | 184 | +306% | yes |
| donchian 20d | time 20 | 1.11 | 2.34 | +957% | -44.9% | 372 | +377% | yes |
| donchian 20d | supertrend 10/3 | 1.10 | 2.91 | +1095% | -49.5% | 296 | +243% | yes |
| donchian 55d | quantile 20/q10 | 1.10 | 3.59 | +735% | -44.9% | 172 | +380% | yes |
| donchian 100d | chandelier 22/3 | 1.10 | 2.67 | +310% | -17.1% | 158 | +127% | yes |
| перелом месяца | quantile 20/q10 | 1.09 | 2.77 | +1189% | -69.6% | 591 | +603% | yes |
| donchian 55d | safezone 2.5 | 1.08 | 2.14 | +314% | -16.9% | 288 | +98% | yes |
| donchian 100d | supertrend 10/3 | 1.07 | 3.66 | +540% | -28.3% | 117 | +496% | yes |
| donchian 20d | chandelier 22/3 | 1.05 | 2.16 | +498% | -34.0% | 376 | +160% | yes |
| donchian 20d | safezone 2.5 | 1.04 | 1.86 | +353% | -24.7% | 477 | +128% | yes |
| donchian 100d | halftrend 2 | 1.04 | 2.39 | +166% | -14.8% | 248 | +29% | yes |
| donchian 100d | fib trail 0.618 | 1.04 | 2.81 | +296% | -17.3% | 173 | +208% | yes |
| supertrend-флип 10/3 | supertrend 10/3 | 1.04 | 2.64 | +846% | -64.2% | 240 | +251% | yes |
| donchian 100d | gann hilo 3 | 1.03 | 2.78 | +250% | -16.6% | 212 | +47% | yes |
| перелом месяца | fib trail 0.618 | 1.03 | 2.28 | +394% | -35.0% | 709 | +163% | yes |
| перелом месяца | channel exit 10d | 1.03 | 2.73 | +894% | -51.7% | 644 | +798% | yes |
| donchian 20d | halftrend 2 | 1.01 | 1.68 | +210% | -24.1% | 648 | +29% | yes |
| перелом месяца | chandelier 22/3 | 1.01 | 2.19 | +452% | -56.1% | 686 | +258% | yes |
| supertrend-флип 10/3 | quantile 20/q10 | 1.00 | 2.18 | +778% | -56.9% | 236 | +291% | yes |
| donchian 20d | time 40 | 0.98 | 3.40 | +1071% | -67.3% | 272 | +884% | yes |
| gann-флип 5 | fib trail 0.618 | 0.98 | 1.61 | +579% | -57.2% | 1145 | +234% | yes |
| supertrend-флип 10/3 | channel exit 10d | 0.95 | 2.56 | +493% | -43.9% | 239 | +274% | yes |
| donchian 20d | fvg trail | 0.92 | 2.38 | +531% | -57.3% | 451 | +165% | yes |
| donchian 55d | fvg trail | 0.91 | 3.13 | +467% | -59.9% | 259 | +160% | yes |
| supertrend-флип 10/3 | fib trail 0.618 | 0.82 | 2.25 | +144% | -26.7% | 240 | +95% | yes |
| donchian 100d | fvg trail | 0.76 | 3.57 | +331% | -61.9% | 177 | +243% | yes |
| перелом месяца | fvg trail | 0.74 | 2.07 | +442% | -80.3% | 614 | +330% | yes |
| перелом месяца | safezone 2.5 | 0.64 | 1.65 | +180% | -58.4% | 705 | +146% | yes |
| перелом месяца | gann hilo 3 | 0.64 | 1.81 | +93% | -29.2% | 710 | +69% | yes |
| перелом месяца | halftrend 2 | 0.58 | 1.64 | +55% | -22.7% | 710 | +27% | yes |
| donchian 100d | chande kroll 10/1/9 | 0.56 | 1.27 | +30% | -12.9% | 284 | +3% | yes |
| donchian 55d | chande kroll 10/1/9 | 0.53 | 1.18 | +32% | -10.0% | 419 | -2% | yes |
| donchian 20d | chande kroll 10/1/9 | 0.35 | 1.03 | +22% | -15.6% | 713 | -9% | yes |
| donchian 100d | channel exit 10d | 1.19 | 4.13 | +542% | -32.6% | 127 | +628% | no |
| donchian 100d | quantile 20/q10 | 1.03 | 3.94 | +464% | -43.7% | 110 | +632% | no |
| donchian 55d | time 40 | 0.97 | 3.18 | +670% | -60.6% | 173 | +924% | no |
| gann-флип 5 | quantile 20/q10 | 0.85 | 2.13 | +574% | -73.8% | 730 | +944% | no |
| donchian 100d | safezone 2.5 | 0.84 | 2.12 | +150% | -14.2% | 191 | +150% | no |
| gann-флип 5 | time 40 | 0.79 | 2.02 | +459% | -72.5% | 408 | +552% | no |
| gann-флип 5 | channel exit 10d | 0.77 | 2.07 | +393% | -71.0% | 838 | +753% | no |
| supertrend-флип 10/3 | fvg trail | 0.70 | 1.60 | +90% | -26.8% | 237 | +115% | no |
| сжатие→пробой 20 | fib trail 0.618 | 0.69 | 2.03 | +90% | -27.7% | 267 | +183% | no |
| перелом месяца | time 40 | 0.69 | 2.08 | +290% | -90.5% | 360 | +1210% | no |
| gann-флип 5 | fvg trail | 0.67 | 1.66 | +303% | -69.9% | 861 | +330% | no |
| сжатие→пробой 20 | safezone 2.5 | 0.67 | 1.73 | +67% | -22.2% | 261 | +145% | no |
| supertrend-флип 10/3 | time 10 | 0.62 | 1.71 | +74% | -21.7% | 240 | +121% | no |
| сжатие→пробой 20 | time 10 | 0.62 | 1.69 | +77% | -25.9% | 259 | +166% | no |
| сжатие→пробой 20 | channel exit 10d | 0.60 | 2.12 | +103% | -32.5% | 228 | +359% | no |
| сжатие→пробой 20 | fvg trail | 0.58 | 1.75 | +62% | -29.0% | 264 | +138% | no |
| перелом месяца | time 20 | 0.56 | 1.67 | +129% | -92.9% | 710 | +582% | no |
| перелом месяца | supertrend 10/3 | 0.56 | 2.27 | +147% | -73.2% | 464 | +306% | no |
| supertrend-флип 10/3 | safezone 2.5 | 0.55 | 1.48 | +53% | -19.5% | 240 | +72% | no |
| gann-флип 5 | chandelier 22/3 | 0.52 | 1.58 | +103% | -60.5% | 1007 | +321% | no |
| сжатие→пробой 20 | quantile 20/q10 | 0.52 | 2.02 | +91% | -54.3% | 208 | +430% | no |
| supertrend-флип 10/3 | time 40 | 0.50 | 1.89 | +106% | -70.3% | 215 | +433% | no |
| сжатие→пробой 20 | gann hilo 3 | 0.49 | 1.51 | +35% | -17.4% | 292 | +61% | no |
| сжатие→пробой 20 | time 20 | 0.48 | 1.69 | +68% | -37.3% | 227 | +269% | no |
| перелом месяца | time 10 | 0.48 | 1.50 | +95% | -82.8% | 710 | +460% | no |
| supertrend-флип 10/3 | time 20 | 0.46 | 1.59 | +69% | -40.0% | 237 | +244% | no |
| gann-флип 5 | safezone 2.5 | 0.45 | 1.37 | +81% | -68.2% | 966 | +194% | no |
| сжатие→пробой 20 | supertrend 10/3 | 0.45 | 2.02 | +69% | -44.4% | 197 | +191% | no |
| сжатие→пробой 20 | halftrend 2 | 0.43 | 1.33 | +21% | -11.5% | 316 | +25% | no |
| donchian 20d | trailing 5 atr | 0.40 | 1.17 | +58% | -67.2% | 281 | +60% | no |
| gann-флип 5 | time 20 | 0.40 | 1.53 | +50% | -87.2% | 662 | +511% | no |
| gann-флип 5 | gann hilo 3 | 0.38 | 1.13 | +52% | -54.3% | 1184 | +79% | no |
| supertrend-флип 10/3 | chandelier 22/3 | 0.35 | 1.40 | +38% | -34.2% | 240 | +155% | no |
| сжатие→пробой 20 | chandelier 22/3 | 0.35 | 1.57 | +34% | -36.1% | 228 | +160% | no |
| gann-флип 5 | supertrend 10/3 | 0.33 | 1.86 | +8% | -84.7% | 521 | +233% | no |
| перелом месяца | trailing 5 atr | 0.31 | 1.39 | +5% | -83.5% | 269 | +166% | no |
| supertrend-флип 10/3 | gann hilo 3 | 0.30 | 1.35 | +17% | -17.6% | 240 | +26% | no |
| donchian 100d | trailing 5 atr | 0.29 | 1.23 | +27% | -41.0% | 128 | +150% | no |
| donchian 55d | trailing 5 atr | 0.25 | 1.13 | +18% | -49.7% | 193 | +156% | no |
| сжатие→пробой 20 | time 40 | 0.21 | 1.61 | +7% | -62.3% | 192 | +406% | no |
| gann-флип 5 | trailing 5 atr | 0.19 | 1.28 | -34% | -89.4% | 248 | +115% | no |
| gann-флип 5 | time 10 | 0.07 | 1.12 | -32% | -86.3% | 943 | +512% | no |
| gann-флип 5 | halftrend 2 | 0.06 | 1.08 | -4% | -43.9% | 1184 | +30% | no |
| сжатие→пробой 20 | chande kroll 10/1/9 | -0.05 | 0.97 | -3% | -12.1% | 319 | -0% | no |
| перелом месяца | chande kroll 10/1/9 | -0.08 | 0.93 | -7% | -28.5% | 710 | -2% | no |
| supertrend-флип 10/3 | halftrend 2 | -0.11 | 0.97 | -6% | -16.3% | 240 | +20% | no |
| supertrend-флип 10/3 | trailing 5 atr | -0.13 | 0.90 | -36% | -61.2% | 205 | +64% | no |
| сжатие→пробой 20 | trailing 5 atr | -0.27 | 0.79 | -41% | -61.7% | 181 | +44% | no |
| gann-флип 5 | chande kroll 10/1/9 | -0.37 | 0.82 | -24% | -29.6% | 1183 | -18% | no |
| supertrend-флип 10/3 | chande kroll 10/1/9 | -0.42 | 0.79 | -10% | -15.9% | 240 | -2% | no |
Stage B: regime gates
71 of 84 gate rows hurt sharpe or failed to beat a block-random mask of the same density. Two families survive — volatility expansion (atr7/atr50) on fast entries and volume confirmation on slow ones. Hurst, CUSUM, SMA200, EWMA-vol hurt everywhere.
| pair | gate | sharpe w/o | sharpe with | Δ | drawdown |
|---|---|---|---|---|---|
| donchian 20d × channel exit 10d | atr7/atr50>1 | 1.31 | 1.42 | +0.11 | -32.6% |
| donchian 100d × time 40 | volume>1.5×med20 (effort) | 1.21 | 1.31 | +0.10 | -35.4% |
| donchian 55d × time 20 | volume>1.5×med20 (effort) | 1.21 | 1.28 | +0.07 | -34.2% |
| donchian 55d × channel exit 10d | volume>1.5×med20 (effort) | 1.36 | 1.42 | +0.06 | -23.7% |
| donchian 20d × fib trail 0.618 | atr7/atr50>1 | 1.21 | 1.26 | +0.05 | -27.0% |
| donchian 100d × time 40 | choppiness<55 | 1.21 | 1.25 | +0.04 | -42.4% |
| donchian 100d × time 20 | choppiness<55 | 1.30 | 1.33 | +0.03 | -22.3% |
| donchian 55d × chandelier 22/3 | atr7/atr50>1 | 1.26 | 1.29 | +0.03 | -32.8% |
| donchian 55d × channel exit 10d | choppiness<55 | 1.36 | 1.38 | +0.02 | -33.2% |
| donchian 55d × time 20 | atr7/atr50>1 | 1.21 | 1.23 | +0.02 | -39.9% |
| donchian 55d × time 10 | choppiness<55 | 1.58 | 1.59 | +0.01 | -21.2% |
| donchian 55d × channel exit 10d | atr7/atr50>1 | 1.36 | 1.37 | +0.01 | -34.9% |
| donchian 55d × fib trail 0.618 | choppiness<55 | 1.22 | 1.23 | +0.01 | -18.1% |
Stage C: sizing model
Vol-target 50% annual halves the drawdown at the same sharpe — paid for with part of the total: smaller positions compound slower. The loss brake disables entries AFTER a drawdown and misses the recovery — worse than equal sizing almost everywhere.
| pair | sizing | sharpe | total | drawdown | calmar |
|---|---|---|---|---|---|
| donchian 55d × time 10 [choppiness<55] | equal | 1.59 | +1099% | -21.2% | 2.48 |
| donchian 55d × time 10 [choppiness<55] | vol-target 50% | 1.57 | +215% | -10.7% | 2.03 |
| donchian 55d × time 10 [choppiness<55] | loss brake −15% | 1.55 | +853% | -21.8% | 2.14 |
| donchian 20d × time 10 | equal | 1.51 | +1382% | -29.9% | 1.95 |
| donchian 20d × time 10 | vol-target 50% | 1.45 | +332% | -18.9% | 1.50 |
| donchian 20d × time 10 | loss brake −15% | 1.33 | +468% | -24.8% | 1.38 |
| donchian 55d × channel exit 10d [volume>1.5×med20 (effort)] | equal | 1.42 | +1416% | -23.7% | 2.48 |
| donchian 55d × channel exit 10d [volume>1.5×med20 (effort)] | vol-target 50% | 1.37 | +401% | -14.8% | 2.14 |
| donchian 55d × channel exit 10d [volume>1.5×med20 (effort)] | loss brake −15% | 1.36 | +1121% | -22.1% | 2.40 |
| donchian 20d × channel exit 10d [atr7/atr50>1] | equal | 1.42 | +1584% | -32.6% | 1.89 |
| donchian 20d × channel exit 10d [atr7/atr50>1] | vol-target 50% | 1.32 | +456% | -20.1% | 1.69 |
| donchian 20d × channel exit 10d [atr7/atr50>1] | loss brake −15% | 0.94 | +247% | -30.9% | 0.76 |
| donchian 100d × time 20 [choppiness<55] | equal | 1.33 | +741% | -22.3% | 1.96 |
| donchian 100d × time 20 [choppiness<55] | vol-target 50% | 1.09 | +145% | -14.3% | 1.16 |
| donchian 100d × time 20 [choppiness<55] | loss brake −15% | 1.35 | +602% | -18.4% | 2.14 |
| donchian 100d × time 40 [volume>1.5×med20 (effort)] | equal | 1.31 | +963% | -35.4% | 1.40 |
| donchian 100d × time 40 [volume>1.5×med20 (effort)] | vol-target 50% | 1.21 | +223% | -19.9% | 1.11 |
| donchian 100d × time 40 [volume>1.5×med20 (effort)] | loss brake −15% | 1.33 | +825% | -33.8% | 1.36 |
Finalists — 200-seed nulls
| pair | sizing | sharpe | PF | total | drawdown | trades | null-200 p95 | 1st half | 2nd half |
|---|---|---|---|---|---|---|---|---|---|
| donchian 55d × time 10 [choppiness<55] | equal | 1.59 | 3.17 | +1099% | -21.2% | 244 | +180% | +440% | +122% |
| donchian 20d × time 10 | equal | 1.51 | 2.41 | +1382% | -29.9% | 463 | +322% | +460% | +165% |
| donchian 55d × channel exit 10d [volume>1.5×med20 (effort)] | equal | 1.42 | 5.06 | +1416% | -23.7% | 152 | +232% | +357% | +232% |
| donchian 20d × channel exit 10d [atr7/atr50>1] | equal | 1.42 | 3.72 | +1584% | -32.6% | 216 | +563% | +476% | +192% |
| donchian 100d × time 20 [choppiness<55] | loss brake −15% | 1.35 | 7.39 | +602% | -18.4% | 49 | +175% | +288% | +81% |
Which parameters to turn
Neighbouring values of every parameter, computed by the same engine. It reads directly: entry channel — a 55–70 day plateau (70 keeps sharpe and drawdown); holding — shorter is better, monotonically; channel-exit window 25 is the greed knob (+2200–2400% at −64…−70% drawdown); cut drawdown with vol-target, not the loss brake.
donchian 55d × time 10 [choppiness<55] — equal (sharpe 1.59)
| parameter neighbour | sharpe | total | drawdown | PF | trades |
|---|---|---|---|---|---|
| вход: donchian 70d | 1.62 | +1035% | -21.2% | 3.41 | 198 |
| выход: time 5 | 1.59 | +628% | -17.6% | 2.65 | 293 |
| вход: donchian 30d | 1.46 | +1017% | -29.6% | 2.71 | 338 |
| вход: donchian 20d | 1.42 | +1182% | -38.3% | 2.49 | 415 |
| выход: time 15 | 1.32 | +1049% | -31.8% | 2.59 | 227 |
| вход: donchian 40d | 1.31 | +723% | -34.9% | 2.59 | 299 |
| вход: donchian 10d | 1.29 | +988% | -41.8% | 2.04 | 553 |
| вход: donchian 100d | 1.28 | +487% | -21.1% | 3.39 | 165 |
| выход: time 20 | 1.19 | +839% | -37.8% | 2.77 | 210 |
| выход: time 30 | 1.05 | +912% | -54.1% | 4.03 | 177 |
| выход: time 40 | 1.01 | +703% | -59.9% | 3.31 | 164 |
| выход: time 60 | 0.80 | +425% | -60.9% | 3.21 | 150 |
donchian 20d × time 10 — equal (sharpe 1.51)
| parameter neighbour | sharpe | total | drawdown | PF | trades |
|---|---|---|---|---|---|
| вход: donchian 70d | 1.61 | +1016% | -21.7% | 3.36 | 216 |
| вход: donchian 55d | 1.58 | +1108% | -19.9% | 3.04 | 268 |
| вход: donchian 30d | 1.50 | +1020% | -26.6% | 2.67 | 370 |
| вход: donchian 40d | 1.32 | +717% | -35.2% | 2.53 | 328 |
| вход: donchian 100d | 1.28 | +476% | -21.2% | 3.39 | 178 |
| выход: time 5 | 1.24 | +475% | -25.6% | 1.83 | 556 |
| вход: donchian 10d | 1.13 | +746% | -37.4% | 1.81 | 691 |
| выход: time 20 | 1.11 | +957% | -44.9% | 2.34 | 372 |
| выход: time 15 | 1.05 | +736% | -54.4% | 2.08 | 404 |
| выход: time 30 | 0.99 | +657% | -58.2% | 2.56 | 316 |
| выход: time 40 | 0.98 | +1071% | -67.3% | 3.40 | 272 |
| выход: time 60 | 0.80 | +485% | -77.5% | 2.75 | 225 |
donchian 55d × channel exit 10d [volume>1.5×med20 (effort)] — equal (sharpe 1.42)
| parameter neighbour | sharpe | total | drawdown | PF | trades |
|---|---|---|---|---|---|
| вход: donchian 30d | 1.31 | +1105% | -31.9% | 4.51 | 200 |
| вход: donchian 40d | 1.30 | +1194% | -34.7% | 4.33 | 182 |
| вход: donchian 20d | 1.27 | +1054% | -31.8% | 4.10 | 229 |
| выход: channel окно 15 | 1.26 | +1069% | -35.5% | 5.20 | 138 |
| вход: donchian 70d | 1.22 | +641% | -33.9% | 4.89 | 122 |
| выход: channel окно 25 | 1.17 | +2227% | -63.8% | 12.21 | 118 |
| выход: channel окно 5 | 1.16 | +339% | -17.3% | 2.90 | 186 |
| вход: donchian 10d | 1.16 | +843% | -37.4% | 3.67 | 282 |
| вход: donchian 100d | 1.09 | +415% | -29.9% | 4.74 | 102 |
donchian 20d × channel exit 10d [atr7/atr50>1] — equal (sharpe 1.42)
| parameter neighbour | sharpe | total | drawdown | PF | trades |
|---|---|---|---|---|---|
| вход: donchian 30d | 1.41 | +1419% | -30.1% | 4.18 | 200 |
| вход: donchian 40d | 1.37 | +1320% | -31.9% | 3.97 | 196 |
| вход: donchian 55d | 1.37 | +1240% | -34.9% | 4.14 | 176 |
| вход: donchian 10d | 1.36 | +1491% | -43.6% | 3.36 | 247 |
| вход: donchian 70d | 1.32 | +929% | -31.5% | 4.41 | 145 |
| выход: channel окно 5 | 1.26 | +700% | -25.7% | 2.43 | 271 |
| вход: donchian 100d | 1.21 | +554% | -31.4% | 4.52 | 118 |
| выход: channel окно 15 | 1.18 | +1013% | -45.7% | 3.70 | 194 |
| выход: channel окно 25 | 1.14 | +2427% | -69.5% | 8.92 | 161 |
donchian 100d × time 20 [choppiness<55] — loss brake −15% (sharpe 1.35)
| parameter neighbour | sharpe | total | drawdown | PF | trades |
|---|---|---|---|---|---|
| выход: time 5 | 1.46 | +347% | -12.5% | 7.31 | 74 |
| вход: donchian 70d | 1.43 | +659% | -18.9% | 7.81 | 48 |
| выход: time 10 | 1.26 | +417% | -21.2% | 6.50 | 68 |
| выход: time 30 | 1.26 | +992% | -27.3% | 12.02 | 43 |
| вход: donchian 20d | 1.21 | +572% | -39.8% | 8.24 | 57 |
| выход: time 15 | 1.18 | +340% | -23.8% | 6.87 | 47 |
| вход: donchian 30d | 1.12 | +474% | -32.9% | 7.52 | 55 |
| вход: donchian 55d | 1.12 | +418% | -34.2% | 8.12 | 47 |
| вход: donchian 40d | 1.10 | +405% | -33.4% | 7.27 | 50 |
| выход: time 40 | 1.05 | +753% | -41.6% | 14.83 | 42 |
| выход: time 60 | 0.84 | +425% | -50.0% | 10.98 | 30 |
| вход: donchian 10d | 0.81 | +237% | -43.2% | 5.40 | 50 |
Cycle phases — spot since 2018, two bears in the window
Phases are labeled by formula: BTC versus its SMA200 and the SMA's 20-day slope, warmed up on history before the window. The algorithm is phase-bound: returns accrue in bulls; in bears it sits near zero with a small drawdown — trade it with a phase gate, capital in cash out of phase.
| phase | days | total | annualised | sharpe | drawdown | phase null p95 |
|---|---|---|---|---|---|---|
| bull | 1422 | +1089.5% | +88.8% | 2.02 | -21.4% | +359.4% |
| bear | 996 | -0.1% | -0.0% | 0.05 | -19.9% | +20.7% |
| accumulation | 603 | +24.0% | +13.9% | 0.91 | -13.4% | +17.6% |
Baskets: the price of survivorship, measured
The same pair over four baskets. The point-in-time top-30 by turnover (delisted names included) gives sharpe 1.0 instead of the surviving ten's 1.59 — and still beats both nulls. Surviving majors inflated the magnitude five-fold; the 1.0–1.59 bracket is the honest range of expectations.
| basket | total | sharpe | drawdown | beats window p95 | beats phase p95 |
|---|---|---|---|---|---|
| majors-10 | +1099% | 1.59 | -21.2% | yes | yes |
| top-30 turnover p-i-t | +181% | 1.00 | -23.7% | yes | yes |
| mid-caps 11-30 | +140% | 0.82 | -25.0% | yes | yes |
| spot early since 2018 | +1374% | 1.41 | -21.4% | yes | yes |
What these numbers do NOT say
The leader's universe is ten survivors. The floor is measured (sharpe 1.0 on the honest basket), but promotion requires its own spec, the engine's full check battery and a timing audit.
The choppiness gate is cosmetic. +0.01 sharpe does not justify one more parameter; the gateless variant is equal.
DSR 82% is a probability, not a guarantee. The expected maximum of pure noise at 456 trials is sharpe 1.24; the leader sits above it, but a fifth of the overfit probability remains.
How it was measured
The engine is an honest portfolio: one position per symbol, 1/10 sleeves, entry at the next bar's open, daily mark-to-market, stop lines never fill better than the open. Verified against the published strategy's independent engine on six metrics exactly. Nulls are random entries by the same engine; gates run against a block-random mask; phases against their own phase's null.