# Config LIVE del paper trader a portafoglio. Seleziona UN portafoglio attivo # (definito in scripts/portfolios/_defs.py) e ne fa l'override dei parametri operativi. active: PORT06 # default raccomandato: master + shape overrides: total_capital: 2000 weighting: cap # equal | cap | inverse_vol | cluster_rp | manual # NB: questo dict SOSTITUISCE interamente i caps di _defs.py (setattr in # base.py:load_active_portfolio) → va ridichiarato COMPLETO. Il cap SHAPE # 0.0588 (mitigazione coda SH01, 2026-06-05) era stato perso per questo. caps: {PAIRS: 0.33, SHAPE: 0.0588} # Leva 3x (2026-06-12, scelta utente, da frontiera ACCEL50: OOS CAGR 111->206%, # FULL DD 3.5->5.2% nel modello lineare; vedi scripts/analysis/accel50_research.py # e docs/diary/2026-06-12-accel50.md). Era 2 ("sobrio") dal primo deploy live. leverage: 3 rebalance: 1D poll_seconds: 60 # 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 # fisso, SOLO per statistica in vista di future implementazioni reali. NB: il portafoglio # live diverge ora dal PORT06 canonico (17 sleeve) -> DD reale ~5.35% vs 3.96% validato: # il prezzo di vedere il risultato reale puro (scelta utente). paper_sleeves: [TR01, ROT02, TSM01, XS01] # Frazione di capitale-sleeve per posizione (canonico backtest = 0.15). # 0.5 con leva 2x = 100% della fetta impegnata quando in posizione (max impiego # dei 2K senza debito di margine). NB: il DD scala ~lineare (~×3.3 vs validato). position_size: 0.5 # Override per-famiglia (chiave = weighting.family_of). PAIRS: famiglia SENZA # stop, validata a esposizione 0.45 (pos 0.15 lev 3) — il gate 2026-06-07 # (pairspos_port06_impact.py) la fisso' a 0.40 di esposizione (0.20 × lev 2): # PORT06 OOS DD 3.40→1.26%, costo OOS Sharpe 9.05→8.43. Col passaggio a lev 3 # (2026-06-12) il pos scende a 0.13 per CONSERVARE la stessa esposizione # (0.13×3≈0.40): la leva accelera le famiglie con stop, non i pairs no-stop. position_size_family: {PAIRS: 0.13} # Esecuzione REALE su Deribit testnet, in SHADOW (sim + reale in parallelo). # I 7 single-leg con TP/SL in metadata: 6 fade (MR01/MR02/MR07 x BTC/ETH) + # DIP01 BTC (attivato 2026-06-04: stesso wiring StrategyWorker, TP limit resting # incluso). Ordini sui LINEARI USDC (payoff lineare = matematica del backtest; # fee/PnL in USDC). Gli altri sleeve (pairs/rotation/tsmom/shape) restano # simulati: pairs richiede executor a 2 gambe, shape non ha TP (orizzonte puro). execution: enabled: true # SH01 aggiunto 2026-06-08: e' il diversificatore piu' decorrelato (corr 0.07, # senza di lui il DD del portafoglio sale 3.96->5.35%). Single-leg, esce a # orizzonte H=12 (no TP/SL) -> _place_real_tp no-op, _real_close market reduce-only; # disaster-bracket on-book = unica protezione di coda durante outage. sleeves: [MR01, MR02, MR07, DIP01, SH01] instruments: BTC: BTC_USDC-PERPETUAL ETH: ETH_USDC-PERPETUAL LTC: LTC_USDC-PERPETUAL ADA: ADA_USDC-PERPETUAL SOL: SOL_USDC-PERPETUAL # Esecuzione REALE a 2 gambe per i pairs (PairsExecutionClient, 2026-06-08). # Long A / short B sui lineari USDC, con unwind se una gamba sola filla (leg-risk). # ATTIVATO 2026-06-08 a conto flat (smoke testnet end-to-end verificato). pairs_enabled: true # Disaster-bracket on-book (2026-06-07): STOP_MARKET reduce-only a ~-30% # dall'ingresso, piazzato a ogni REAL_OPEN e cancellato alla chiusura. # Assicurazione per gli outage (runner fermo = exit non valutati); in # operativita' normale non scatta mai -> 0 costo Sharpe. 0 = disattivo. disaster_sl_pct: 0.30 # REAL-TRUTH (2026-06-10, scelta utente): il ledger `capital` degli sleeve # eseguiti si aggiorna col PnL dei FILL REALI (fee reali incluse) — il sim # resta solo diagnostica nel log CLOSE (pnl_source/sim_pnl/real_pnl). # Fallback al sim SOLO se il trade reale non e' mai esistito/fillato # (REAL_OPEN_FAIL): flag pnl_source=sim_fallback nel log. Cosi' equity, # ribilanci e sizing derivano dai soldi veri sul conto, non dal sim. real_truth: true