Files
Adriano Dal Pastro b237ad2e8b docs: compattazione di CLAUDE.md — 3458 -> 424 righe, memoria in docs/memory/
CLAUDE.md era arrivato a 310 KB (~80k token caricati a OGNI sessione) e la
sua funzione si era sdoppiata: era insieme il manuale operativo e l'archivio
di 69 filoni di ricerca. Le due cose hanno lettori diversi.

I 65 bullet-blocco sono stati spostati VERBATIM in docs/memory/ (nulla
riscritto). Verifica meccanica riga per riga prima del commit: 3272 righe
non vuote, 0 mancanti, 0 aggiunte, zero buchi e zero sovrapposizioni nella
copertura delle regioni estratte.

  10-sleeve-e-candidati.md    30 KB  TP01 XS01 VRP01 SKH01 GTAA01 XSR01
  20-ondate-e-scartati.md    126 KB  69 filoni, ogni scartato col suo perche'
  30-piano-capitale-fisco.md  59 KB  muri, versamenti, venue risk, fisco, prop
  40-produzione-e-deploy.md   66 KB  esecutore, tripwire, monitor, PRIIPs/UCITS
  50-dati-e-feed.md           14 KB  difetti del dato, catena opzioni
  60-metodo-e-gate.md          4 KB  i gate di altlib.py

In CLAUDE.md resta solo cio' che serve a non sbagliare una decisione: stato,
book live vs book di ricerca, i numeri da citare e quelli da NON citare,
7 decisioni vincolanti dell'operatore con "cosa le riapre", 6 gate
pre-registrati con la data, 9 debiti aperti non riparati, le regole di
prim'ordine (D/M/C/P/N, distillate dalle 113 righe che contenevano REGOLA),
IL DATO, metodologia, stack/struttura/comandi.

Tre fatti che erano sepolti in 3400 righe e ora stanno in testa: le TRE
baseline diverse che girano sotto il nome "libro 75/25" (spread piu' grande
di quasi tutti gli effetti misurati), il funding non modellato in nessun
backtest (-2,16%/anno), e che «N/N ancore» vale ~2 osservazioni.

Verificato prima del commit: 36/36 percorsi citati esistono su disco,
708 test collezionati, code fence bilanciati. Nessun file di codice toccato.

Convenzione aggiunta (§14) perche' il file non torni a crescere: quando un
risultato CAMBIA UNA DECISIONE si aggiorna CLAUDE.md; quando aggiunge
racconto, va in docs/memory/.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 08:50:02 +00:00

4.3 KiB
Raw Permalink Blame History

Metodo: gate e harness

Estratto verbatim da CLAUDE.md il 2026-08-25 durante la compattazione. I gate codificati in altlib.py che ogni candidato deve attraversare. Il testo non e' stato riscritto: e' la memoria originale, spostata.


  • MARGINAL SCORER (implementato 2026-06-20) — la lezione "Sharpe marginale, non assoluto" è ora codice in scripts/research/alt/altlib.py: study_marginal(name, target_fn) valuta un candidato direzionale BTC/ETH sia in assoluto sia rispetto al baseline tp01_baseline_daily() (corr, uplift del blend OOS, beta+alpha residua) e ritorna earns_slot = (abs!=FAIL) AND (marginal==ADDS). Regola: una nuova strategia direzionale si giudica su earns_slot, non sullo Sharpe assoluto (gli overlay-su-TSMOM ereditano lo Sharpe di trend e prendono PASS fasulli — es. CMB04 PASS assoluto → NEUTRAL marginale). Demo marginal_demo.py, test tests/test_marginal_scorer.py. ⚠️ INDURITO 2026-06-21 (onda ortho): la versione fisso-HOLDOUT + jackknife-mese era ingannabile — 17/18 book relative-value "ADDS" su una sola finestra 2025 (ETH-bleed dove TP01 è debole). Tre gate nuovi in marginal_vs_tp01: (1) persistenza multi-cut (uplift positivo a più date di taglio, non solo 2025); (2) edge in-sample (has_insample_edge: lo Sharpe standalone PRE-holdout dev'essere ≥0.5 — un low-corr a Sharpe ~0.3 "aggiunge" solo matematica di diversificazione, riportata via null_pctl_* vs un asset-rumore a corr-zero); (3) hedge vs alpha (is_hedge: un low-corr che paga SOLO quando TP01 è debole — corr(Sharpe-TP01, uplift annuo) molto negativa — è un hedge, non alpha). Verdetti nuovi: HEDGE, NOISE. Sull'onda ortho lo scorer indurito collassa 17/18 → 1 (dvol_spread, unico con edge in-sample reale; comunque forward-monitor per multiple-testing/storia DVOL corta). Lezione: un nuovo sleeve si giudica su edge-in-sample + persistenza multi-cut + non-hedge, non sull'uplift di una finestra fortunata.

  • HARNESS REALISM (codificato 2026-06-21, onda intraday) — due gate nuovi in altlib.py, test tests/test_harness_realism.py:

    • day_boundary_robust(target_fn, tf) — un effetto ora/sessione/giorno il cui uplift marginale si inverte spostando il confine del giorno UTC di poche ore è un artefatto di etichettatura calendario (ha ucciso open_drive: +0.23 a 00:00 → 0.33 a +8h → ARTIFACT-RISK). Un segnale di prezzo è INVARIANT (spread 0); un effetto calendario vero è ROBUST (resta positivo; es. prevday_range_breakout). Regola: ogni segnale calendar/session/hour passa questo test prima di crederci.
    • eval_weights_smallcap(df, target, capital=600, min_order=5) — a ~$600 un ribilanciamento di nozionale < min_order non si esegue; la fee proporzionale che eval_weights applica a migliaia di micro-trade sub-dollaro (tipici di un overlay vol-target) è finzione. Salta i sub-min_order e riporta lo Sharpe haircut reale vs modellato. Vale per OGNI sleeve a questo capitale, TP01 incluso — lo Sharpe netto onesto a $600 è quello small-cap, non quello modellato.
  • SELECTION-ON-HOLDOUT gate (codificato 2026-06-29, filone B intraday ERM) — terzo gate in altlib.py, test tests/test_harness_realism.py. Il lead ERM faceva earns_slot=True MA lo script di scoperta sceglieva la cella per min_hold massimo su 60+ celle = selezione-sull'hold-out: scegliendola in-sample-only ne esce un'altra (trend-beta corr→TP01 0.53, NEUTRAL) e il deflated-Sharpe crolla (DSR 0.0-0.24 su 122 trial). study_marginal da solo non lo vede (giudica UNO stream, non come è scelto). Tre funzioni: deflated_sharpe() (Bailey & Lopez de Prado, PASS ≥0.95), select_cell_insample() (cella scelta col solo Sharpe pre-HOLDOUT), e il gate combinato study_family_honest(name, factory, grid, tfs)earns_slot_honest = earns_slot[cella in-sample] AND deflated-Sharpe≥0.95. Regola: una strategia direzionale grid-searched si giudica con study_family_honest, non chiamando study_marginal sulla cella a max hold-out. Chiude il punto cieco gemello di CC01 ("Sharpe implausibile"). Diario 2026-06-29-intraday-regime.md (analisi scripts/research/intraday_regime_analysis.py).