Files
PythagorasGoal/docs/diary/2026-06-22-funding-carry-hl.md
T
Adriano Dal Pastro 61180637eb research(funding-carry): FC01 cross-sectional su HL -> fragile, NON regge + infra IB paper
Onda "nuova ricerca mirata". Unico meccanismo non coperto dalle 2 ondate: carry da
funding (cashflow perp, delta-neutral). Scan dati: price-clock gia' FAIL (intraday),
Deribit ccxt 0 righe, Cerbero solo candele -> fonte = API pubblica Hyperliquid.

- fetch_hl_funding.py: 19 major, funding orario reale dal 2023-05, certificato
  (0 gap, cov 98-100%, ann +1.0% APT .. +21.6% NEAR). backoff anti-429.
- funding_carry_hl.py: book dollar-neutral short-alto-funding/long-basso, causale come
  XS01, vol-target 20%, fee 0.05%/lato. Giudizio: marginal_vs_tp01 indurito + overlap XS01.

VERDETTO: il premio esiste (carry >> anti) ma il book NON regge il gauntlet.
  FULL -0.12, HOLD -0.50, DILUTES vs TP01, in-sample edge <0.5, no multicut.
  Jackknife universo: FULL oscilla [-0.39,+0.30] togliendo UN asset -> FRAGILE/overfit.
  (preview a 17 asset era +0.62 ADDS: fortuna, mancavano NEAR/AAVE). corr XS01 -0.19
  (ortogonale, non re-skin). Meccanismo: carry-vs-momentum, gli alto-funding pompano.
  -> NON entra in portafoglio, fetcher NON in cron. Diario completo.

Infra IB (thread parallelo): gateway paper gnzsnz/ib-gateway (127.0.0.1:4002, READ_ONLY)
in docker-compose + ib_probe.py. Esito dati basis CME micro: backtest NON fattibile
(ContFuture back-adjusted, scaduti=1 barra). IB ok per esecuzione/forward, non ricerca.
.env.ibgw gitignored (credenziali paper), template in .env.ibgw.example.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 20:56:18 +00:00

6.0 KiB
Raw Blame History

2026-06-22 — Funding-CARRY cross-sectional su Hyperliquid (FC01): LEAD fragile, NON regge

Contesto

