2ae6d7afe6
Col real-truth ledger net_return resta il numero SIM diagnostico: sui TP fantasma da spike-print testnet (ETH, bars_held=0: lo spike genera il segnale E tocca il TP intrabar; il reale chiude a mercato pagando fee/spread) il report Telegram diceva 26 positivi / 0 negativi mentre il reale era 11/15. Ora collect() usa ev.win (real-truth-aware, fallback nr>0 per eventi storici); i PnL per-motivo erano gia' reali. TODO: nota monitor sul churn da spike (niente filtri anti-spike nei segnali: artefatto testnet, real-truth gia' contabilizza giusto). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
93 lines
6.4 KiB
Markdown
93 lines
6.4 KiB
Markdown
# TODO — prossimi passi
|
||
|
||
> Raccolta dei follow-up aperti. Aggiornato 2026-06-11 (XS01 dispersion-gate live v1.1.20;
|
||
> real-truth ledger attivo; reset portafoglio 2026-06-10).
|
||
|
||
## Stato esecuzione per sleeve (REALE vs SIMULATO)
|
||
|
||
**REALE (shadow su Deribit testnet, REAL-TRUTH: il ledger segue i fill reali) — 15 sleeve:**
|
||
- 6 fade (MR01/MR02/MR07 × BTC/ETH) + DIP01_BTC → single-leg, v1.0.3+
|
||
- 6 pairs PR01 (ETH/BTC, LTC/ETH, ADA/ETH, BTC/LTC, ETH/SOL + ETH/BTC 15m) → 2 gambe,
|
||
v1.1.12 (2026-06-08); il 15m dal v1.1.16 (2026-06-09)
|
||
- SH01 × BTC/ETH → single-leg, exit a orizzonte (no TP/SL), v1.1.13 (2026-06-08)
|
||
|
||
**SIMULATO (paper, NON esegue reale) — 4 book multi-asset, fuori dal capitale-pool:**
|
||
- TR01 / ROT02 / TSM01 / XS01 → bloccati dal CAPITALE (rumore arrotondamento)
|
||
|
||
## Esecuzione reale — pezzi mancanti
|
||
|
||
- [x] ~~Executor a 2 gambe per i PAIRS~~ — FATTO + ATTIVO (v1.1.12, 2026-06-08).
|
||
- [x] ~~SH01 in reale~~ — FATTO (v1.1.13, 2026-06-08): l'infrastruttura no-TP esisteva già
|
||
(_place_real_tp no-op senza TP, _real_close chiude tutto market reduce-only a orizzonte).
|
||
Bastava accettare kind 'ml' in _exec_for + SH01 in execution.sleeves. Disaster-bracket
|
||
on-book = unica protezione di coda. Test SH01 open/close reale OK.
|
||
- [ ] **Multi-asset in reale** (SIMULATO: TR01/ROT02/TSM01/XS01) — **SBLOCCATO DA CAPITALE ≥ ~€20k**.
|
||
Strumenti USDC tutti esistenti (BNB/DOGE/XRP inclusi), ma a €2k il rumore di arrotondamento
|
||
per-asset è 20-30% (DOGE/XRP/SOL step grandi in $, esposizione frammentata su 5-8 asset) →
|
||
l'esecuzione reale misurerebbe il rumore dei lotti, non la strategia. Serve un
|
||
`BasketExecutionClient` (ribilancio delta multi-strumento, long-only, netting con fade+pairs
|
||
sui simboli condivisi). Beneficio limitato (~19% del portafoglio, diversificatori spesso
|
||
flat) → bassa priorità anche a capitale alto. Analisi: chat 2026-06-08.
|
||
|
||
## Capitale (decisione utente, non codice)
|
||
|
||
- [ ] **Valutare aumento capitale a €5.000-10.000** per togliere il rumore di arrotondamento.
|
||
A €2.000 il rumore BTC per trade è ~2.4% (morde); soglie: ~€4.800 (<1%), ~€9.500 (<0.5%,
|
||
"punto dolce"), ~€19.000 (trascurabile). Le commissioni invece sono % e neutre al capitale.
|
||
Col real-truth ledger il rumore di arrotondamento entra DIRETTAMENTE nell'equity → più
|
||
capitale = ledger più fedele alla strategia. Riguarda i 15 sleeve che eseguono reale.
|
||
|
||
## Follow-up dal code-review (bassa priorità, non urgenti)
|
||
|
||
- [x] ~~forming-bar su ROT02/TSM01~~ — GIÀ FIXATO (v1.1.10, 2026-06-08): `_panel` condiviso
|
||
scarta la barra in formazione via `last_bar_is_forming`. Item rimasto stantio nel TODO.
|
||
- [ ] **ancora bfill di `_daily_equity`**: la serie a punti-trade reindexata su IDX àncora il primo
|
||
valore della finestra al PRIMO trade in-finestra, non al capitale portato avanti. Tocca le
|
||
metriche canoniche di TUTTI gli sleeve a punti-trade (honest/pairs/tsm). Valutare se
|
||
correggere OVUNQUE in un colpo (cambierebbe i numeri canonici di riferimento). Scoperto nel
|
||
gate DIP01 (parità inizialmente fallita per questo).
|
||
- [x] ~~convenzione TR01 worker vs reference~~ — ERA UN BUG, FIXATO (2026-06-11): `mean(rets)`
|
||
sui soli asset in posizione sovrappesava N/k a paniere parziale (con 1 long: 0.45 del
|
||
capitale invece di 0.09). Fix: `sum(rets)/len(universe)` (equal-weight 1/N canonico).
|
||
Replay post-fix: +32% vs reference +42% (residuo = convenzione capitale-unico vs
|
||
media-equity, dichiarata). Diario `2026-06-11-stability-sweep.md`.
|
||
- [ ] **engine duplicato nei 3 gate** `*_port06_impact.py` (exit16/trendmax/dip01): `build_trades_variant`
|
||
/ `port_metrics` copiati quasi verbatim. Sono regression-lock per decisioni live → la
|
||
copy-drift corrompe i verdetti. Fattorizzare in un modulo condiviso.
|
||
- [ ] **epoche hardcoded in `hourly_report.lossguard_section`** (LOSSGUARD_SINCE, TRENDSWAP_SINCE):
|
||
ogni nuova epoca-filtro richiede di editare la funzione. Derivarle da deploy history/config.
|
||
|
||
## Ricerca dispersion/correlation (2026-06-08, 165 agenti) — follow-up opzionale
|
||
|
||
- [x] ~~Gate PORT06 di `index_comp_disp` W=168~~ — FATTO (2026-06-08): PROMOSSO MARGINALE.
|
||
Decorrela bene (corr 0.06 col MASTER) ma OOS PIATTO (Sharpe −0.01). **Documentato e
|
||
rimandato** (non deployato): gate in `dispersion_edges/gate_index_comp_disp.py`,
|
||
riprendere solo se si costruisce una famiglia DISP più ampia. Diario aggiornato.
|
||
|
||
## Monitoraggio (osservare, non agire subito)
|
||
|
||
- [ ] **Churn da spike-print testnet su ETH (2026-06-11)**: il feed testnet stampa wick
|
||
anomali sulla barra 1h ETH che (a) generano segnali short MR01/MR07 (lo spike È lo
|
||
z-score estremo) e (b) "toccano" il TP intrabar della stessa barra → il sim booka
|
||
+4% fantasma a bars_held=0, il reale apre+chiude pagando solo fee/spread (~−0.17€
|
||
a giro, 14 giri oggi ≈ −2.3€). Il real-truth ledger contabilizza GIUSTO (per questo
|
||
esiste) e il report orario ora conta i win dal flag reale. NON aggiungere filtri
|
||
anti-spike ai segnali (= fit su un artefatto del testnet, divergenza dal backtest);
|
||
su feed mainnet il fenomeno non esiste. Osservare la frequenza: se il churn cresce,
|
||
valutare un gate di QUALITÀ FEED a monte (validazione barre nel data layer, non
|
||
nella strategia).
|
||
|
||
- [ ] **FADE in coda storica (2026-06-11)**: il rolling 120g equal-weight delle 6 fade è al
|
||
**2° percentile** della propria storia (−1.0% vs p5 +0.4%); il PORT06 complessivo resta
|
||
in variazione normale (19-28° pct). NESSUN ritocco parametri (= fit sul regime corrente);
|
||
osservare se rientra. Follow-up tecnico: alert di drift per-FAMIGLIA nel `hourly_report`
|
||
(precomputare la distribuzione storica dei rolling-return di famiglia dal backtest
|
||
canonico → confrontare il rolling live; notifica sotto p5).
|
||
- [ ] **PnL live post-swap trend** (epoca TREND in `hourly_report`): verdetto stop-rate fade a n>=30.
|
||
- [ ] **SH01 post-bootstrap**: il trade-rate live deve scendere da ~25% a ~10% delle barre
|
||
(selettività della soglia ripristinata). Controllare nel report orario.
|
||
- [ ] **MR02_ETH**: ultima posizione aperta SENZA disaster-SL (aperta pre-v1.1.4). Si chiuderà
|
||
normalmente; le prossime aperture avranno il bracket.
|
||
- [ ] **parquet fresco per SH01 bootstrap**: oggi al 2026-05-28, il feed copre 365g → margine ~11
|
||
mesi. Rilanciare `download_all()` periodicamente (WARN automatico se il gap supera il lookback).
|