Skip to content
Skip to content
← all research
REJECTED

"P2b + P2c activation report — gate60 depth-filter ON, carry/basis overlay ON (7 of 8 coins)"

2026-09-04

·

Date: 2026-09-04 Status: Both layers are now LIVE on the paper trading bots.

#What was enabled

#P2b: depth-filter on gate60

  • P_DEPTH_FILTER_GATE60=1 in the gate60 bot's env.
  • Binance bookDepth feed is READY (z24 distribution matches the backtest exactly: mean -0.015/std 1.08 for ETH).
  • The OKX self-recorder is at 14.9 days, just below the 31-day warmup; until then the live gate fail-opens (no behavior change). Once OKX clears, the live z24>0 skip rule starts firing on real orders.

#P2c: CARRY x BASIS sizing overlay

  • P_CARRY_BASIS_OVERLAY=1 on: gate60 (ETH, CONFIRMED), and all 6 alt sleeves (SOL, XRP, LINK, AVAX, DOGE, ADA — all PASS in OOS, 2 confirmed in forward).
  • P_CARRY_BASIS_OVERLAY=0 on: gate60btc (BTC, INERT in OOS; leaving OFF keeps the bot behavior unchanged and avoids a coin that the validation showed doesn't benefit).

#Code changes

#start_bots.py

  • gate60 env: added P_CARRY_BASIS_OVERLAY=1, kept P_DEPTH_FILTER_GATE60=1. Comment updated to reference the multi-coin study.
  • gate60btc env: added P_CARRY_BASIS_OVERLAY=0 (explicit default; was implicit before). Comment notes that BTC is INERT per the validation.
  • All 6 alt sleeves: added P_CARRY_BASIS_OVERLAY=1 to their env. Comment notes that 2 of 6 are confirmed in forward (SOL, LINK) and 4 are uninformative (INERT, n too small).
  • The P_DEPTH_FILTER_GATE60 env was NOT added to the alt sleeves' env because the depth filter was only validated for ETH; the alts inherit the shared .env which doesn't set the flag, so the filter stays disabled on the alts (correct).

#production/carry_basis_overlay.py

  • Docstring updated to reflect the multi-coin validation result (7 of 8 PASS, BTC INERT) and the forward-OOS confirmation (ETH/SOL/LINK confirmed).
  • No code logic change — the existing resolve_instrument() already correctly dispatches by runner SYMBOL.

#Live verification

#gate60 one-shot smoke test

[2026-09-04] signal=LONG prev=0 target=1 eth_close=2456.376
  sma200=2033.755 eth_roc60=0.365869 btc_roc60=0.244624
  OBSERVE_ONLY
  depth={'enabled': True, 'effective_target': 1, 'source': 'okx',
          'status': 'warming', 'reason': 'okx history 14.9 days < 31 days'}
  cb={'enabled': True, 'multiplier': 1.0,
       'carry_z': -0.0, 'basis_z': 1.18,
       'feature_ts': '2026-09-05 01:00:00', 'status': 'active',
       'reason': 'mixed or sub-threshold ...; mult=1.0',
       'bucket': '1.0x (pass)'}

Both layers are consulted on every cycle. The depth-filter is in warming (OKX cache not yet 31 days, fail-open) and the carry/basis overlay is active with sub-threshold passthrough (most days). The bot's state and ledger both record the verdicts.

#Ledger audit

The most recent gate60 ledger entry shows cb_verdict.enabled=true with real z-scores from the Hyperliquid cache (carry_z=0.0, basis_z=1.18). The previous entries (from the older bot instance without the env update) showed enabled=false — confirming the restart picked up the new env correctly.

#Live bot status

17/20 bots up: gate60 (pid 10032), gate60btc (pid 12864),
                altsol (pid 6776), altxrp (pid 10372),
                altlink (pid 2940), altavax (pid 15484),
                altdoge (pid 8596), altada (pid 17532),
                depthov, depthrec, flagship, etftrend, tsy,
                eqmom, bookalloc, pead, corrtrack

All 17 live bots [OK ]. Three intentional XX: pooled, panel, pead_v2 (missing .env.* files for separate paper accounts).

#What to monitor

  1. OKX depth recorder (depthrec): currently at 14.9 days. Will clear the 31-day warmup around 2026-09-20. The live z24>0 skip rule starts firing after that.
  2. gate60 decision ledger (production/state/ledger.jsonl): watch for the first cb_verdict.bucket in {0.5x (both_hi), 1.25x (both_lo)} entries — these are the active sizing events. The 1.25x entries are the alpha play (longs collect funding when shorts are crowded); the 0.5x entries are the safety play (half size when longs are crowded).
  3. Hyperliquid funding cache freshness: data/parquet/hyperliquid/{COIN}_funding.parquet should be refreshed daily via data.hyperliquid.update_funding_cache(). If the cache goes stale (>48h), the overlay returns status="stale" with mult=1.0 (fail-open, no behavior change).
  4. Per-coin carry/basis bucket distribution: the OOS study predicted ~1.8% of ETH long days at 0.5x, ~4.2% at 1.25x, ~81.9% at 1.0x (no signal), ~12.0% at 1.0x (mixed). Live distribution should roughly match; if the live fire rate drifts substantially (e.g. 0% active), the funding market regime has changed and a re-validation is warranted.

#Operator next steps

  1. No action required for ~2 weeks until the OKX cache clears. The current live state is "both layers wired, both benign (always fail-open to mult=1.0 / no skip)" — the order math is exactly the pre-overlay, pre-depth-filter behavior.

  2. After ~2 weeks when the OKX cache clears, the live skip pattern will start. Compare the live skip-rate to the backtest's 49% (172 of 352 long days skipped). If the live rate is in [40%, 60%], the depth-filter is performing as validated.

  3. Monthly forward-OOS check: python validation/carry_basis_overlay_forward_oos.py --coin ETH (and the other coins once 5Min data accumulates beyond 2026-08-31). Re-confirm the verdicts in fresh forward windows. The proposal is to keep the overlay on indefinitely as long as the monthly CONFIRMED verdict holds.

  4. Do NOT change the equity fractions. The alt sleeves deploy 10% each (60% combined) and the gate60 sleeve deploys 100% on its own paper account. The carry/basis overlay's 1.25x boost applies multiplicatively on top of these base fractions. In the worst case (all 6 alts at 1.25x), the combined deploy is 75% of account equity, still under 100% and only triggered when ALL six alt funding/basis signals are simultaneously stretched SHORT (rare).

#Tests

  • 64/64 tests pass (depth_filter: 23, carry_basis_overlay: 41).
  • 17/20 bots up.
  • All 8 funding caches and 8 5Min daily caches refreshed.

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

← all research