feat(runner): gate feed CONGELATO — sospende gli sleeve ETH-leg finche' il feed non si sblocca

Audit "stato ordini": il feed ETH-PERPETUAL congelato a 1661.95 (36h+) generava
perdite REALI (SH01_ETH -2.83 reali vs -0.09 sim su un close + riapertura; 4 pairs
con gamba ETH entrati su z-score spuri -3/-5/+5.6 = artefatto del log-ratio con ETH
pinnato mentre gli alt si muovono).

_frozen_assets + _feed_gated_sids: quando il feed di decisione 1h di un asset e'
congelato, gli sleeve concentrati (single/ml/pairs) che ne dipendono saltano il tick
(entry+exit) finche' non si sblocca (come outage; disaster-SL on-book = coda).
Auto-guarente: rilascio alla prima barra COMPLETA non-flat (NON l'entry-guard
post-flat bocciata). Detector guasto-vs-illiquido: conta la run di close INVARIATE
(ETH/BNB/DOGE run 40-64, 1-4 val/48h = morti; SOL/LTC/ADA run <=12, 5-31 val = vivi).
Soglia feed_freeze_gate_bars=24 -> gatea le 9 gambe ETH esatte, PR_BTCLTC e i
multi-asset restano attivi. Alert Telegram FEED_FROZEN_GATE GATED/RIPRESO.

Test test_freeze_gate.py (6, detector+scope+rilascio). Suite portfolio 140/140.
Cerotto testnet: il fix vero e' mainnet. Diario 2026-06-15-frozen-feed-gate.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-06-15 08:44:39 +00:00
parent c21e1dc635
commit 4c184d5cbc
5 changed files with 267 additions and 0 deletions
+8
View File
@@ -14,6 +14,14 @@ overrides:
leverage: 3
rebalance: 1D
poll_seconds: 60
# Gate feed CONGELATO (2026-06-15): salta entry+exit degli sleeve concentrati
# (single/ml/pairs) il cui feed di DECISIONE 1h e' fermo da >= N barre di close
# INVARIATA (guasto testnet: ETH-PERPETUAL a 1661.95 per 36h+ -> z-score pairs
# spuri e perdite reali, i fill avvengono al book vero). Distingue il guasto
# dall'illiquidita' (alt flat ma che si muovono ogni ~10 barre). Auto-guarente:
# si rilascia alla prima barra completa non-flat. 24 = un giorno di prezzo
# immobile (margine pulito tra le due popolazioni). 0 = disattivo.
feed_freeze_gate_bars: 24
# SLEEVE PAPER (2026-06-08): fuori dal pool/pesi/ledger — i €2000 si dividono SOLO
# tra i 14 sleeve REALI (fade+DIP01+pairs+SH01). I multi-asset (no esecuzione reale,
# bloccati dal capitale) girano in data/portfolio_paper_stats/ con capitale nozionale