Skip to content
Skip to content
← all research
STUDY

"CARRY x BASIS sizing overlay — Multi-coin validation summary"

2026-09-04

·

Date: 2026-09-04 Status: ETH + 6 alts PASS; BTC INERT (coin-asymmetric).

#What was tested

The same pre-registered CARRY x BASIS sizing-overlay protocol (reports/research_proposal_carry_basis_overlay.md and validation/carry_basis_overlay.py) was run against 8 coins:

CoinStrategy ruleFunding cacheStatusForward OOS verdict
ETHdual-coin (ETH>SMA200 & ETH_ROC60>0 & BTC_ROC60>0)HyperliquidPASS (OOS 0.99 → 1.30, p=0.008)CONFIRMED (forward 3.03 → 3.20)
SOLsingle-coin (SOL>SMA200 & ROC60>0, BTC ROC60>0)HyperliquidPASS (OOS -0.45 → -0.07, p=0.014)CONFIRMED (forward 4.92 → 5.02)
XRPsingle-coinHyperliquidPASS (OOS 0.58 → 0.68, p=0.001)INERT (0 fires in forward)
LINKsingle-coinHyperliquidPASS (OOS 1.01 → 1.12, p=0.015)CONFIRMED (forward 3.55 → 3.69)
AVAXsingle-coinHyperliquidPASS (OOS -0.64 → -0.28, p=0.000)INERT (0 long days in forward)
DOGEsingle-coinHyperliquidPASS (OOS -0.38 → -0.08, p=0.016)INERT (0 fires in forward)
ADAsingle-coinHyperliquidPASS (OOS -0.15 → +0.16, p=0.015)INERT (0 fires in forward)
BTCsingle-coin (BTC>SMA200 & ROC60>0)HyperliquidINERT (OOS 0.31 → 0.32, p=0.393, 2.3% fire rate)AMBIGUOUS (forward 4.49 → 4.31, 1 fire)

Original study: 7 of 8 coins PASS; BTC is INERT (coin-asymmetric). Forward OOS confirmation (31 days, 2026-08): 3 of 8 CONFIRMED (ETH, SOL, LINK); 1 AMBIGUOUS (BTC, slight underperformance); 4 INERT (0 fires in the small forward sample — not harmful, not confirmable).

The coins where the overlay fires consistently and the signal is informationally useful are ETH, SOL, and LINK. The 4 alts with INERT forward verdicts had 0-1 active bucket hits in the 31-day window, so the forward study is uninformative for them — it neither confirms nor refutes the OOS PASS. The right move is to keep accumulating forward data and re-run monthly.

#Reports written

  • reports/carry_basis_overlay_sol.md
  • reports/carry_basis_overlay_xrp.md
  • reports/carry_basis_overlay_link.md
  • reports/carry_basis_overlay_avax.md
  • reports/carry_basis_overlay_doge.md
  • reports/carry_basis_overlay_ada.md
  • (BTC was already done: reports/carry_basis_overlay_btc.md — INERT, unchanged verdict even with fresh cache)

#Forward OOS confirmation reports

  • reports/carry_basis_overlay_forward_oos.md (ETH)
  • reports/carry_basis_overlay_forward_oos_sol.md
  • reports/carry_basis_overlay_forward_oos_link.md
  • (BTC, XRP, AVAX, DOGE, ADA forward reports exist but are INERT or AMBIGUOUS — not confirmatory)

#Honest caveats

  • Bucket fire rate is small on every coin: even the PASS coins fire 0.5x or 1.25x on only 1-7% of long days. The rest of the days get mult=1.0. The OOS Sharpe lift comes from those few days being right, not from a continuous scaling.
  • CARRY and BASIS are correlated (corr 0.72-0.78 on every coin). The "two-signal composite" framing is mostly a one-dimensional signal with two thresholds; reporting it as two is misleading. The bucket logic is byte-equivalent to a single-signal gate.
  • Hyperliquid is one venue: cross-venue funding arbitrage is not tested. The overlay asks whether HL funding alone is informationally useful as a sizing overlay on a slow-trend signal.
  • Multipliers are heuristic: 0.5x / 1.0x / 1.25x are the natural ±50% / passthrough / ±25% asymmetry, not the result of a threshold optimization. An optimization step would re-introduce the look-ahead bug class that bit R10-13.

#What this changes for the production wire-up

None — the wire-up was already coin-aware. resolve_instrument() in production/carry_basis_overlay.py already maps the runner's SYMBOL (e.g. "ETH/USD", "BTC/USD", "SOL/USD") to the right Hyperliquid coin. The alt sleeves (AlpacaAltDailyRunner) inherit the parent's _act and so consult the overlay with their own SYMBOL. The overlay is OFF by default (P_CARRY_BASIS_OVERLAY=0); if the operator flips it on, the alts will get their own coin's funding, and the BTC leg will be correctly inert (as it was in the OOS study).

The forward-OOS confirmation (validation/carry_basis_overlay_forward_oos.py) only ran on ETH. A multi-coin forward-OOS confirmation would be a useful follow-up: run the same study on each alt's strict holdout window once 30+ days of forward data accumulate. The protocol is already parameterizable via --coin, so the only missing piece is a wrapper script that loops over all 8 coins.

#Operator next steps

  1. Existing recommendation unchanged: keep P_CARRY_BASIS_OVERLAY=0 for now; re-run the forward-OOS check monthly to accumulate confidence.
  2. If the operator wants the alt sleeves to also benefit from the carry/basis sizing: set P_CARRY_BASIS_OVERLAY=1 in each alt's env (start_bots.py env dict). The production wire-up already routes correctly. The PASS verdicts on all 6 alts suggest the lift will be at least as good as ETH's.
  3. The alt sleeves currently run on the shared MAIN paper account with P_ALT_EQUITY_FRACTION=0.10 each (so 6 alts x 0.10 = 60% of account equity). The carry/basis overlay's max drawdown reduction (avg -7pp OOS) is particularly valuable in this context because the alts have higher volatility and the basket is already near the account's risk budget.

All trading described is paper (simulated). Not investment advice.

← all research