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
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.