Files
Cerbero-Bite/docs/00-overview.md
T
root 6ff021fbf4 feat(strategy): abbandono gating settimanale — entry daily 24/7
Crypto opera 24/7: la cadenza settimanale lunedì-only era un retaggio
TradFi senza giustificazione. La nuova cadenza è giornaliera (cron
0 14 * * *), con i gate quantitativi a decidere se entrare o saltare.

Cambiamenti principali:

* runtime/orchestrator.py — _CRON_ENTRY 0 14 * * * (era MON)
* runtime/auto_pause.py — pause_until(days=) (era weeks=); minimo
  clamp 1 giorno (era 1 settimana)
* core/backtest.py — MondayPick→DailyPick, monday_picks→daily_picks
  (1 pick per calendar-day all'ora target); Sharpe annualization su
  ~120 trade/anno (era 52)
* config/schema.py — default cron daily; max_concurrent_positions 1→5;
  AutoPauseConfig.pause_weeks→pause_days, default 14
* runtime/option_chain_snapshot_cycle.py + orchestrator — cron */15
  per accumulo continuo dataset di backtest empirico

Strategy yamls (config_version 1.3.0 → 1.4.0, hash rigenerati):

* strategy.yaml — max_concurrent 1→5, cap_aggregate coerente
* strategy.aggressiva.yaml — max_concurrent 2→8, cap_aggregate
  3200→6400, max_contracts_per_trade invariato a 16
* strategy.conservativa.yaml — max_concurrent 1→3
* tutti — pause_weeks→pause_days: 14

GUI (pages/7_📚_Strategia.py):

* slider Trade/anno: range 20-200 (era 8-30), default 110, help
  riallineato sulla math 365 candidature × pass-rate 30-40%
* card profili: versione letta dinamicamente da config_version invece
  che hard-coded "v1.2.0"
* warning "entrambi perdono soldi" ora valuta i P/L effettivi
  (cons['annual_pl'], aggr['annual_pl']) invece del win_rate grezzo;
  aggiunto stato intermedio quando solo conservativo è in perdita

Tests (450/450 passati):

* test_auto_pause: pause_days, clamp ≥1 giorno
* test_backtest: rinomina + ridisegno daily picks (assert su
  calendar-day dedupe e hour filter)
* test_sizing_engine: other_open_positions=5 per cap default
* test_config_loader: version 1.4.0

Docs (README + 9 file in docs/) — tutti i riferimenti weekly/lunedì
allineati a daily/24-7, volume option_chain ricalcolato per cron
*/15 (~1.1 MB/giorno, ~400 MB/anno).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 16:21:16 +00:00

109 lines
4.7 KiB
Markdown

# 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 (giornaliera, 14:00 UTC; crypto è 24/7).
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.