feat(live): executor a 2 gambe per i pairs (PairsExecutionClient, shadow) — pronto, spento
PairsExecutionClient (compone ExecutionClient): open_pair (2 market long A/short B, verifica per-gamba, LEG-RISK unwind se una sola filla), close_pair (2 reduce-only via close_amount, MAI close_position), register_contract (fetch spec USDC). Spec LTC/ADA/SOL aggiunti. PairsWorker: ledger reale shadow a 2 gambe resume-safe (_real_open_pair/ _real_close_pair, PnL per gamba dir A=+d/B=-d, doppio arrotondamento riportato). Runner: pairs_executor gated su execution.pairs_enabled (false di default). Validazione: test 92/92 (open/close, leg-risk unwind, resume) + smoke testnet end-to-end (open 2 gambe verificate, close reduce-only, PnL reale -0.039 vs sim -0.036, conto flat). Smoke ora aborta se ci sono posizioni di produzione + usa solo close_amount. NB incidente testnet documentato (diario): pulizia manuale con close_position ha flattato le quote shadow dei fade sul conto condiviso -> auto-riconciliazione al prossimo close. Lezione: mai close_position su strumenti condivisi. pairs_enabled resta FALSE: accendere con finestra a conto flat + osservazione. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+6
-5
@@ -5,11 +5,12 @@
|
||||
|
||||
## Esecuzione reale — i pezzi grossi mancanti
|
||||
|
||||
- [ ] **Executor a 2 gambe per i PAIRS** (`PairsExecutionClient`). È la fetta reale-non-eseguita
|
||||
più grande (29% del portafoglio). Serve: piazzamento il più possibile atomico delle 2 gambe,
|
||||
fallback di **unwind** se una sola filla (leg-risk), dimensionamento congiunto col doppio
|
||||
arrotondamento ai lotti minimi (BTC/ETH/LTC/ADA/SOL hanno step diversi), riconciliazione e
|
||||
chiusura a 2 gambe. Progetto a sé, il più impegnativo rimasto.
|
||||
- [x] ~~Executor a 2 gambe per i PAIRS~~ — FATTO (2026-06-08): `PairsExecutionClient`
|
||||
(open/close 2 gambe, leg-risk unwind, ledger shadow resume-safe). Test 92/92 + smoke
|
||||
testnet end-to-end OK. **Capability PRONTA ma SPENTA** (`pairs_enabled: false`).
|
||||
Diario `docs/diary/2026-06-08-pairs-executor.md`.
|
||||
- [ ] **Accendere `pairs_enabled: true`** quando c'è una finestra a conto flat + osservazione.
|
||||
Poi monitorare REAL_OPEN_PAIR/REAL_CLOSE_PAIR e lo sbilanciamento notional fra gambe.
|
||||
- [ ] **SH01 in reale**: oggi escluso perché non ha TP/SL (esce a orizzonte H=12) → manca il livello
|
||||
a cui agganciare il limit resting + disaster-bracket. Due strade: (a) nuovo percorso
|
||||
"market reduce-only a scadenza orizzonte" nell'executor; (b) valutare TP/SL su SH01 — MA la
|
||||
|
||||
Reference in New Issue
Block a user