Files
PythagorasGoal/Old/docs/diary/2026-06-13-dashboard.md
T
Adriano Dal Pastro 14522262e6 chore(reset): v2.0.0 — storico certificato Deribit mainnet, ripartenza pulita
Reset del progetto su fondamenta verificate dopo la scoperta che l'intera
libreria "validata OOS" era artefatto di feed contaminato (print fantasma del
feed Cerbero TESTNET + storico Binance/USDT).

- Storico ricostruito da Deribit MAINNET (ccxt pubblico, tokenless) e
  CERTIFICATO (certify_feed.py): BTC/ETH puliti su TUTTA la storia
  (mediana 2-6 bps vs Coinbase USD), integrita' OHLC + coerenza resample
  (maxΔ 0.00) + cross-venue OK. Alt esclusi (illiquidi/divergenti: LTC/DOGE
  50-82% barre flat; XRP/BNB non certificabili).
- Verdetto sul feed pulito: FADE / PAIRS / XS01 / TSM01 morti (ogni
  portafoglio Sharpe -2.3..-3.0, DD ~40%); solo SH01 e frammenti HONEST
  con segnale residuo, da ri-validare in isolamento.
- Cleanup "restart pulito": strategie, stack live (src/live, src/portfolio,
  runner/executor, yml, docker), ~100 script ricerca/gate, waste/games/
  portfolios, dati non certificati + cache e 60+ diari -> archiviati in Old/
  (preservati, non cancellati). Diario consolidato in un unico documento.
- Skeleton ricerca tenuto: Strategy ABC + indicatori + src/fractal +
  src/backtest/engine + load_data; tool dati certificati (rebuild_history,
  certify_feed, audit_feed, multi_source_check).
- Universo dati ATTIVO: solo BTC/ETH (5m/15m/1h); guardrail fisico
  (load_data su alt -> FileNotFoundError). Esecuzione DISABILITATA, conto flat.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 15:20:59 +00:00

1.9 KiB

2026-06-13 — Dashboard web PORT06 (stato live + PnL + grafici + trade)

Richiesta utente: frontend per visualizzare lo stato con PnL totale e per-strategia, grafici, e liste trade (attivi in tempo reale + chiusi).

Cosa

src/live/dashboard.py — server stdlib http.server (zero nuove dipendenze), legge i file data/ e serve:

  • GET /api/state → JSON con tutto lo stato calcolato
  • GET / → single-page HTML (vanilla JS, polling ogni 5s)

Contenuto della pagina:

  • KPI: equity, PnL totale (€ e %), max DD, peak
  • Grafico equity (Chart.js da CDN, fallback testuale se offline) dalla equity.jsonl del ledger (downsample a 400 punti)
  • PnL per strategia (barre verdi/rosse): realizzato netto fee = Σ pnl reali dai CLOSE (REAL-TRUTH), n trade, win-rate, capitale; tag paper per i multi-asset non eseguiti, •aperta se in posizione
  • Trade attivi in tempo reale: lato, entry, mark corrente (Cerbero best-effort, cache 20s), PnL non realizzato (€ e %, da real_entry_notional), barre/max_bars, distanza al TP, età dello status (⚠ se >15min = stantio)
  • Trade chiusi (ultimi 50): ora, strategia, motivo, PnL reale, sim, esito

Deploy

Servizio docker-compose dashboard (stessa immagine del runner, monta gli stessi data/, porta 8787), restart: unless-stopped + healthcheck sull'API. Accesso: http://<host>:8787. Nessuna auth → solo rete interna/VPN, non esporre pubblicamente. Avvio: docker compose up -d --build dashboard (il runner non viene toccato).

uv run python -m src.live.dashboard --port 8787   # anche standalone su host

Note

  • Il PnL per-strategia usa il PnL REALE (real_truth), coerente col report orario.
  • I 6 fade 1h ritirati dallo swap restano in lista (hanno storico CLOSE): flat, mostrano il loro PnL realizzato storico accanto ai gemelli 15m attivi.
  • Unrealized € sui pairs non mostrato (posizione a 2 gambe, z-based) → "pairs (z)".