Candidate 18: Peer Breadth β€” full receipts

The most promising of the 31 candidates my overnight AI research loop registered from 465 recorded crypto expressions (ideate β†’ test β†’ independent QC β†’ register, all night). Rule: when the share of the other 19 coins that are up over 5 days crosses 70% (needs at least 16 eligible peers with complete 5-day windows at both endpoints), buy the coins that are themselves up over 5 days and closed up today; mirror for shorts. 20 Binance USDT-margined perps, daily bars, next-open entry, 2.5Γ—ATR(14) stop (floor 0.5%, signal skipped if the stop would exceed 20%), 3R target, 14-day time stop. Entries are placed one minute after the daily close (00:01 UTC), stops and targets are worked on minute bars, one open position per coin. Unlevered, $100K research account, up to 0.25% of equity risked per signal (a batch of same-day signals shares a 1.5% cap pro-rata). Everything below is the frozen, independently reconciled research run β€” nothing summarized away.
Thread claim: 20 bp round trip plus actual funding, Jan 2025 β†’ Aug 2026, unlevered β€” 468 trades, 54% win rate, 2.14 profit factor, +16.7% on the account, -2.8% max drawdown. This page is the backup: every trade, what costs do to it, the year-by-year and per-coin split, whether nearby settings agree, non-overlapping time blocks, and the overfitting checks a quant would ask for. Drawdowns are peak-to-trough on minute-marked equity unless a column says daily-close.

πŸ“¦ Full reproduction package

Run it yourself in three commands: 01 downloads the daily bars + funding straight from Binance's public archive (no key), 02 is a readable pandas re-implementation of the rule and account, 03 compares your run to the frozen research ledgers. Plus reference/ (every signal, trade, equity mark, metrics JSON, QC reconciliation) and research_engine/ (the exact minute-bar engine and signal code that produced this page).

