Files
PythagorasGoal/Old/docs/diary/2026-06-13-ledger-vs-backtest-report.md
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

2.5 KiB

2026-06-13 — Report ricorrente LEDGER REALE vs BACKTEST (il gate per scalare)

Perché

Domanda dell'utente: "come cresco il capitale a 12k". Risposta: il prerequisito prima di mettere soldi veri è che il ledger reale combaci col backtest — soprattutto lo slippage del 15m appena deployato. Questo report rende quel gate un dato osservabile, non un'opinione.

Insight chiave: per gli sleeve eseguiti (6 fade 15m, DIP01, 6 pairs, SH01) il sim del worker == backtest canonico PER COSTRUZIONE (validato). Quindi "reale vs backtest" = "reale vs sim" = la fuga di esecuzione: slippage + fee reali vs assunte + effetti netting/phantom/sim_fallback.

Cosa misura

scripts/analysis/ledger_vs_backtest.py (read-only: solo trades.jsonl + status.json, nessuna rete → affidabile in cron):

  • PnL realizzato sim vs reale (Σ e per-trade) → LEAKAGE € e per-trade (bottom line)
  • slippage ingressi (REAL_OPEN) e uscite-a-mercato (REAL_CLOSE; escluse le uscite da TP resting, fill maker al livello = no slippage)
  • fee reali vs assunte (0.10% RT)
  • trade sim_fallback (reale mai eseguito/fillato) = quota NON coperta dal reale
  • ledger per-sleeve: real_capital vs capital (sim)
  • verdetto 🟢/🟡/🔴: <10 trade = campione piccolo; leakage basso+slippage ≤15bps = verde (si può pensare a scalare); slippage >40bps = rosso (edge erode, NON scalare)

Clean-start (importante)

Una finestra mobile pura includerebbe l'incidente testnet pre-fix: a 7g il report dà sim +82 vs reale +5 (🔴) — ma è gonfiato dai +4% FANTASMA che il sim bookava e il reale no, prima di TP_PHANTOM (v1.1.23), netting (v1.1.25) e ribilancio-conservativo (v1.1.31). Lo scheduler usa --since 2026-06-13 → accumula SOLO dati post-fix, e diventa statisticamente significativo coi giorni. Finestra pulita oggi: 1 trade, leakage +0.07, slippage ingresso 12-29 bps.

Scheduling

Cron host (come reconcile/hourly_report), giornaliero 08:30 UTC: ledger_vs_backtest.py --since 2026-06-13 --telegram → Telegram + log in ~/port06_ledger_vs_backtest.log. Invio verificato.

Come usarlo

Quando il campione supera ~10-20 trade reali e il verdetto è 🟢 stabile per qualche giorno (leakage per-trade piccolo, slippage medio ≤15 bps), allora il 15m regge l'esecuzione e si può passare da testnet a piccolo reale → poi scalare. Se resta 🔴/🟡, l'edge si erode sui fill e NON va scalato: prima si capisce dove perde (slippage ingressi? uscite a mercato? sim_fallback frequenti?).