Analisi: protezione nei cali lenti — peso SKH01 vs TP01 long-short #41
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
ESITO: richiesta
RIF: gitea:Adriano/PythagorasGoal
COSA: misurare se alzare il peso SKH01 o rendere TP01 long-short protegge il libro nei cali lenti, dove oggi resta long.
Perché (diagnosi 08/10/2026, sola lettura, operatore-finanziario su Fable 5.1)
trades.dbjournal 2026-10-07; realizzato −0,42, il resto è mark-to-market). 08/10 fino 19:47Z: −85,76. Dal 25/09, versamento del 01/10 escluso: −157,34. DD dal massimo 7.553,12 (02/10 13:47Z): −3,1 %.confronta_giornata.py --giorno 2026-10-07→ 0 divergenze non spiegate).ptn_shortrichiede close HTF < minimo low 45 barre HTF (~21,6 g), ancorato a 74.920 BTC / 2.357,6 ETH (15-17/09). Distanza minima nel calo: +10,5 % BTC, +8,8 % ETH.buz_volaETH 12-33 dal 04/10 (regime off): un calo lento abbassa l'ATR.long_only=True.src/live/book.pyr.262:net = 0,5·E·(0,75·tp_frac + 0,25·skh_sign)→ con skh_sign −1 il libro resta net long finché tp_frac > 1/3. Non documentato.CLAUDE.mdr.193-196: protezione SKH01 misurata su finestre con giorni ≤ −5 % (8/8 dal 2022); le 2 finestre perse sono «TP01 long dentro un trend non ancora girato». È il caso 25/09→08/10.Da misurare
weights_tilt_nullfallito in-sample; cache segnali ferma al 25/07). Rifare con cache aggiornata, e aggiungere griglia 25/30/37,5/50.HEADLINE_LS_1H, trend_portfolio.py r.49-52, Sharpe ~1,0, scartata per DD). Rimisurare anche varianti: short solo con blend ≤ −1/3, short a dose ridotta.CLAUDE.md§1 e nel docstring disrc/live/book.py, che lo short SKH01 non inverte il libro se tp_frac > 1/3, e che la misura 8/8 vale per crolli con giorni ≤ −5 %.Criterio di fatto
Rapporto in
docs/con, per ogni variante: CAGR, Sharpe, maxDD, P&L sulle finestre «calo lento» e sulle finestre di crollo, esito dei gate esistenti (weights_tilt_nulle gli altri del §4), raccomandazione con banda. Nessuna modifica aconfig/live.jsonné al codice live in questa issue: l'accensione è una decisione separata di Adriano.NON TOCCARE:
config/live.json,execution_enabled, cron del libro,src/live/(salvo docstring del punto 4).FONTI:
logs/cron_book.log,data/live/book_executions.jsonlr.89-257,data/live/trades.db,src/strategies/skyhook.pyr.164-181,src/strategies/trend_portfolio.pyr.40-115,src/portfolio/sleeves.pyr.239-289,/opt/AI-OS/automations/TradingBook/data/live/ombra.jsonl.ESITO: richiesta — analisi del passo 1 (Opus 5.5, daitarn), 08/10/2026
RIF: gitea:Adriano/PythagorasGoal#41
COSA: piano di misura in copia isolata; nessun commit, ramo o worktree del repo vivo (
issue prendirifiuta il repo per regola).Dove si lavora
goldrake:~/lavoro/pg41-analisi=git archive bebfa63+data/rawedata/_cachecopiati il 08/10 20:3xZ (feed fino al 08/10). Non è un repo git./opt/docker/PythagorasGoal/.venv/bin/python, lanciato con cwd nella copia enice -n 19(4 core, cron vivo al :47).~/lavoro/pg41-analisi/out/. Mai scritture in/opt/docker/PythagorasGoal._tp01_returns()e_skyhook_returns()dalla copia → 2019-03-14…2026-10-08, 2766/2765 giorni, 1,9 s.Lente (dichiarata, uguale a r0909)
Sleeve di ricerca canonici giornalieri, fee 0,10 % RT, funding non modellato, SKH01 marcato all'uscita. Libro =
W_TP01·tp + W_SKH·skh(combinazione lineare: ignora il risparmio di fee del netting). HOLDOUT 2025-01-01 (src/portfolio/portfolio.pyr.21).⚠️ Il gate
weights_tilt_nulldel 26/07 è fallito sulla condizione in-sample (pre-2025): dati nuovi cambiano solo l'hold-out, quindi la ricostruzione della cache intra-bin (r0726_skh_sigcache.py, ~17 min per tabella × 16 = ~4,5 h) da sola non può ribaltare (1). Si rifà solo se la lente canonica indica un cambio che valga la spesa.Unità (un agente Sonnet ciascuna)
U1 — peso SKH01 (
out/u1_pesi.py)weights_tilt_null({tp,skh}, {0,75/0,25}, proposto)per 0,30 / 0,375 / 0,50,k_seen= 7 (griglia vista).U2 — TP01 long-short (
out/u2_tp01_ls.py)long_onlye lato short cambiano:lf(riferimento, bit-exact con_tp01_returns),ls_pieno(long_only=False),ls_tutti_neg(short solo con blend = −1, cioè 3/3 orizzonti negativi),ls_mezza(lato short × 0,5).ls_pieno.U3 — cali lenti (
out/u3_cali_lenti.py, dopo U1 e U2)indice_5050di r0909);Contratto fra le unità
out/serie_u1.parqueteout/serie_u2.parquet: DataFrame, indice giornaliero UTC tz-aware, valori = rendimento netto giornaliero del libro.libro_attuale,skh_w0.00,skh_w0.10,skh_w0.20,skh_w0.30,skh_w0.375,skh_w0.50.libro_attuale,ls_pieno,ls_tutti_neg,ls_mezza.libro_attuale= 0,75·_tp01_returns()+ 0,25·_skyhook_returns(), identico nei due file (U3 lo verifica con assert).out/rapporto_uN.txt.Punto 4 dell'issue (documentazione)
Richiede un commit in PythagorasGoal: fuori da questa analisi, si chiede ad Adriano a fine misura.
NON TOCCARE:
/opt/docker/PythagorasGoal/**,config/live.json, cron,scripts/live/, git di qualunque copia.TEST: assert bit-exact
lf=_tp01_returns(); assertlibro_attualeuguale in U1 e U2; riproduzione M23 dei numeri di CLAUDE.md r.193-201.PROSSIMO: U1 e U2 in parallelo, poi U3, poi revisione Fable, poi rapporto qui.
ADDENDUM analisi (Adriano: «ricordati dello shadow»)
ESITO: fatto, rivisto da Fable 5.1 (rilievi R1-R6 applicati) — misure di gitea:Adriano/PythagorasGoal#41, 08/10/2026
RIF: gitea:Adriano/PythagorasGoal#41 · analisi #41 (comment)
COSA: nei cali lenti nessuna variante protegge; TP01 long-short peggiora il libro ed è scartato; un peso SKH01 più alto non è giustificato (sulla lente intra-bin è dentro il plateau = rumore, e SKH01 è lo sleeve più sensibile alle fee e il meno affidabile al LOO). Nessun cambio raccomandato.
Copia di lavoro:
goldrake:~/lavoro/pg41-analisi(exportbebfa63+data/raw,data/_cachedel 08/10). Script e rapporti inout/. Ogni script è stato rilanciato da Opus dopo l'agente: uscite identiche (U1, U2 ricalcolati; U3 rilanciato senza cache,diffvuoto; U4diffvuoto).Lente principale: sleeve canonici giornalieri (r0909), fee 0,10 % RT, funding non modellato, SKH01 marcato all'uscita. IS < 2025-01-01, HOLD ≥ 2025-01-01.
U1 — peso SKH01, lente canonica (
out/u1_pesi.py,out/rapporto_u1.txt)weights_tilt_null(k_seen 7): 0,30 PASSA (Δ IS +0,036, pctl 27,4); 0,375 PASSA (+0,052, 34,0); 0,50 FALLISCE (Δ IS −0,0047).U4 — stesso gate sulla lente intra-bin (path live), 8 offset (
out/u4_gate_ancore.py)r0726_reeval_live_weight.pyriproduce il 26/07: 0,25→0,35 Δ IS −0,0026, gate False. Ma r0726 calcola il gate sul solo offset 000.U2 — TP01 long-short (
out/u2_tp01_ls.py)r0823_tp01_ls.py). Short il 40-42 % dei giorni, turnover quasi doppio, funding non modellato (quindi sottostima del costo).U3 — cali lenti (
out/u3_cali_lenti.py)Definizione fissata prima dei numeri: 20 giorni, indice 50/50 ≤ −8 %, nessun giorno ≤ −5 %, finestre non sovrapposte. Ne escono 7 (2019-10, 2023-05, 2024-06, 2025-06, 2025-12, 2026-03, 2026-05); 2 a −12 %.
Conclusioni
Prossimi passi proposti (nessuno eseguito)
CLAUDE.md§1 e nel docstring disrc/live/book.pyche lo short SKH01 non inverte il libro se tp_frac > 1/3 e che la protezione misurata vale per i crolli, non per i cali lenti. Richiede un commit in PythagorasGoal: decide Adriano.MANCA: banda a 24 ancore per TP01-LS (non rifatta: già nota dal §42); funding non modellato; cause degli offset 540 e 630 non indagate.
ESITO: richiesta
RIF: gitea:Adriano/TradingBook#36 (chiusa)
COSA: il filone opzioni proposto al punto «Prossimi passi» è misurato e REFUTATO 0/36: put spread acceso con TP01 carico non protegge in modo distinguibile dal rumore; nel caso vivo l innesco economico non scatta. Rapporto: TradingBook scripts/research/opz36/RAPPORTO.md (main fa9c76c).
MANCA: punto 4 di questa issue (documentazione in CLAUDE.md e book.py di PythagorasGoal) — decide Adriano.
ESITO: bloccato
RIF: gitea:Adriano/PythagorasGoal#41
COSA: decisione di Adriano del 09/10/2026: nessun cambio al libro (pesi, TP01, coperture). Equity 7.356 USDC alle 12:00Z, −2,4 % dal massimo del 05/10, dentro il peggior calo storico a 20 giorni (−4,8 %).
ATTESA: attesa:adriano — punto 4 (documentazione in CLAUDE.md e src/live/book.py di PythagorasGoal), richiede un commit nel repo che non si tocca senza il suo via.