Spaces:
Sleeping
Sleeping
| import numpy as np | |
| import time | |
| import pandas as pd | |
| from cvxpy_engine import CVXPYOptimizationEngine | |
| from core_types import ForecastResult, CovarianceResult | |
| def run_perf(): | |
| n = 200 | |
| np.random.seed(42) | |
| rets = np.random.randn(1000, n) * 0.01 | |
| df = pd.DataFrame(rets) | |
| Sigma = df.cov() | |
| fr = ForecastResult( | |
| expected_returns=pd.Series(df.mean() * 252), | |
| covariance_result=CovarianceResult(Sigma, df.corr(), pd.Series(df.std())), | |
| betas=pd.Series(np.ones(n)), | |
| garch_info={}, | |
| js_alpha=0.0, | |
| capm_rets=pd.Series(np.ones(n)), | |
| ff_betas=pd.DataFrame(), | |
| periods=252, | |
| historical_returns=pd.Series(df.mean() * 252) | |
| ) | |
| cfg = {"risk_free_rate": 0.04, "gross_leverage_cap": 1.0, "sector_limit": 0.35, "single_asset_max": 0.40, "tc_volume_profile": 0.10} | |
| state = type('obj', (object,), {'current_weights': np.zeros(n), 'total_capital': 1000000.0})() | |
| start = time.time() | |
| for i in range(5): | |
| engine = CVXPYOptimizationEngine( | |
| forecast=fr, state=state, cfg=cfg, tickers=list(range(n)), n=n, | |
| macro={}, spread_map={}, risk_input=5.0, risk_factor=1.0, | |
| capital=1_000_000.0, adv_proxy=50_000_000.0, safe_min=0.0, asset_max=0.4, | |
| sector_limit=0.35, allow_shorts=False, durations=np.zeros(n), | |
| b_min=0.0, b_max=0.0, has_basis=False, max_turnover=1.0, | |
| stability_spreads=np.zeros(n), stab_lambda=0.0 | |
| ) | |
| engine.setup_data() | |
| engine.solve(use_beta=False, use_dur=False, use_factors=False, is_deep_relaxation=False, cur_min=0.0, cur_max=0.4, cur_sec=0.35, cur_turn=1.0) | |
| print(f"Total time 5 iterations n={n}: {time.time() - start:.3f}s") | |
| if __name__ == "__main__": | |
| run_perf() | |