feat(live): position_size configurabile da overrides (0.5 = max impiego dei 2K senza debito margine)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-06-03 18:01:30 +00:00
parent 092e809946
commit 74c79aa6c1
2 changed files with 9 additions and 0 deletions
+4
View File
@@ -8,6 +8,10 @@ overrides:
leverage: 2 # sobrio per il live reale
rebalance: 1D
poll_seconds: 60
# Frazione di capitale-sleeve per posizione (canonico backtest = 0.15).
# 0.5 con leva 2x = 100% della fetta impegnata quando in posizione (max impiego
# dei 2K senza debito di margine). NB: il DD scala ~lineare (~×3.3 vs validato).
position_size: 0.5
# Esecuzione REALE su Deribit testnet, in SHADOW (sim + reale in parallelo).
# Solo i 6 fade single-leg (MR01/MR02/MR07 x BTC/ETH); ordini sui LINEARI USDC
# (payoff lineare = matematica del backtest; fee/PnL in USDC). Gli altri sleeve
+5
View File
@@ -148,6 +148,10 @@ def run(config_path: str = "portfolios.yml"):
p: Portfolio = load_active_portfolio(config_path)
_ov = (yaml.safe_load(Path(config_path).read_text()) or {}).get("overrides", {})
poll = int(_ov.get("poll_seconds", 60))
# Frazione di capitale-sleeve impegnata per posizione (default 0.15 = canonico backtest).
# Con leva 2x: notional = capital * position_size * 2. A 0.5 ogni sleeve in posizione
# impegna il 100% della sua fetta (max impiego senza debito di margine); DD scala ~lineare.
position_size = float(_ov.get("position_size", 0.15))
def _supported(s):
return s.kind in ("pairs",) + _MULTI_KINDS or s.name in _STRAT_MODULE
@@ -188,6 +192,7 @@ def run(config_path: str = "portfolios.yml"):
for s in live_specs:
ex, inst = _exec_for(s)
workers[s.sid] = build_worker_for(s, alloc[s.sid], p.leverage,
position_size=position_size,
executor=ex, exec_instrument=inst)
# lookback (giorni) richiesto per ogni asset = max sui worker che lo usano