# PythagorasGoal Ricerca e esecuzione di strategie algoritmiche su BTC/ETH, con **un libro che gira con soldi veri** su Deribit mainnet dal 20 giugno 2026. > 🚨 **v2.0.0 — RESET del 2026-06-19. Tutto ciò che questo README diceva prima è archiviato in > `Old/` e non è fidato.** L'intera libreria di strategie "validata out-of-sample" (le famiglie > FADE/HONEST/PAIRS/TSMOM/SHAPE, i portafogli PORT01-06, gli Sharpe fra 6 e 10) era un **artefatto > di uno storico contaminato**: print fantasma di un feed *testnet* più storico Binance/USDT. > Ri-testate sul feed reale ricostruito da Deribit mainnet, **perdono ogni anno**. Documento di > fondazione: `docs/diary/2026-06-19-deribit-history.md`. > > Questo README descrive il progetto **dopo** il reset. È stato riscritto il 2026-09-02, dopo > essere rimasto fermo al 4 giugno — quindici giorni prima del reset — mentre pubblicava i numeri > che il progetto aveva già dichiarato falsi. **L'autorità sui numeri e sulle decisioni è `CLAUDE.md`**, e il racconto completo sta in `docs/memory/`. Questo file è l'ingresso, non la fonte. --- ## Cos'è vivo, adesso | | | |---|---| | libro live | **TP01 + SKH01 a 75/25**, nettati in software su una sola posizione per asset (50/50 BTC/ETH) | | venue | Deribit mainnet, perpetual lineari USDC. Esecuzione **armata** dal 2026-06-20 | | capitale | ~$2.050 (USDC + USDE), non i €2.000 nominali di nessun paper trader | | cadenza | **oraria**, minuto `:47` (`scripts/cron_book.sh`) | | leva | lorda ~0,28x su un tetto di 1,00x. Il cap non ha mai morso: **il vincolo è il segnale** | | protezione on-book | un solo disaster-SL rotolante al −30% sulla posizione netta | **Non** sono nel libro live: XS01, VRP01, GTAA01, XSR01. Vivono nel portafoglio di **ricerca** (paper, 5 sleeve), che è una serie diversa da quella che gira — quasi tutti i numeri di portafoglio del progetto sono su quella, non su questa. ## I numeri, con la loro lente Ogni numero va scritto con la lente e la banda che gli appartengono. La tabella completa ("non citare" ↔ "citare") è in `CLAUDE.md` §2; qui i tre che contano. | grandezza | valore onesto | |---|---| | rendimento del libro live | **TWR +10,6%** dall'armamento, spezzato sul versamento del 25/08: +11,61% prima, −0,9% dopo | | crescita di trading | **+$50** in 71 giorni, su 30 round-trip chiusi e $0,87 di fee totali | | Sharpe del portafoglio di ricerca | **1,95** [1,81 – 2,12] full, **1,54** [1,11 – 1,91] hold-out | ⚠️ Il rendimento dell'equity **non** è la performance: il 96% della crescita del conto è un bonifico. Chi legge una percentuale su questo progetto deve sapere se è un TWR o un rapporto fra due saldi — è stato un difetto reale, riparato il 2026-09-02. ## La riga che ordina tutto il resto > La ricerca ha smesso di essere il vincolo il 2026-07-26, e **sei ondate successive lo hanno > confermato invece che ribaltarlo**. I vincoli sono **il capitale che entra** e **il conto che non > sparisce**. Misurato: il miglior candidato nuovo vale **+0,046 €/giorno**; versare €500/mese invece di €250 porta la probabilità di arrivare al traguardo in 20 anni **dal 14% all'85%**. E €100/mese in più equivalgono a **+4,07%/anno di drift**, cioè più di tutta la leva autorizzabile. ## Metodo — cosa deve superare una strategia nuova Sei requisiti, nessuno negoziabile (`CLAUDE.md` §8, gate in `scripts/research/alt/altlib.py`): 1. **ingresso eseguibile** — direzione e prezzo da dati fino a `close[i]`, mai l'estremo di una candela; 2. **backtest netto** dopo fee Deribit realistiche, più la leva; 3. **out-of-sample** held-out, robustezza su griglia, sweep fee; 4. **liquidità e plausibilità** — un edge su un book fermo o su wick fantasma non è un edge; 5. i **gate**: `marginal_vs_tp01` (Sharpe marginale, non assoluto), `study_family_honest` con deflated-Sharpe ≥ 0,95, `day_boundary_robust`, `anchor_luck_band`, `weights_tilt_null`; 6. codice, test e diario. Il progetto ha **73 regole di prim'ordine** (`CLAUDE.md` §6) — sul dato, sul metodo, sui costi, sulla produzione e sul piano — ognuna pagata almeno una volta. La più ricorrente, cinque occorrenze: *un sorvegliante deve derivare il proprio bersaglio dal codice sorvegliato, mai ridichiararlo — un controllo puntato su una configurazione diversa da quella che gira passa sempre, e non sta controllando niente.* ## Il dato - **La verità è Deribit mainnet**, perché è dove si esegue. Binance è un audit indipendente, mai un'ancora per "ripulire": è USDT, ~10 bps fuori, fino al 3% sotto depeg. - Universo certificato: **solo BTC/ETH**, ogni timeframe. Gli alt sono esclusi. - Lo storico si aggiorna **solo** con `rebuild_history.py` e si certifica **sempre** con `certify_feed.py`. Il vecchio downloader è la causa del reset. - La catena opzioni si **raccoglie** ogni ora (`collect_chain.py`, minuto `:25`): un'ora non raccolta è persa per sempre. ## Struttura ``` src/ data/downloader.py load_data(asset, tf) sui parquet certificati strategies/ trend_portfolio.py (TP01) · skyhook.py (SKH01) · base · indicators portfolio/ portfolio.py (N sleeve + weights_tilt_null) · sleeves.py · gtaa.py backtest/harness.py backtest onesto, senza look-ahead live/ book.py (esecutore netto) · deribit · livefeed · usde venue_watch · venue_probe · venue_news · monitor_health · scale_watch tradesdb · journal · analista · notifier · cli scripts/ live/ book_execute · trades_db · journal · analista · balance_watch paper_* (forward-monitor) · usde_watch · usde_convert · fee_watch research/ r_*.py — un file per esperimento, harness in alt/altlib.py analysis/ rebuild_history · certify_feed · audit_feed · multi_source_check cron_{book,daily,chain,balance,usde,opt_snapshot,vol_term}.sh docs/ memory/ LA MEMORIA — 6 file, indicizzati in testa a CLAUDE.md research/ RESULTS-0822 (§1-73, un registro per filone) · BRIEF-0822 · SPEC-scale-key diary/ una voce per esperimento (144) journal/ libro di bordo, una voce al giorno, 4 livelli per provenienza tests/ 910, tutti verdi Old/ archivio pre-reset — consultabile, non fidato ``` ## Comandi ```bash uv sync # dipendenze uv run python scripts/analysis/rebuild_history.py --asset BTC ETH # storico da Deribit mainnet uv run python scripts/analysis/certify_feed.py # certifica i feed uv run python scripts/live/trades_db.py --report # stato del libro + TWR uv run python scripts/live/journal.py # voce del giorno uv run python scripts/live/analista.py --secco # analisi del giorno, senza salvare uv run python scripts/portfolio/run_portfolio.py # portafoglio di ricerca uv run pytest # 910 test ``` Ogni script di `scripts/live/` accetta `--help` e **rifiuta un flag che non conosce** (esce 2): fino al 2026-09-02 un flag sbagliato eseguiva l'azione di default, e su tre script quell'azione scriveva. ## Gate aperti Un gate si decide **alla data**, coi criteri scritti **prima**. Elenco completo in `CLAUDE.md` §4. | gate | data | dove punta oggi | |---|---|---| | STATARB | 2026-09-27 | ritiro (Sharpe −1,61 sulla serie vera) | | SCALA-01 — leva 1,00 → 1,25 | non prima del 2026-10-01 | chiave costruita e **inerte**; 9 condizioni, 2 fatte | | XSR01 | 2026-10-23 | sotto la lente rendita il meccanismo vale ~0 | | DVOLSPREAD | kill 2026-10-24 | serie −4,41 | | GTAA01 tenere/bloccare | al book a $15k | contributo reale +0,10/+0,12 di Sharpe, non incassabile sotto la soglia | ## Obiettivo, e cosa lo rende difficile Il target dichiarato è **€50/giorno partendo da €1.000**. Non è raggiungibile a questo capitale: servono ~$313k (banda [$187k – $1,14M]) o **€1.733/mese per dieci anni** per averlo al 90% di probabilità. La leva non è la scorciatoia — quella difendibile vale quanto €100-150/mese di versamento. La via è target-vol, capitale e tempo. **Onestà prima di tutto**: nessun numero va creduto finché non è netto fee, out-of-sample, robusto su griglia, e su dati certificati, liquidi ed eseguibili. Il resto di questo repo esiste per rendere quella frase verificabile invece che dichiarata.