* docs/11-gui-streamlit.md — replaces the original spec with what was actually built: implementation status table, real page filenames (1_Status, 2_Audit, 3_Equity, 4_History, 5_Position), per-page inventory of implemented vs deferred sections, GUI ↔ engine table showing arm_kill/disarm_kill via manual_actions and the not_supported markers for force_close + approve/reject_proposal, consumer signature with cron */1, lock model clarified (no GUI lockfile), DoD updated with current state. * docs/05-data-model.md — manual_actions is no longer "pianificata": populated by gui/data_layer.py, drained by the manual_actions job; per-kind status table (arm/disarm OK, others not_supported). * docs/09-development-roadmap.md — Phase 4.5 marked implemented with per-task ✅/⏳ markers for the deferred items (auto-refresh, AppTest, force-close hook). * docs/06-operational-flow.md — adds Flusso 5b describing the manual_actions consumer pattern (enqueue → KillSwitch transition → audit log linkage). 360/360 tests still pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
8.9 KiB
09 — Development Roadmap
Sviluppo per fasi, ognuna con obiettivo chiaro, criteri di completamento e dipendenze. La sequenza è stretta: ogni fase aggiunge valore e si costruisce sulla precedente.
Fase 0 — Setup (3-5 giorni)
Obiettivo: scheletro di progetto eseguibile, niente logica di business.
Tasks:
git init+ branchmain+.gitignore(escludedata/,.lockfile,*.local.yaml).pyproject.tomlconuv, deps base: pydantic, sqlalchemy, apscheduler, mcp, rich (CLI), pytest, mypy, ruff.- Layout cartelle come da
02-architecture.md. - Logger strutturato con
structlog, output JSONL su file. __main__.pycon CLI Click: comandistart,stop,status,dry-run,kill-switch,replay.- Pre-commit hooks installati.
tests/conftest.pycon fixtures di base.- Hello-world test che valida l'avvio dell'engine senza nessun tool MCP reale (tutti fake).
Definition of Done:
uv run cerbero-bite statusstampa "engine idle, kill_switch=0"uv run pytestpassa con almeno 5 test trivialimypy --strict src/passa- Repository committato
Fase 1 — Core algorithms (7-10 giorni)
Obiettivo: i 7 algoritmi puri implementati, con test al 100%.
Tasks (ordine TDD):
entry_validator.validate_entry+compute_biasliquidity_gate.checksizing_engine.compute_contractscombo_builder.select_strikes+buildgreeks_aggregator.aggregateexit_decision.evaluate(questo è il più complesso, due giornate dedicate)kelly_recalibration.recalibrate
Per ogni modulo:
- scrivere test che falliscono
- implementare la versione minima che li passa
- aggiungere property test con hypothesis
- code review (skill
superpowers:requesting-code-review)
Definition of Done:
- 100% statement+branch coverage su
core/ - Property test per ogni invariante documentata
- 0 errori
mypy --strict - Tutti i test obbligatori in
08-testing-validation.mdpresenti
Fase 2 — Persistenza e safety (5-7 giorni)
Obiettivo: state machine + risk control implementati.
Tasks:
- Schema SQLite + migration 0001
state/repository.pycon CRUD typed- Audit log con hash chain
safety/kill_switch.pycon tutti i trigger automaticisafety/dead_man.shscript shell separato- Backup utility + retention policy
- CLI
audit verify,kill-switch arm/disarm,state inspect
Definition of Done:
- Coverage
state/≥ 90%,safety/100% - Test di corruzione SQLite e hash chain passano
- Recovery test: kill engine mid-write, restart, stato consistente
Fase 3 — MCP clients (4-6 giorni)
Obiettivo: wrapper tipizzati per tutti i server MCP usati.
Tasks (parallelizzabili tra collaboratori se ci fossero):
clients/_base.py: McpClient abstract + retry/timeoutclients/deribit.pycon tutti i metodi documentaticlients/hyperliquid.pyclients/macro.pyclients/sentiment.pyclients/portfolio.pyclients/memory.pyclients/telegram.py(anche listener webhook per conferme)clients/brain_bridge.py
Per ogni client: fake corrispondente in tests/fixtures/fakes/.
Definition of Done:
- Coverage
clients/≥ 80% - Fake test scenari happy/timeout/anomaly per ognuno
cerbero-bite pinglista lo stato di ogni MCP
Fase 4 — Orchestrator e flussi (5-7 giorni)
Obiettivo: i flussi di 06-operational-flow.md cablati.
Tasks:
runtime/orchestrator.py— composizione core + clients + stateruntime/scheduler.py— APScheduler con i cron documentatiruntime/monitoring.py— loop ogni 12hruntime/alert_manager.py— escalation policy
Test integration su scenari completi (vedi 08-testing-validation.md):
- weekly open happy path
- monitor profit take
- monitor vol stop
- recovery dopo crash
- kill switch blocca entry
Definition of Done:
- Tutti gli integration test passano
- Engine può girare in
--dry-runper 24h senza errori - I log sono leggibili e completi
Fase 4.5 — GUI Streamlit (4 giorni) ✅ implementata
Obiettivo: dashboard locale per osservazione e azioni manuali. Spec
dettagliata in 11-gui-streamlit.md.
Implementata in quattro round (A–D):
- ✅
gui/main.py+ sidebar nav (auto-refresh attivo non cablato; il re-render Streamlit è sufficiente per la frequenza tipica) - ✅ Pagina Status (engine state, kill switch panel con typed confirmation, audit anchor, open positions)
- ✅ Pagina Equity (cumulative P&L, drawdown, P&L distribution per close reason, per-month stats)
- ✅ Pagina Position (legs from entry snapshot, payoff plotly per bull_put/bear_call con annotazioni, decision history) — greche live e force-close differiti
- ✅ Pagina History (filtri window/reason/winners-losers, KPI strip, CSV export)
- ✅ Pagina Audit (live log stream, chain verify, event filter)
- ✅ Consumer
runtime/manual_actions_consumer.pycon job APScheduler*/1per arm/disarm (force_close =not_supportedper ora) - ⏳ Test integration con
streamlit.testing.v1.AppTest
Definition of Done — stato:
- ✅
cerbero-bite guilancia la dashboard su127.0.0.1:8765 - ✅ Tutte le 5 pagine raggiungibili e popolate
- ✅ Disarm da GUI loggato in audit chain (
source="manual_gui") ed effettivo entro ~1 minuto - ⏳ Force-close da GUI: l'enqueue funziona ma l'orchestrator deve
ancora esporre
handle_force_close - ⏳ Test integration AppTest: non scritti
Fase 5 — Reporting e UX (3-5 giorni)
Obiettivo: report Telegram puliti, daily digest, replay command.
Tasks:
reporting/pre_trade.py— testo Markdown con sezionireporting/exit_proposal.pyreporting/daily_digest.pyreporting/monthly_report.py- CLI
cerbero-bite replayper backtest - CLI
cerbero-bite recalibrate-kelly --dry-run
Definition of Done:
- Tre messaggi Telegram esempio committati come fixtures
- Replay command funziona su 30 giorni di dati storici simulati
Fase 6 — Golden tests e backtest (3-4 giorni)
Obiettivo: suite di scenari golden + replay storico.
Tasks:
- Almeno 10 scenari golden coprenti tutti i path principali
- Storia ETH spot + DVOL caricata da CSV in
tests/data/historical/ - Confronto P&L replay vs simulazione Monte Carlo del documento
Definition of Done:
- Replay 2024-01 → 2026-04 senza errori
- Equity curve riprodotta con stesso seed numerico
- Differenza con MC entro intervalli attesi
Fase 7 — Paper trading (90 giorni)
Obiettivo: validazione su segnali reali ma niente capitale.
Setup:
- Engine live in
--dry-run - Telegram alert reali
- Adriano replica trade su testnet Deribit o paper book per misurare slippage reale
Metriche da raccogliere:
- Numero proposte settimanali emesse
- Quante passano i filtri
- Win rate, avg P&L paper
- Discrepanze tra mid stimato e fill reale (slippage)
- Errori di sistema, kill switch armati
Definition of Done:
- ≥ 30 trade paper concluso
- 0 errori critici
- Win rate ≥ 70% (paper ETH credit spread baseline atteso)
- Sign-off Adriano via audit chain
Fase 8 — Soft launch (30 giorni live, cap dimezzato)
Obiettivo: primi trade reali con capitale ridotto.
Setup:
- Cap 100 EUR per trade, 500 EUR engagement totale
- Solo Bull Put Spread (no IC) per ridurre superficie di rischio
- Daily digest manuale ogni mattina con Adriano
Metriche di passaggio a full:
- ≥ 10 trade reali conclusi
- P&L coerente con Monte Carlo (entro 1 sigma)
- 0 incidenti operativi
- Spread fill mediano ≤ 5% slippage rispetto al mid stimato
Fase 9 — Full launch
Obiettivo: operatività regime.
- Cap pieno: 200 EUR per trade, 1.000 EUR engagement
- Iron Condor abilitato (regime laterale)
- Mensile review Kelly + report Brain-Bridge
- Ogni 6 mesi review completa con Milito
Roadmap futura (post-launch, idee)
- Sottostante BTC: stessa strategia, parametri ricalibrati. Richiede fase di paper-trading dedicata.
- Multi-exchange execution: alternativa a Deribit (Bybit options, Binance options) per ridurre counterparty risk.
- Dashboard locale: pagina HTML statica generata dai log per visualizzare equity curve e trade list senza tool esterni.
- Auto Kelly update: dopo 100 trade reali, valutare l'auto-update con sand-box di review Milito.
- Promozione MCP options-engine: estrarre
core/come server MCP dedicato, riusabile da Cerbero core stesso e da Milito.
Stima cumulativa
| Fase | Giorni di lavoro | Calendar (con review) |
|---|---|---|
| 0 — Setup | 3-5 | 1 settimana |
| 1 — Core | 7-10 | 2 settimane |
| 2 — State & Safety | 5-7 | 1.5 settimane |
| 3 — Clients | 4-6 | 1 settimana |
| 4 — Orchestrator | 5-7 | 1.5 settimane |
| 4.5 — GUI Streamlit | 4 | 1 settimana |
| 5 — Reporting | 3-5 | 1 settimana |
| 6 — Golden + Backtest | 3-4 | 1 settimana |
| Totale fino a paper-ready | 34-48 | ~10 settimane |
| 7 — Paper trading | — | 12-13 settimane |
| 8 — Soft launch | — | 4-5 settimane |
| 9 — Full launch | — | ongoing |
Tempo a regime: ~6 mesi dal kickoff.