Phase 0: project skeleton
- pyproject.toml with uv, deps for runtime + gui + backtest + dev - ruff/mypy strict config, pre-commit hooks for ruff/mypy/pytest - src/cerbero_bite/ layout with empty modules ready for Phase 1+ - structlog JSONL logger with daily rotation - click CLI with placeholder subcommands (status, start, kill-switch, gui, replay, config hash, audit verify) - 6 smoke tests passing, mypy --strict clean, ruff clean Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# 00 — Overview
|
||||
|
||||
## Obiettivo
|
||||
|
||||
Eseguire in modo sistematico, deterministico e disciplinato la strategia
|
||||
**Cerberus Bite** — credit spread su opzioni Ethereum su Deribit con
|
||||
gestione attiva — minimizzando l'errore umano e rispettando i cap di
|
||||
rischio definiti.
|
||||
|
||||
## Perché senza LLM
|
||||
|
||||
La strategia è **completamente codificabile in regole**. Non c'è alcuna
|
||||
componente di interpretazione semantica del mercato che richieda un
|
||||
modello linguistico. Tutte le decisioni del decision loop sono
|
||||
matematiche o booleane:
|
||||
|
||||
- "il mark price dello spread è ≤ 50% del credito iniziale?" — confronto numerico
|
||||
- "DVOL corrente è ≥ DVOL all'apertura + 10?" — confronto numerico
|
||||
- "delta della short put ha superato 0.30 in valore assoluto?" — confronto numerico
|
||||
- "sono trascorse 11 giorni da apertura?" — confronto numerico
|
||||
|
||||
L'introduzione di un LLM in questo loop introdurrebbe:
|
||||
|
||||
- non determinismo (stesso input → output diversi)
|
||||
- latenza non controllata
|
||||
- costi ricorrenti senza valore aggiunto
|
||||
- difficoltà di test e di audit
|
||||
- rischio di hallucination su dati di mercato
|
||||
|
||||
Il LLM (Milito) resta nel ruolo di **consulente offline**: aggiorna le
|
||||
regole quando l'evidenza statistica lo richiede, riceve dati post-trade
|
||||
per imparare, ma **non sta nel loop di esecuzione**.
|
||||
|
||||
## Confine del sistema
|
||||
|
||||
### Cosa fa Cerbero Bite
|
||||
|
||||
1. Legge dati di mercato dagli MCP (Deribit, Hyperliquid, sentiment, macro).
|
||||
2. Valuta condizioni di entrata su finestra temporale fissa (settimanale).
|
||||
3. Calcola la struttura ottimale dello spread secondo le regole.
|
||||
4. Verifica liquidità, cap di rischio, calendar macro.
|
||||
5. Calcola sizing in contratti.
|
||||
6. Costruisce la proposta di trade e la inoltra ad Adriano (Telegram).
|
||||
7. Su conferma di Adriano, invia istruzione a Cerbero core.
|
||||
8. Persiste lo stato della posizione (entry DVOL, credit, strikes, ecc.).
|
||||
9. Monitora ogni 12 ore le posizioni aperte e applica le regole di uscita.
|
||||
10. Su trigger di uscita, propone la chiusura ad Adriano e poi a Cerbero core.
|
||||
11. Logga ogni evento per audit e per il successivo aggiornamento Kelly.
|
||||
|
||||
### Cosa NON fa
|
||||
|
||||
- Non esegue ordini direttamente sul broker.
|
||||
- Non aggiorna autonomamente le proprie regole o i parametri.
|
||||
- Non interpreta news o sentiment in modo qualitativo.
|
||||
- Non sceglie un sottostante diverso da ETH (per ora).
|
||||
- Non applica strategie di rolling (regola hard della strategia).
|
||||
- Non considera setup intraday o eventi a frequenza inferiore alle 12 ore.
|
||||
|
||||
## Stakeholder
|
||||
|
||||
| Attore | Ruolo |
|
||||
|---|---|
|
||||
| Adriano | Owner del capitale, decisore finale, riceve report |
|
||||
| Cerbero Bite | Rule engine deterministico (questo progetto) |
|
||||
| Cerbero core | Motore di esecuzione ordini sul broker |
|
||||
| Milito | Consulente offline (LLM), aggiorna regole su evidenza |
|
||||
| Cerbero_Brain | Wiki tecnica condivisa con Milito (ricerca lezioni) |
|
||||
|
||||
## Vincoli ereditati
|
||||
|
||||
- **Cap Cerbero v4** (vedi `Cerbero_Office/CLAUDE.md`):
|
||||
- Max 200 EUR per singolo trade
|
||||
- Max 1.000 EUR di impegno totale aperto
|
||||
- Max 4 posizioni concorrenti
|
||||
- Max 6 trade per giorno
|
||||
- Stop trading se perdita giornaliera > 3% equity
|
||||
- No vendita vega 24h prima di FOMC, CPI, NFP
|
||||
|
||||
- **Hard Prohibitions** (non aggirabili nemmeno con override Adriano):
|
||||
- Mai opzioni nude
|
||||
- Mai leva > 3x sui perp (irrilevante per Bite, ma resta valido)
|
||||
- Mai short premium senza SL on-exchange dove tecnicamente possibile
|
||||
|
||||
## Metriche di successo a 12 mesi
|
||||
|
||||
Soglie minime sotto le quali il sistema va riesaminato:
|
||||
|
||||
| Metrica | Target | Soglia di allarme |
|
||||
|---|---|---|
|
||||
| Win rate | ≥ 75% | < 65% |
|
||||
| CAGR (capitale operativo) | ≥ 30% | < 10% |
|
||||
| Drawdown massimo | ≤ 25% | > 35% |
|
||||
| Sharpe ratio (annualizzato) | ≥ 0.8 | < 0.4 |
|
||||
| Numero di violazioni di regole | 0 | ≥ 1 (incident review) |
|
||||
| Errori di stato (posizioni desincronizzate) | 0 | ≥ 1 (kill switch + fix) |
|
||||
|
||||
I risultati sono confrontati a fine anno con la simulazione Monte Carlo
|
||||
del documento `Cerbero_Office/NewStrategy/analisi_dai_storici/
|
||||
analisi-montecarlo-kelly.md`.
|
||||
|
||||
## Glossario rapido
|
||||
|
||||
- **DVOL**: indice di volatilità implicita ETH calcolato da Deribit, analogo al VIX per S&P 500.
|
||||
- **Bull Put Spread**: vendita di una put OTM e acquisto di una put più OTM come protezione, su stesso sottostante e stessa scadenza. Incassi credito netto.
|
||||
- **DTE**: Days To Expiration, giorni alla scadenza dell'opzione.
|
||||
- **Quarter Kelly**: 25% della frazione di Kelly piena, sizing professionale standard. In questa strategia coincide con il 13% del capitale corrente.
|
||||
- **Vol stop**: regola di uscita che chiude la posizione se la volatilità implicita esplode oltre una soglia rispetto all'entry.
|
||||
- **Combo order**: ordine atomico su Deribit che apre/chiude entrambe le gambe dello spread simultaneamente, eliminando il leg risk.
|
||||
Reference in New Issue
Block a user