Skip to content

Instantly share code, notes, and snippets.

@Zmey56
Created May 11, 2022 21:02
Show Gist options
  • Save Zmey56/04ad108ac748056e12d44a7f2cc20021 to your computer and use it in GitHub Desktop.
Save Zmey56/04ad108ac748056e12d44a7f2cc20021 to your computer and use it in GitHub Desktop.
array_returns = np.asarray(return_data.dropna())
array_cov = np.asarray(var_matrix)
mean_returns = np.mean(array_returns, axis = 0)
portfolios_V1_div = portfolios_V1.copy()
div_ratio = []
for i in range(portfolios_V1.shape[0]):
weight_vector = list(portfolios_V1.iloc[i])[2:]
portfolio_risk = np.sqrt(np.matmul((np.matmul(weight_vector,array_cov)), np.transpose(weight_vector)))
ann_portfolio_risk = portfolio_risk*np.sqrt(252)*100
portfolio_return = np.matmul(weight_vector, np.transpose(mean_returns))
ann_portfolio_return = 252*portfolio_return * 100
portfolio_asset_sdv = np.sqrt(np.diagonal(array_cov))
portfolio_div_ratio = np.sum(np.multiply(portfolio_asset_sdv, weight_vector)) \
/ portfolio_risk
div_ratio.append(portfolio_div_ratio)
portfolios_V1_div['Diversification Ratio'] = div_ratio
div_port = portfolios_V1_div.iloc[portfolios_V1_div['Diversification Ratio'].idxmax()]
df_weights = df_weights.append(div_port[:-1].rename("Maximum Diversification").to_frame().T)
div_port[-1]
1.327768493018246
weights_div = np.array(portfolios_V1_div.iloc[portfolios_V1_div['Diversification Ratio'].idxmax()][2:-1])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment