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:
@@ -8,6 +8,10 @@ overrides:
|
|||||||
leverage: 2 # sobrio per il live reale
|
leverage: 2 # sobrio per il live reale
|
||||||
rebalance: 1D
|
rebalance: 1D
|
||||||
poll_seconds: 60
|
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).
|
# 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
|
# 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
|
# (payoff lineare = matematica del backtest; fee/PnL in USDC). Gli altri sleeve
|
||||||
|
|||||||
@@ -148,6 +148,10 @@ def run(config_path: str = "portfolios.yml"):
|
|||||||
p: Portfolio = load_active_portfolio(config_path)
|
p: Portfolio = load_active_portfolio(config_path)
|
||||||
_ov = (yaml.safe_load(Path(config_path).read_text()) or {}).get("overrides", {})
|
_ov = (yaml.safe_load(Path(config_path).read_text()) or {}).get("overrides", {})
|
||||||
poll = int(_ov.get("poll_seconds", 60))
|
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):
|
def _supported(s):
|
||||||
return s.kind in ("pairs",) + _MULTI_KINDS or s.name in _STRAT_MODULE
|
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:
|
for s in live_specs:
|
||||||
ex, inst = _exec_for(s)
|
ex, inst = _exec_for(s)
|
||||||
workers[s.sid] = build_worker_for(s, alloc[s.sid], p.leverage,
|
workers[s.sid] = build_worker_for(s, alloc[s.sid], p.leverage,
|
||||||
|
position_size=position_size,
|
||||||
executor=ex, exec_instrument=inst)
|
executor=ex, exec_instrument=inst)
|
||||||
|
|
||||||
# lookback (giorni) richiesto per ogni asset = max sui worker che lo usano
|
# lookback (giorni) richiesto per ogni asset = max sui worker che lo usano
|
||||||
|
|||||||
Reference in New Issue
Block a user