feat(portfolio): portfolios.yml + load_active_portfolio (override operativi)
This commit is contained in:
@@ -77,3 +77,18 @@ class Portfolio:
|
||||
risk = {sid: float(rc[k] / pv * 100) if pv > 0 else 0.0
|
||||
for k, sid in enumerate(self.sleeve_ids)}
|
||||
return PortfolioResult(self.code, w, full, oos, yearly_returns(port_dr), risk)
|
||||
|
||||
|
||||
def load_active_portfolio(config_path) -> "Portfolio":
|
||||
"""Carica il portafoglio attivo da portfolios.yml applicando gli override."""
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
from scripts.portfolios._defs import PORTFOLIOS
|
||||
|
||||
cfg = yaml.safe_load(Path(config_path).read_text())
|
||||
p = PORTFOLIOS[cfg["active"]]
|
||||
ov = cfg.get("overrides", {})
|
||||
for k in ("total_capital", "weighting", "caps", "leverage", "rebalance", "vol_lookback"):
|
||||
if k in ov and ov[k] is not None:
|
||||
setattr(p, k, ov[k])
|
||||
return p
|
||||
|
||||
Reference in New Issue
Block a user