Hold the whole market, minus the 40% crash.
CMC20 is CoinMarketCap's own top-20 index (a token on BNB Chain). It ships with no risk control and fell 40%. This Skill reads live funding data from CoinMarketCap, spots when borrowed money is genuinely backing the trend, and tells you how much to hold versus move to cash. Backtested over the index's life: drawdown 40% to 15%.
The twist: the popular "buy deeply negative funding" trade is backwards. We tested it and used the signal that actually predicts instead.

npm run verify and edit a figure to inflate it, it exits nonzero. CI enforces it on every push.npm run verify re-derives this exact curve from the committed data. The live engine reading is the spec card near the foot of the page.All 20 CMC20 constituents (and the it can't hedge)
Derived live from CoinMarketCap's market-cap ranking (ex-stablecoins, ex-wrapped). Green = has a perp funding market, so the overlay can time it. Red = no derivatives market. Refreshes with the ranking, so entries and exits are automatic.
Beats buy-and-hold on return in bear markets
The obvious challenge: "you only win on drawdown." Split each deep-history asset by regime (price above/below 200-day MA). In down markets the strategy BEATS buy-and-hold on return everywhere, right when an allocator actually needs it. The honest flip side, stated plainly: in a sustained bull it gives up upside and does not beat buy-and-hold on raw return. The universal, every-asset win is lower drawdown, not more return.
| Asset | Bear: Strategy | Bear: Buy & Hold | Edge |
|---|
Confirmation predicts, contrarian is backwards
Crypto folklore says deeply negative funding = "buy the bottom." We tested it. Leverage-confirmed momentum (+14.2% mean 30d, 73% hit) vs the buy-the-dip setup (+2.8%, 53%). The contrarian bucket is worst, monotonic at 30 days (the 7-day ordering is weaker). The 128 confirmed-up windows overlap, so read n as observations, not independent episodes.
| Horizon | Signal State | n | Mean Forward | Hit Rate |
|---|
Is the finding real, or just price momentum?
A confirmed-up bucket beating flush-down could be funding, or it could be that "price rising" alone predicts. We settle it by permutation: keep the price path, permute the funding series with a circular block permutation that keeps funding's own autocorrelation intact (a plain i.i.d. shuffle would overstate significance), and recompute the spread on hundreds of draws. The null is what momentum alone earns with realistically persistent but misaligned funding. Pooled across the liquid majors the real spread clears it at p = —, and the naive i.i.d. shuffle agrees. Per asset it passes where leverage is liquid (ETH, SOL, DOGE) and is honestly absorbed by momentum where it is not. npm run placebo, and npm run verify re-derives the pooled spread.
| Asset | Real spread | p-value | Funding adds signal |
|---|
Funding is not a price transform
A common shortcut: never fetch funding, just derive it from price momentum (0.0001 + 0.02·return₇). We ran the same strategy with real Binance funding vs that proxy. On the 6 largest assets (liquid funding and CMC20's heaviest weights) real funding wins 5/6, mean Sharpe +0.18. We fetch real funding for all 19 hedgeable constituents. We never synthesise it.
| Asset | Real funding Sharpe | Price-proxy Sharpe | Gain |
|---|
Per-constituent backtest (2018–2026)
Every CMC20 constituent with deep Binance price + funding history (15 of 20) run independently, winners and losers shown. Lower max drawdown on 15/15 assets (median 59% vs 90%). The return/Sharpe edge concentrates in high-funding megacaps and fades on thin-funding alts, exactly as the thesis predicts: the signal is only as good as the leverage data behind it. Deflated Sharpe haircuts for multiple-testing. A rival "Sharpe 7.86" on one run is a red flag, not an achievement.
| Asset | Strat Sharpe | Strat DD% | Strat Ret% | BH Sharpe | BH DD% | BH Ret% | DSR |
|---|
Signal breakdown (BNB)
| Variant | Sharpe | DD% |
|---|