⬇ download full package.zip
Statistical significance & overfitting
Risk-adjusted & exposure (daily marks, annualized Γ—βˆš365)
1 Β· Trade list477 rows
Fresh account started Jan 1 2025 with $100K, 20 bp round trip + actual 8-hour funding, minute-bar fills. 9 rows are open positions marked at the Aug 31 cutoff ("cutoff"), excluded from win rate / PF. Risk = dollars to the stop at entry, including the 20 bp cost reserve; the 1.5% aggregate cap (checked at admission) scales a busy day's batch down pro-rata.
⬇ Download full CSV
Filter All Winners Losers Longs Shorts Stopped Target hit Time exit 2026 only
2 Β· Distribution & statistical significance
Is the edge real, and is it carried by a couple of huge trades? Net $ per trade below, plus a t-test against zero, the win-rate interval, concentration, streaks and the long/short split.
Net $ per natural exit, binned. Per-trade skew is positive (3R targets vs 1R stops); the biggest single win is 2.5% of gross profit.
t-stat vs 0
5.75
p = 2e-08, n = 468
Win-rate 95% CI
49.9–59.1%
binomial
Top-10 trades
14.7%
of gross profit (28% of net $)
Streaks
25 W / 22 L
max consecutive, by exit order
Long vs short
SidenWin%PFAvg/trNet $
Long28150.5%1.89+$27+$7,555
Short18760.4%2.48+$47+$8,833
All46854.5%2.14+$35+$16,388
Delete the best trades
Since Jan 2025Net $on $100K
all trades+$16,388+16.39%
best 1 deleted+$15,614+15.61%
best 5 deleted+$13,552+13.55%
best 10 deleted+$11,848+11.85%
best 25 deleted+$7,538+7.54%
best 50 deleted+$1,325+1.33%
3 Β· Costs & funding
The same frozen signals replayed under three round-trip cost assumptions (fee + 1 bp adverse slippage per side), always plus the actual archived 8-hour funding paid or received while holding. Binance USDT-perp prints are the price proxy; a different venue's spread is your job to add.
Cost assumptionWin%PF2025 β†’2026 YTDLast 90dMax DD
12 bp round trip (5 bp fee + 1 bp slip / side)54.5%2.18+17.27%+10.75%+4.05%-2.83%
20 bp round trip (deployed assumption)54.5%2.14+16.74%+10.48%+3.93%-2.83%
30 bp round trip (stress)54.1%2.09+16.08%+10.14%+3.78%-2.84%
Funding: $83 paid over 20 months on $921 of fees β€” negligible, because positions are small and the rule is symmetric long/short. Median hold is the full 14 days (318 of 468 natural exits are the scheduled time exit).
4 Β· Year-by-year (2020 β†’ Aug 2026, one continuous account)
Same rules the whole time, unlevered, $100K start. Return is the calendar-year change in marked equity; drawdown is the worst peak-to-trough inside the year on minute marks, with the running peak carried in from the prior year.
5 Β· Sizing, exposure & the underwater curve
This is the part that decides whether the numbers above mean anything to you. Each signal wants 0.25% of open-time equity to the stop (the "full size" case: with a median stop distance of 14% that is a position of ~1.8% of the account, $1,769 on day one including the 20 bp cost reserve). Same-day signals share a 1.5%-of-equity cap pro-rata at admission, so the median reserved risk was $104 and the median filled position $777 (0.73% of entry equity); gross notional is capped at 2Γ—. In practice the account never used more than 22% gross exposure. The returns are small because the sizing is small; the drawdowns are small for the same reason.
cumulative % return, 2020 β†’underwater: continuous-2020 account, daily-close drawdown vs running peak
Time in market 94%: it almost always holds something, long or short, so it carries crypto beta in both directions even though the net book is small. Of 1313 raw signals since 2025, 687 were skipped because the coin was already held, 149 were too small to place after scaling, and 439 were filled at a scaled-down size, because breadth signals cluster on the same days β€” 20 coins firing together is one bet, not twenty. Scaling the risk fraction up is the obvious next test; the drawdown scales with it.
6 Β· Parameter neighborhood
The loop tested five settings of this family. The 70% daily threshold is the one on this page; 65% and 75% are its neighbors on the same data. The two 4-hour expressions the loop tried lost money since 2025 (both are slightly positive in the last 90 days); no other timeframes were tested.
SettingnWin%PF2025 β†’2026 YTDLast 90dMax DD
daily bars, 0.6546557.8%2.11+16.86%+7.78%+3.35%-2.08%
daily bars, 0.70 (this page)46854.5%2.14+16.74%+10.48%+3.93%-2.83%
daily bars, 0.7548354.7%2.29+17.47%+11.57%+4.23%-2.22%
4h bars, 0.65175834.4%0.86-11.59%-0.41%+0.57%-18.25%
4h bars, 0.70182235.7%0.97-1.78%+2.96%+0.73%-10.62%
7 Β· Per coin
Net $ by coin. n / win / PF are from the fresh-2025 ledger; the three $ columns are the register's window reads. Nothing here is a BTC trade in disguise.
CoinnWin%PF2025 β†’2026 YTDLast 90d
ZEC1765%5.64+$1,937+$871+$240
BTC3060%3.40+$1,748+$990+$481
ETH2854%2.78+$1,601+$616+$608
XRP2642%2.65+$1,212+$458+$147
BCH2157%5.38+$1,169+$701+$280
AAVE2060%3.21+$1,141+$769+$558
UNI2162%3.06+$1,060+$501+$525
1000PEPE1669%3.33+$928+$594+$206
LINK2658%2.88+$884+$457+$52
SUI2357%2.43+$864+$756+$90
LTC2748%1.84+$725+$899+$262
AVAX2255%2.39+$684+$454+$13
FIL2548%1.75+$645+$500-$192
DOGE2646%1.48+$590+$432+$192
ADA2654%1.59+$528+$670+$2
SOL2850%1.43+$515+$844+$489
BNB2955%1.44+$449+$492+$393
WLD1233%1.62+$395+$140+$1
TRX2264%0.97-$63+$304+$106
NEAR2357%0.64-$276-$378-$42
8 Β· Non-overlapping time blocks
The rule was not fit per period. The thresholds were chosen in the 2025 β†’ 2026 screen, so the 2020 β†’ 2024 blocks are the closest thing to out-of-sample this backtest has: the same fixed rule applied to years it was never tuned on. Read them as "did the mechanism exist before I looked," not as forward evidence β€” there is none yet.
BlocknWin%PFNet $ReturnMax DD
2020-202115350.3%1.53+$5,894+5.74%-3.06%
2022-202351552.8%1.51+$10,307+9.90%-4.64%
202425844.6%1.47+$5,988+4.95%-2.92%
2025-Aug 202647753.9%2.06+$18,905+16.03%-2.83%
9 Β· Reproduction: the package vs the research run
What you get when you run the scripts in the download on a laptop (Binance public daily bars, no key, ~3 minutes), compared like for like with the two research accounts.
Account Β· windowResearch nreturnPFminute DDPackage nreturnPFdaily-close DD
Fresh $100K, Jan 2025 Β· 2025 β†’ Aug 2026468+16.74%2.14-2.83%467+17.24%2.20-2.33%
Fresh $100K, Jan 2025 Β· 2026 YTD225+10.48%2.67-2.40%224+10.90%2.82-1.84%
Fresh $100K, Jan 2025 Β· Last 90 days80+3.93%3.45-1.89%80+3.93%3.44-1.65%
Continuous, Jan 2020 Β· 2020 β†’ Aug 20261403+41.52%1.66-4.64%1382+38.71%1.63-4.39%
Continuous, Jan 2020 Β· 2025 β†’ Aug 2026477+16.03%2.06-2.83%476+16.64%2.12-2.33%
Continuous, Jan 2020 Β· 2026 YTD225+10.34%2.65-2.40%224+10.88%2.81-1.84%
1,313 of 1,313 signals reproduced by date, coin and side; 1,310 stop distances agree to 1e-6 (three BCH bars differ by one tick between Binance's daily and minute-built closes). The package follows the engine's order of operations, one-slot-per-coin admission, pro-rata batch sizing, cost reserve and minimum order; it differs only in fill resolution (daily high/low with stop-first, daily-close marks). Like for like, the fresh account lands at +17.2% vs +16.7% and the continuous account at +38.7% vs +41.5%.
What isn't in this backtest (read before you trust it)

Deflated Sharpe depends on what you count as a trial. Against the 25 of 31 library candidates that expose a comparable Sharpe (Οƒ 0.51), the hurdle is 1.02 and the deflated probability 0.87; within this expression's own 5-setting family it is 0.74 (fresh) / 0.44 (2020 β†’). Counting all 465 recorded expressions with the Sharpe spread the search actually produced (Οƒ 2.27 from 285 run files, including junk screens and history replays) the hurdle is 6.9 and the probability ~0. None of these is a pass/fail criterion; the calculation and its inputs are in the package (04_quant_checks.py, quant_checks.json). PBO (probability of backtest overfitting) needs every trial's return series and is queued. Forward data is the only real fix.

Survivorship in the peer set. The 20 coins are the liquid Binance USDT perps selected in August 2026, applied to every window including 2025 β†’. Coins that died or were delisted are not in the set, and breadth is computed only over peers that exist. Historical membership was not reconstructed and the size or direction of the bias was not measured.

Price proxy and fills. Binance USDT-margined perpetual minute bars, 20 bp round trip, actual archived funding. Entries are market fills at the open of the minute after the signal (00:01 UTC); stops and targets are levels checked on minute OHLC, a target requires strict penetration; scheduled exits are exactly 20,160 minutes later; equity is marked every minute. ATR(14) is the 14-bar simple mean of true range. Your venue's spread, lot rounding and funding schedule differ.

The package's daily re-implementation is an approximation. 02_peer_breadth_backtest.py reproduces the signal set from daily bars (1,313 of 1,313 keys; 1,310 stop distances match to 1e-6, three BCH bars differ by a tick between Binance's daily and minute-built closes) and follows the engine's order of operations, admission, sizing and cost rules, but fills stops and targets on daily high/low and marks equity on daily closes. Β§9 shows the agreement. research_engine/ holds the exact frozen engine, runner and signal code for auditing; it is not a turnkey minute-level reproduction β€” that needs the minute arrays (~2 GB via prepare_data.py) and a driver that is not included.

Exposure. 94% time in market, max 22% gross. The return is a low-vol return. Levering it 10Γ— is not a multiplication β€” costs, funding on notional and the cap interactions all have to be re-simulated.

No forward evidence yet. Rules are frozen as of Sept 7 2026; passive paper tracking starts from here. Everything on this page is retrospective research.