-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathrobust_optimization.py
More file actions
28 lines (22 loc) · 929 Bytes
/
robust_optimization.py
File metadata and controls
28 lines (22 loc) · 929 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"""Robust optimization: compare different kappa values.
Uses the skfolio S&P 500 dataset (2015-2022) and demonstrates
how increasing kappa (uncertainty aversion) shifts portfolio
allocations toward more conservative positions.
"""
from skfolio.datasets import load_sp500_dataset
from optimizer.optimization import RobustConfig, build_robust_mean_risk
from optimizer.pipeline import run_full_pipeline
# --- Load real price data ---
prices = load_sp500_dataset()
prices = prices.loc["2015":]
# --- Compare robustness levels ---
configs = {
"Aggressive (kappa=0.5)": RobustConfig.for_aggressive(),
"Moderate (kappa=1.0)": RobustConfig.for_moderate(),
"Conservative (kappa=2.0)": RobustConfig.for_conservative(),
}
for label, config in configs.items():
opt = build_robust_mean_risk(config)
result = run_full_pipeline(prices=prices, optimizer=opt)
print(f"\n{label}:")
print(result.weights.round(4))