Portfolio API¶
asrquant.optimization ¶
Portfolio construction and risk decomposition without mandatory solvers.
random_frontier ¶
random_frontier(expected_returns: Series | ndarray, covariance: DataFrame | ndarray, n_portfolios: int = 5000, risk_free_rate: float = 0.0, random_state: int | None = 0) -> pd.DataFrame
Monte Carlo long-only portfolio cloud.
Source code in src/asrquant/optimization.py
estimate_covariance ¶
estimate_covariance(returns: DataFrame, method: str = 'sample', *, annualization: int = 252, span: int = 60) -> pd.DataFrame
Estimate annualized covariance using sample, EWMA, Ledoit-Wolf, or OAS.
Source code in src/asrquant/optimization.py
maximum_diversification ¶
Maximize the diversification ratio w' sigma / sqrt(w' Sigma w).
Source code in src/asrquant/optimization.py
efficient_frontier ¶
efficient_frontier(expected_returns: Series | ndarray, covariance: DataFrame | ndarray, points: int = 50, long_only: bool = True) -> pd.DataFrame
Compute minimum-volatility portfolios across a return grid.
Source code in src/asrquant/optimization.py
black_litterman ¶
black_litterman(covariance: DataFrame | ndarray, market_weights: ndarray, risk_aversion: float, views: ndarray | None = None, pick_matrix: ndarray | None = None, view_covariance: ndarray | None = None, tau: float = 0.05) -> tuple[np.ndarray, np.ndarray]
Return Black-Litterman posterior mean and covariance.
Source code in src/asrquant/optimization.py
hierarchical_risk_parity ¶
Hierarchical risk parity using correlation clustering and recursive bisection.