+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 20 days, time exit: a rule with no stop
A candidate from the exit laboratory. A bar closes above the highest high of the prior 20 days: buy the next open, sell at the close of the 10th bar after entry. No stop by design: the laboratory measured 23 exit rules against per-rule random-entry nulls across 920 runs, and every stop-based rule cut the entry's edge before it showed. Trades never overlap; capital sits in equal sleeves, no leverage.
The complete rules
Every field is a parameter: the constant's name in
tools/indicators/bt_time_exit.py sits beside it. The spec a bot
imports: data/algo/donchian-time-20-10.json.
| field | rule | constant |
|---|---|---|
| timeframe | daily bar; decide at close, execute at next open | — |
| entry | bar closes above the highest high of the prior N days | ENTRY_DAYS = 20 |
| repeat signals | first breakout bar only; a run of closes above the channel is one trade | — |
| exit | at the close of the Nth bar after entry | HOLD_BARS = 10 |
| stop loss | none by design: stop rules cut the entry's edge (see the lab) | — |
| trailing | none | — |
| averaging down | none | — |
| position % of equity | 10% — one equal sleeve per symbol, compounds inside its sleeve | sleeve = 1/N |
| max simultaneous positions | up to 10 — one per symbol; while open, that symbol's signals are ignored | N = 10 |
| universe | BTC, ETH, SOL, BNB, XRP, ADA, AVAX, LINK, DOGE, LTC | SYMBOLS |
| window | 2020-09-23 to 2026-08-08: the basket's common listing (AVAX last, 2020-09); before it ten sleeves do not exist | — |
| costs | 0.15% per side: taker 0.1% + slippage 0.05% | FEE_PER_SIDE |
| leverage / short / hedge | none / none / none | — |
Equity
Log scale. Hover the curve. The tooltip carries all three series. Holding the basket without the rule reached +945% at a -85% drawdown; the rule is in the market under a quarter of the time.
Return by year
| year | strategy | basket b&h | BTC b&h |
|---|---|---|---|
| 2020 (09-12) | 33.1% | 77.7% | 182.8% |
| 2021 | 444.5% | 1157.0% | 59.6% |
| 2022 | -16.1% | -74.3% | -64.2% |
| 2023 | 16.5% | 111.0% | 155.9% |
| 2024 | 92.5% | 128.5% | 121.1% |
| 2025 | 17.3% | -40.3% | -6.4% |
| 2026 (01-08) | -7.3% | -36.9% | -25.9% |
A partial year is labelled with its month range. Yearly numbers come from the same daily curve as everything else.
Parameter variants — 10 runs
Same engine, same nulls: channel and hold are swept so tuning has something to stand on. Click a header to sort.
| channel, d | hold, bars | total | CAGR | drawdown | sharpe | trades | null p95 | beats? |
|---|---|---|---|---|---|---|---|---|
| 55 | 10 | 1108% | 52.9% | -19.9% | 1.58 | 268 | 486% | да |
| 20 | 10 | 1382% | 58.3% | -29.9% | 1.51 | 463 | 852% | да |
| 40 | 10 | 717% | 43.0% | -35.2% | 1.32 | 328 | 579% | да |
| 100 | 10 | 476% | 34.7% | -21.2% | 1.28 | 178 | 305% | да |
| 20 | 5 | 475% | 34.7% | -25.6% | 1.24 | 556 | 341% | да |
| 100 | 40 | 1758% | 64.5% | -46.3% | 1.21 | 108 | 1010% | да |
| 10 | 10 | 746% | 43.8% | -37.4% | 1.13 | 691 | 998% | нет |
| 20 | 20 | 957% | 49.4% | -44.9% | 1.11 | 372 | 1205% | нет |
| 40 | 20 | 738% | 43.6% | -48.5% | 1.09 | 267 | 978% | нет |
| 20 | 15 | 736% | 43.6% | -54.4% | 1.05 | 404 | 981% | нет |
Regime gates: all of them hurt
Batch 2 of the top-30: six gates (Hurst, CUSUM, EWMA volatility, choppiness, ATR ratio, SMA200) over this rule. None raised Sharpe and none beat a random mask of its own on-share. Filtering this entry by regime only damages it.
| gate | on | sharpe | Δ sharpe | total | null p95 | beats mask? |
|---|---|---|---|---|---|---|
choppiness<55 | 69% | 1.42 | -0.09 | 1182% | 1.56 | нет |
atr7/atr50>1 | 39% | 1.36 | -0.15 | 775% | 1.42 | нет |
hurst>0.5 (128) | 69% | 1.09 | -0.42 | 358% | 1.51 | нет |
close>sma200 | 39% | 0.65 | -0.86 | 106% | 1.48 | нет |
cusum-тренд>0 (50) | 40% | 0.62 | -0.89 | 99% | 1.42 | нет |
ewma-vol<медианы | 55% | 0.59 | -0.92 | 70% | 1.45 | нет |
The overfitting correction
Deflated Sharpe: an annual Sharpe of 1.51 against an expected noise maximum of 1.13 across 182 tried rules: probability this is not selection, 84%. Holm's correction over the laboratory's family of 92 rules leaves 7 survivors: all seven are donchian-times-time, and no stop-line survived.
Paper account — forward
Opened 2026-08-11: $100,000, ten sleeves, rules and costs from the spec. Last decision 2026-08-12, equity $99,741, 0 closed trades, 1 open positions. The account only moves forward: a missed day lands in the gap log, never re-traded after the fact. Missed days: 2; each one carries its reason in the account.
Per sleeve
| symbol | total | trades | win% | drawdown |
|---|---|---|---|---|
| DOGE | 8058% | 34 | 61.8 | -54% |
| XRP | 1863% | 37 | 48.6 | -61% |
| SOL | 1313% | 49 | 63.3 | -82% |
| BNB | 1160% | 49 | 57.1 | -40% |
| AVAX | 882% | 43 | 48.8 | -75% |
| ADA | 289% | 42 | 52.4 | -70% |
| ETH | 161% | 55 | 56.4 | -61% |
| BTC | 108% | 56 | 53.6 | -58% |
| LINK | 10% | 51 | 43.1 | -65% |
| LTC | -20% | 47 | 44.7 | -77% |
A research note, not investment advice. The window is a rising market; it contains no bear market of comparable length. Checks: 130 mechanical inside the engine, 11 cross-checks over the artifact, 9 trades re-derived by hand against the store. Back to the lab →