portfolio-engine / tests /test_overlay.py
engineportf's picture
Initial Deployment from Local Engine
208fbf8 verified
Raw
History Blame Contribute Delete
1.9 kB
import pandas as pd
from futures_overlay import optimize_futures_overlay
def test_optimize_futures_overlay_returns_empty_when_no_cash():
weights = pd.Series({"SPY": 0.6, "TLT": 0.3, "CASH": 0.0})
betas = pd.Series({"SPY": 1.0, "TLT": 0.2})
cfg = {
"with_futures": True,
"overlay_mode": "beta_hedge",
"futures_universe": ["MES", "ES"],
"futures_safety_multiplier": 3.0,
"futures_margin_headroom": 0.05,
"futures_target_beta": 0.0,
}
result = optimize_futures_overlay(weights, betas, capital=100000.0, cfg=cfg)
assert result.contracts == {}
assert result.margin_used == 0.0
def test_optimize_futures_overlay_preserves_core_weights():
weights = pd.Series({"SPY": 0.6, "TLT": 0.3, "CASH": 0.1})
betas = pd.Series({"SPY": 1.0, "TLT": 0.1})
cfg = {
"with_futures": True,
"overlay_mode": "beta_hedge",
"futures_universe": ["MES", "ES"],
"futures_safety_multiplier": 3.0,
"futures_margin_headroom": 0.05,
"futures_target_beta": 0.0,
}
result = optimize_futures_overlay(weights, betas, capital=100000.0, cfg=cfg)
assert weights["CASH"] == 0.1
assert isinstance(result.contracts, dict)
assert result.overlay_mode == "hedge"
def test_optimize_futures_overlay_respects_margin_headroom():
weights = pd.Series({"SPY": 0.6, "TLT": 0.3, "CASH": 0.05})
betas = pd.Series({"SPY": 1.0, "TLT": 0.2})
cfg = {
"with_futures": True,
"overlay_mode": "beta_hedge",
"futures_universe": ["MES", "ES"],
"futures_safety_multiplier": 3.0,
"futures_margin_headroom": 0.05,
"futures_target_beta": 0.0,
}
result = optimize_futures_overlay(weights, betas, capital=100000.0, cfg=cfg)
assert result.margin_used <= 100000.0 * weights["CASH"]