feat(live): worker a 2 gambe per i pairs (PR01 market-neutral)

src/live/pairs_worker.py: PairsWorker market-neutral (long A / short B sullo z-score
del log-ratio, exit |z|<=z_exit o max_bars, FEE SU 2 GAMBE = 2*fee_rt*lev, stato
persistente come StrategyWorker). multi_runner: sezione `pairs:` nello YAML, fetch di
entrambe le gambe, tick/status/shutdown; INSTRUMENT_MAP esteso agli alt. strategies.yml:
5 coppie PR01 (config universale n50 z2 zx0.75 mb72).

Validazione (scripts/analysis/validate_worker_pairs.py): replay live bar-per-bar ==
backtest pairs_sim ESATTAMENTE -> ETH/BTC capitale 2.870.429 = 2.870.429, 1754 trade,
win 74.1% identici. Caveat: shortabilita'/liquidita' del perp B sugli alt da verificare
in trading reale. CLAUDE.md / docstring PR01 aggiornati.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-29 09:12:25 +02:00
parent 9a066eb76f
commit 4dc0e77ee5
6 changed files with 391 additions and 10 deletions
+5 -4
View File
@@ -26,10 +26,11 @@ Validazione anti-overfit (netto, fee 0.20% RT/coppia a 2 gambe, leva 3x, OOS = u
- Correlazione con BTC daily ~0.02-0.08 -> market-neutral.
- SCARTATA BNB/ETH: robusta solo coi suoi parametri (overfit), crolla con la universale.
LIMITE OPERATIVO: e' una strategia a 2 gambe (long un perp + short l'altro), il worker
attuale e' single-leg. Per tradarla serve: (a) eseguibilita' short del perp B su
Deribit/Bybit, (b) gestione 2 ordini + fee doppie. Finche' il worker non supporta
2 gambe, PR01 resta validata in backtest ma non wired nel paper trader.
WORKER LIVE: implementato `src/live/pairs_worker.py` (2 gambe, fee doppie, stato
persistente) e wired in `multi_runner` (sezione `pairs:` in strategies.yml). Validato
da `scripts/analysis/validate_worker_pairs.py`: il replay live combacia ESATTAMENTE col
backtest pairs_sim (ETH/BTC: capitale, n.trade e win% identici). Resta da verificare in
trading reale la shortabilita'/liquidita' del perp B sugli alt (LTC/SOL/ADA).
"""
from __future__ import annotations