Onda "nuova ricerca mirata" (l'utente ha chiesto di cercare un angolo non coperto dalle due grandi ondate — sweep 104-ipotesi e ortho relative-value, entrambe esaurite sul prezzo BTC/ETH). L'unico meccanismo con una fonte di ritorno diversa non ancora testato su dati certi è il carry da funding: incassare il cashflow dei perp stando delta-neutral.

Scan di fattibilità dati (prima di tutto, lezione v2.0.0)

  • Funding price-clock (drift attorno agli stamp 00/08/16) sul feed Deribit certificato → già testato nell'onda intraday (agent_03_funding_clock_15m) = FAIL ("il funding è un cashflow perp-vs-spot; il prezzo index non ha drift tradabile attorno allo stamp al netto del trend").
  • Funding carry su Deribit (dove eseguiamo) → ccxt fetch_funding_rate_history = 0 righe (bloccato), Cerbero MCP espone solo get_historical (candele), endpoint funding = 404.
  • Funding carry su Hyperliquid → API pubblica /info {"type":"fundingHistory"} = disponibile, oraria, tokenless, serie native dal 2023-05. HL è già l'universo certificato di XS01.

Dato scaricato e certificato

scripts/research/fetch_hl_funding.py (backoff anti-429) → 19 major (gli stessi di XS01), data/raw/hlfund_<sym>_1h.parquet. Certificazione: cadenza ~1h, 0 gap, copertura 98-100%, funding annualizzato per asset da APT +1.0% a NEAR +21.6% (mediana ~+11.7%). Pochi cap_hit (ore con |funding|>0.06%/h) su INJ/TIA/SEI, plausibili in alt ad alta vol. Dato pulito.

Ipotesi e costruzione (FC01)

Book dollar-neutral che SHORTA i k perp ad alto funding e COMPRA i k a basso → incassa il premio (chi è long paga il funding). Ritorno perp per un long = price_ret funding. Causale come XS01: ogni H=10 giorni, segnale = media causale del funding giornaliero realizzato sugli ultimi L giorni (shift 1), rank cross-section, vol-target 20%, fee 0.05%/lato sul turnover. scripts/research/funding_carry_hl.py. Domanda chiave: edge reale e ORTOGONALE a XS01, o XS01 travestito? (gli alt ad alto funding sono spesso i pompati = quelli che XS01 compra; qui li shortiamo → potenziale anti-correlazione, oppure il carry domina).

Risultati

Premio reale ma direzione-dipendente

carry (short alto-funding) batte sistematicamente anti (long alto-funding, sempre molto negativo) → il premio di funding esiste: shortare i perp ad alto funding paga, in aggregato.

Ma il book NON regge il gauntlet (19 asset, 2024-2026, 904g)

  • Standalone base (L=7 k=5): FULL Sharpe 0.12, in-sample 0.44, HOLD 0.50, DD 28.6%, 2.8%/anno. Decadimento netto: 2024 +0.44 → 2025 0.06 → 2026 1.42.
  • Correlazioni: TP01 0.02, XS01 0.19 (ortogonale, come da ipotesi — NON è XS01 travestito), VRP01 +0.05.
  • marginal_vs_tp01 = DILUTES: has_insample_edge=False (in-sample 0.44 < 0.5), multicut_persistent=False, blend w25 uplift FULL 0.21 / HOLD 0.39.
  • Non aggiunge a XS01: uplift w25 FULL 0.04 / HOLD 0.19.

Il colpo di grazia: FRAGILITÀ all'universo

Un preview su 17 asset (mancavano NEAR e AAVE) dava FULL +0.62, ADDS, +0.22 uplift — un PASS tentatore. Sui 19 completi: DILUTES. Jackknife lascia-fuori-uno (base L=7 k=5):

19 asset:  FULL -0.12  HOLD -0.50
-SUI   FULL -0.39      ...      -BTC  FULL +0.17
-SEI   FULL -0.31               -AAVE FULL +0.26
-BNB   FULL -0.29               -NEAR FULL +0.30
=> FULL oscilla in [-0.39, +0.30] togliendo UN solo asset (range 0.70), attraversa lo zero.

Togliere NEAR o AAVE (i due assenti nel preview) recupera il segno → il preview era fortunato proprio perché quei due non c'erano ancora. Un edge robusto non cambia segno per un singolo nome. Le poche celle "buone" del plateau (es. L=7 k=3: HOLD 0.91) hanno in-sample debole + hold-out forte = la firma del hold-out-luck che la metodologia indurita uccide.

Perché fallisce (meccanismo)

Tensione fondamentale carry vs momentum: il funding-carry shorta i forti (alto funding = domanda long aggressiva), ma in un mercato alt toro i forti continuano a correre (NEAR/AAVE: alto funding e prezzo su → shortarli perde più del premio incassato). Il premio di funding è reale in aggregato, ma il book cross-sectional equal-weight top-k è dominato da pochi nomi a funding estremo che anche trendano, e su 2.5 anni / 19 nomi questo basta a ribaltare il segno.

Verdetto

FC01 NON è uno sleeve. Né deploy (è STAT-MODE: 10 gambe market-neutral, non eseguibile a $600), né lead affidabile: fragile all'universo (sign-flip su un nome), DILUTES vs TP01, non aggiunge a XS01, in-sample edge < 0.5, niente persistenza multi-cut, decadimento 2026. Conferma — di nuovo — il soffitto del progetto: promettente su un sottoinsieme fortunato, collassa sotto il gauntlet onesto. Win metodologico: lo scorer indurito + il jackknife d'universo hanno intercettato un falso positivo che il preview a 17 asset avrebbe promosso.

Lascito / lavoro futuro (NON inseguire ora)

  • I 19 parquet funding (hlfund_*) restano certificati per ricerca futura. Il fetcher NON va in cron (FC01 fallito → niente da monitorare in forward).
  • Idee se mai si tornasse sul carry (NON ora): (a) gate sul LIVELLO di funding (short solo quando estremo, regime-filter alla VRP01 IV-rank) invece dello short-top-k incondizionato; (b) cap sul peso per-nome / neutralizzazione momentum per togliere il dominio NEAR/AAVE. Entrambe rischiano overfitting su storia corta — soglia di prova alta.

Nota IB (thread parallelo, stessa sessione)

Esplorato come fonte per il basis CME crypto (cugino eseguibile del carry). Gateway paper gnzsnz/ib-gateway su 127.0.0.1:4002 (read-only, docker-compose.yml), sonda ib_probe.py. Esito dati: backtest del basis NON fattibile (ContFuture back-adjusted; contratti scaduti = 1 barra). IB resta valido per esecuzione/forward, non per scoprire l'edge. Dettagli nel corpo sessione.