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
+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