# Untitled

a guest
Jun 27th, 2019
88
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. def neg_sharpe_ratio_m(weights, mean_returns, cov_matrix, risk_free_rate, alpha):
2. p_var, p_ret = portfolio_annualised_performance(weights, mean_returns, cov_matrix)
3. m_risk = equal_risk_contributon(weights, cov_matrix)
4. return -(p_ret - risk_free_rate)/p_var*alpha + (1-alpha)*m_risk
5.
6. def max_sharpe_ratio_m(mean_returns, cov_matrix, risk_free_rate, alpha):
7. num_assets = mean_returns.shape[0]
8. args = (mean_returns, cov_matrix, risk_free_rate, alpha)
9. constraints = ({'type': 'eq', 'fun': lambda x: np.sum(x) - 1})
10. bound = (0.0,1.0)
11. bounds = tuple(bound for asset in range(num_assets))
12. result = minimize(neg_sharpe_ratio_m, num_assets*[1./num_assets,], args=args,
13. method='SLSQP', bounds=bounds, constraints=constraints)
14. return result.x
15.
16. weights_alpha =[]
17. blended_list = []
18. length = etf_return.shape[0]//66
19. for alpha in 1/np.exp2(np.arange(0,10,1)):
20. i= 0
21. risk_free_rate =0.0
22. weights = np.empty([0,6])
23. while i<length:
24. distance = min(66,etf_return.shape[0]-i*66)
25. cov_matrix = np.cov(etf_return.iloc[i*66: (i+1)*min(distance, 66) , :].values,
26. rowvar = False)
27. rt = np.mean(etf_return.iloc[i*66: (i+1)*min(distance, 66) , :].values, axis=0)
28. result = np.around(max_sharpe_ratio_m(rt, cov_matrix, risk_free_rate, alpha), 3)
29. weights = np.vstack((weights, result))
30. i+=1
31. weights_alpha.append(weights)
32. blended = portfolio_performance(weights)
33. blended_list.append(blended)
RAW Paste Data