From 7ebb1b8c37e807fd1af3376543c0a25107af331e Mon Sep 17 00:00:00 2001 From: Adriano Dal Pastro Date: Fri, 24 Jul 2026 20:57:13 +0000 Subject: [PATCH] feat(goal50): CC01 regime watch (funding 30g HL, trigger 10/15% ann.) + diario R1 yield/basis R1 (web): carry al fondo del ciclo (BTC 0-4%, ETH negativo), Aave 4-5% = pavimento, 0k -> 2.5-4 eur/g; MiCA lascia a IT esattamente Deribit+HL; fisco 33% dal 2026 (muro capitale x1.5). Watcher read-only, oggi: BTC +8.4% / ETH +7.4% 30g = QUIET. Co-Authored-By: Claude Fable 5 --- docs/diary/2026-07-24-goal-50eur-roadmap.md | 46 +++++++++- scripts/live/cc01_regime_watch.py | 97 +++++++++++++++++++++ 2 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 scripts/live/cc01_regime_watch.py diff --git a/docs/diary/2026-07-24-goal-50eur-roadmap.md b/docs/diary/2026-07-24-goal-50eur-roadmap.md index 51558b5..5c936d5 100644 --- a/docs/diary/2026-07-24-goal-50eur-roadmap.md +++ b/docs/diary/2026-07-24-goal-50eur-roadmap.md @@ -86,7 +86,51 @@ capitale altrui = art. 166 TUF) approfondito nella ricerca dedicata sotto. ## Ricerche web (3 agenti paralleli) — RISULTATI -_(sezione completata sotto, dopo il rientro degli agenti)_ +### R1 — Yield / basis / carry a $600-20k (luglio 2026): NIENTE di rilevante ora + +- **Il carry è al fondo del ciclo, CC01 confermato live**: funding BTC annualizzato + +70% (gen 2026, euforia) → **−3.4%** (mag) → **+4.2%** (metà lug); spot 22-24 lug ≈ 0. + **ETH funding NEGATIVO** (flip 3-4 giu). CME basis −2.35% dic 2025 (peggior + backwardation post-FTX). Carry netto BTC oggi: **0-2%/anno < Aave**, con più tail risk. +- **Menu onesto**: Aave v3 USDC **4-5%** = pavimento income reale; sUSDe 4-7% in + compressione (= il premio CC01 tokenizzato, riserva 1.18% del TVL, TVL fuggito + $14B→$5.9B, DeFi-only per EEA); **HLP ~15-25%** ma è inventory di market-making + travestito da yield (tail plausibile −20/−50%, cooldown sui prelievi; nel crash + ott 2025 fece +10% in un weekend — profitta nei cascade, sanguina nei trend). +- **Tier di capitale**: $600 → ~€0.07/g; $5k → ~€0.6-0.8/g; $20k → **€2.5-4/g** + (aggressivo HLP-heavy ~€5-6 con la sua coda). Nessuno step-change tra 5k e 20k; + quelli veri sono ~$20k (basis multi-leg eseguibile QUANDO il funding torna) e $100k+ + (fee tier). 50 EUR/g a 5-8% onesto = **€250-350k** — peggio del muro trading. +- **Regola operativa cablabile**: CC01 resta LEAD **regime-triggered** — riaprire il + dossier solo con **funding medio 1-mese > 10-15% annualizzato sostenuto** (la serie + funding HL ce l'abbiamo già). Gli spike stile gen-2026 (70% ann., spariti in + settimane) NON sono income raccoglibile. +- **MiCA day-one 2026-07-01 — mappa venue per residenti IT**: **Binance OUT** (no + licenza, restrizioni dal 1/7); Bybit globale bloccato EEA, bybit.eu senza perp; + **Deribit OK** (Coinbase ha licenza MiCA Luxembourg) ma perp-EU-retail in zona grigia + MiFID-II da monitorare; **Hyperliquid ancora accessibile** senza KYC ma è il + test-case del perimetro EU → rischio geoblock futuro reale. In pratica: i nostri + due venue sono esattamente ciò che resta. +- ⚠️ **FISCO ITALIA 2026**: capital gain crypto **33% dal 1/1/2026** (L.199/2025), + esenzione €2.000 ABOLITA, IVAFE 0.2%, DAC8 auto-reporting, crypto nell'ISEE. + → ogni numero di questo diario è LORDO: **50 EUR/g netti ≈ 75 EUR/g lordi**, il + muro di capitale sale di ~1.5x (~EUR 180k a CAGR 15%). Da verificare col + commercialista il trattamento di yield/staking. + +_(FX: i rendimenti sono USD-denominati; ~2pp del 4.5% stable è solo il differenziale +tassi USD-EUR — hedged in EUR il "4.5%" reale è ~2.5%.)_ + +### R2 — Prop firm crypto 2026 + +_(in arrivo)_ + +### R3 — Monetizzazione track record / vault / legale IT + +_(in arrivo)_ + +## Roadmap + +_(sintesi finale dopo i risultati degli agenti)_ ## Roadmap diff --git a/scripts/live/cc01_regime_watch.py b/scripts/live/cc01_regime_watch.py new file mode 100644 index 0000000..5108c69 --- /dev/null +++ b/scripts/live/cc01_regime_watch.py @@ -0,0 +1,97 @@ +"""cc01_regime_watch — trigger di regime per riaprire il dossier CASH-AND-CARRY (2026-07-24). + +CONTESTO. CC01 (basis/funding carry) e' un LEAD archiviato: premio REALE ma procyclico +(diario 2026-06-26-cash-carry-hl.md), non uno sleeve. La ricerca 2026-07-24 (goal50, R1) +ha confermato il ciclo live: funding BTC +70% ann. (gen 2026) -> -3.4% (mag) -> ~0-4% (lug). +Regola decisa: il dossier si riapre SOLO quando il funding medio 1-MESE e' sostenutamente +ricco — non sugli spike (gen-2026 style, spariti in settimane). + +Questo watcher legge gli ultimi ~35g di funding orario BTC/ETH dall'API pubblica +Hyperliquid (tokenless, stessa fonte certificata di fetch_hl_funding.py) e stampa: + - media 30g e 7g annualizzate per BTC/ETH + - stato trigger: QUIET (<10% ann.) | WARN (>=10%) | ALERT (>=15% -> riaprire CC01, + che resta comunque vincolato a ~$20k+ di capitale e venue con funding eseguibile). + +Uso: `uv run python scripts/live/cc01_regime_watch.py` +(candidato a una riga in cron_daily.sh: e' read-only, nessun ordine, nessuno stato.) +""" +from __future__ import annotations + +import datetime as dt +import time + +import numpy as np +import requests + +HL_INFO = "https://api.hyperliquid.xyz/info" +HOURS_PER_YEAR = 24 * 365 +WARN_ANN = 0.10 # >=10% ann. su media 30g -> WARN +ALERT_ANN = 0.15 # >=15% ann. su media 30g -> ALERT: riaprire il dossier CC01 + + +def _post(payload: dict, max_retry: int = 6): + delay = 1.0 + for _ in range(max_retry): + r = requests.post(HL_INFO, json=payload, timeout=30) + if r.status_code == 429 or r.status_code >= 500: + time.sleep(delay) + delay = min(delay * 2, 20) + continue + r.raise_for_status() + return r.json() + r.raise_for_status() + return r.json() + + +def fetch_recent_funding(coin: str, days: int = 35) -> np.ndarray: + """Funding orario degli ultimi `days` giorni (paginato, max 500/req).""" + start = int((dt.datetime.now(dt.timezone.utc) + - dt.timedelta(days=days)).timestamp() * 1000) + rows, seen = [], set() + while True: + d = _post({"type": "fundingHistory", "coin": coin, "startTime": start}) + if not d: + break + new = [x for x in d if x["time"] not in seen] + if not new: + break + for x in new: + seen.add(x["time"]) + rows.append((x["time"], float(x["fundingRate"]))) + start = new[-1]["time"] + 1 + if len(d) < 500: + break + rows.sort() + return np.array([r for _, r in rows], dtype=float) + + +def main() -> None: + print("=" * 78) + print(" CC01 REGIME WATCH — funding medio 1-mese (Hyperliquid, orario, tokenless)") + print("=" * 78) + worst = "QUIET" + for coin in ("BTC", "ETH"): + f = fetch_recent_funding(coin) + if len(f) < 24 * 7: + print(f" {coin}: dati insufficienti ({len(f)} ore) — check API") + continue + ann30 = float(f[-24 * 30:].mean()) * HOURS_PER_YEAR + ann7 = float(f[-24 * 7:].mean()) * HOURS_PER_YEAR + state = ("ALERT" if ann30 >= ALERT_ANN else + "WARN" if ann30 >= WARN_ANN else "QUIET") + if state == "ALERT" or (state == "WARN" and worst == "QUIET"): + worst = state + print(f" {coin}: media 30g {ann30:+7.1%} ann. media 7g {ann7:+7.1%} ann. -> {state}") + print("-" * 78) + if worst == "ALERT": + print(" >>> ALERT CC01: funding 30g >= 15% ann. — regime ricco SOSTENUTO.") + print(" Riaprire il dossier cash-and-carry (vincoli invariati: ~$20k+,") + print(" venue con funding eseguibile, tail risk NON nel dataset).") + elif worst == "WARN": + print(" >> WARN: funding 30g >= 10% ann. — osservare, non agire.") + else: + print(" regime QUIET: carry non raccoglibile (coerente con luglio 2026).") + + +if __name__ == "__main__": + main()