model
- class model.model.Model(symbols, historical_prices, bounds=(0.0, 1.0), min_weight=0.0, margin_rate=0.0, long_weight=1.0, short_weight=0.0, frequency=252, optimization_method='mean_variance', risk_method='sample_cov', semivariance_benchmark=0, beta=0.95)
Bases:
object- Description:
Class for the portfolio modeling.
- Parameters:
symbols (list, required) – List of symbols
historical_prices (pandas.core.frame.DataFrame, required) – Historical prices
bounds (tuple, optional) – Bounds for long and short weights, default is (0.0, 1.0)
min_weight (float, optional) – Minimum weight, default is 0.0
margin_rate (float, optional) – Margin rate, default is 0.0
long_weight (float, optional) – Long weight, default is 1.0
short_weight (float, optional) – Short weight, default is 0.0
frequency (int, optional) – Frequency, default is 252
optimization_method (str, optional) – Method, default is ‘mean_variance’. Options are ‘mean_variance’, ‘semivariance’, ‘cvar’, ‘cdar’
risk_method (str, optional) – Risk model, default is ‘sample_cov’. Options are ‘sample_cov’, ‘semicovariance’, ‘exp_cov’, ‘ledoit_wolf’, ‘ledoit_wolf_constant_variance’, ledoit_wolf_single_factor, ledoit_wolf_constant_correlation, ‘oracle_approximating’
semivariance_benchmark (int, optional) – The return threshold to distinguish “downside” and “upside”. Default is 0
beta (float, optional) – Confidence level (e.g., expected loss on the worst (1-beta) days). Default is 0.95
- calculate_black_litterman(covariance_matrix, market_prices, risk_free_rate, market_caps, symbols, investor_views, confidences, prints=False)
- Description:
Calculate Black-Litterman
- Parameters:
covariance_matrix (pandas.core.frame.DataFrame, required) – Covariance matrix
market_prices (pandas.core.series.Series, required) – Market prices
risk_free_rate (float, required) – Risk free rate
market_caps (pandas.core.series.Series, required) – Market capitalization
symbols (list, required) – Symbols
investor_views (dict, required) – Investor views
confidences (pandas.core.series.Series, required) – Confidences
prints (bool, optional) – Prints, default is False
- Returns:
posterior covariance matrix, posterior expected returns
- Return type:
tuple
- static calculate_covariance_matrix(prices, symbols, risk_method='sample_cov', prints=False)
- Description:
Calculate covariance matrix
- Parameters:
prices (pandas.core.frame.DataFrame, required) – Prices
symbols (list, required) – Symbols
risk_method (str, required) – Risk method
prints (bool, optional) – Prints, default is False
- Returns:
Covariance matrix
- Return type:
pandas.core.frame.DataFrame
- static calculate_symbol_vols(covariance_matrix)
- Description:
Calculate symbol volatilities
- Parameters:
covariance_matrix (pandas.core.frame.DataFrame, required) – Covariance matrix
- Returns:
Ticker volatilities
- Return type:
pandas.core.series.Series
- efficient_frontier_portfolios(posterior_expected_returns, posterior_covariance_matrix, risk_free_rate, prints=False)
- Description:
Efficient frontier portfolios
- Parameters:
posterior_expected_returns (pandas.core.series.Series, required) – Posterior expected returns
posterior_covariance_matrix (pandas.core.frame.DataFrame, required) – Posterior covariance matrix
risk_free_rate (float, required) – Risk free rate
prints (bool, optional) – Prints, default is False
- Returns:
Efficient frontier portfolios, and portfolio results
- Return type:
tuple
- market_implied_risk_aversion(market_prices, risk_free_rate, prints=False)
- Description:
Market implied risk aversion
- Parameters:
market_prices (pandas.core.series.Series, required) – Market prices
risk_free_rate (float, required) – Risk free rate
prints (bool, optional) – Prints, default is False
- Returns:
Market implied risk aversion
- Return type:
float
- maximum_risk_portfolio(posterior_expected_returns, posterior_covariance_matrix, risk_free_rate, prints=False)
- Description:
Maximum risk portfolio
- Parameters:
posterior_expected_returns (pandas.core.series.Series, required) – Posterior expected returns
posterior_covariance_matrix (pandas.core.frame.DataFrame, required) – Posterior covariance matrix
risk_free_rate (float, required) – Risk free rate
prints (bool, optional) – Prints, default is False
- Returns:
Maximum risk portfolio volatility, asset weights, and portfolio results
- Return type:
tuple
- maximum_sharpe_portfolio(posterior_expected_returns, posterior_covariance_matrix, risk_free_rate, prints=False)
- Description:
Maximum Sharpe ratio portfolio
- Parameters:
posterior_expected_returns (pandas.core.series.Series, required) – Posterior expected returns
posterior_covariance_matrix (pandas.core.frame.DataFrame, required) – Posterior covariance matrix
risk_free_rate (float, required) – Risk free rate
prints (bool, optional) – Prints, default is False
- Returns:
Maximum Sharpe portfolio asset weights, and portfolio results
- Return type:
tuple
- minimum_risk_portfolio(posterior_expected_returns, posterior_covariance_matrix, risk_free_rate, prints=False)
- Description:
Minimum risk portfolio
- Parameters:
posterior_expected_returns (pandas.core.series.Series, required) – Posterior expected returns
posterior_covariance_matrix (pandas.core.frame.DataFrame, required) – Posterior covariance matrix
risk_free_rate (float, required) – Risk free rate
prints (bool, optional) – Prints, default is False
- Returns:
Minimum risk portfolio volatility, asset weights, and portfolio results
- Return type:
tuple
- static plot_efficient_frontier(expected_returns, results, covariance_matrix, figsize=(12, 6))
- Description:
Plot efficient frontier
- Parameters:
expected_returns (pandas.core.series.Series, required) – Expected returns
results (pandas.core.frame.DataFrame, required) – Results
covariance_matrix (pandas.core.frame.DataFrame, required) – Covariance matrix
figsize (tuple, optional) – Figure size, default is (12, 6)
- Returns:
Plot
- Return type:
matplotlib.pyplot.figure
- static print_results(weights, print_results)
- Description:
Print results
- Parameters:
weights (pandas.core.frame.DataFrame, required) – Portfolio weights
print_results (pandas.core.series.Series, required) – Print results
- Returns:
None
- process_ef_output(ef, risk_free_rate, portfolio_name=None)
- Description:
Process efficient frontier output
- Parameters:
ef (pypfopt.efficient_frontier.EfficientFrontier, required) – Efficient frontier object
risk_free_rate (float, required) – Risk free rate
portfolio_name (str, optional) – Portfolio name, default is None
- Returns:
volatility, weights, results, print_results
- Return type:
tuple