diff --git a/src/live/dashboard.py b/src/live/dashboard.py index 9b4ff69..ac08c01 100644 --- a/src/live/dashboard.py +++ b/src/live/dashboard.py @@ -251,6 +251,22 @@ def html(): f"TP01 target: {bits}
→ per gli ordini reali: uv run python scripts/live/live_trend.py (host)") else: shadow_html = "non disponibile" + (f" — {sh['error']}" if sh and sh.get('error') else "") + + # Taglia del book LIVE: letta dal conto e dalla config, MAI cablata. Il testo cablato + # "capitale reale ~$600 / cap $300" e' diventato falso al primo deposito (2026-07-26). + try: + import json as _json + from src.live.book import CONFIG as _CFG + _c = _json.loads(_CFG.read_text()) + _eq = (sh or {}).get("real_equity") + _cap_txt = (f"cap ${_eq * float(_c['max_notional_per_asset_frac']):,.0f}/asset" + if _eq and _c.get("max_notional_per_asset_frac") + else f"cap ${float(_c.get('max_notional_per_asset_usd', 300)):,.0f}/asset") + _eq_txt = f"capitale reale ${_eq:,.2f}" if _eq else "capitale reale non leggibile" + live_size_html = (f"{_eq_txt} · {_cap_txt} · disaster-SL on-book " + f"−{float(_c.get('disaster_sl_pct', 0.30))*100:.0f}%") + except Exception: + live_size_html = "taglia non leggibile" trows = "" for t in d.get("trades", []): cls = "g" if t["action"] == "ENTRY" else "r" @@ -306,7 +322,7 @@ th{{color:#8a93a0;font-weight:500}}.y{{display:inline-block;background:#161b22;b
① LIVE — Deribit mainnet (conto reale, sola lettura)
{_alerts_banner(d.get("book_alerts") or {})}
Shadow TP01 (cosa farebbe ORA sul conto reale, nessun ordine inviato):
{shadow_html}
-

Solo TP01 e' armato live (cap $300/asset · disaster-SL on-book −30% · capitale reale ≈ $600). SKH01/XS01/VRP01 = paper/stat-mode. Lo "Shadow" mostra il target reale ma NON invia ordini.

+

Il book LIVE e' TP01+SKH01 nettati ({live_size_html}). XS01/VRP01 = paper/stat-mode. Lo "Shadow" mostra il target reale ma NON invia ordini.

② TRADES ESEGUITI (reali) + frequenza operativa
Frequenza operativa (contata sui dati certificati, non stimata):
{freq_html}