pretsEM = []
pvolsEM = []
prets_noEM = []
pvols_noEM = []
[[‘AGG’,’SPY’,’QQQ’,’EMB’]]
[[‘AGG’,’SPY’,’QQQ’,’GLD’]]
for p in range(2500):
weights = np.random.random(len(allocation)-1)
weights /= np.sum(weights)
pretsEM.append(np.sum(datos_returns[[‘AGG’,’SPY’,’QQQ’,’EMB’]].mean()* weights)* semana)
pvolsEM.append(np.sqrt(np.dot(weights.T,np.dot(datos_returns[[‘AGG’,’SPY’,’QQQ’,’EMB’]].cov()*semana,
weights))))
pretsEM = np.array(pretsEM)
pvolsEM = np.array(pvolsEM)
for p in range(2500):
weights = np.random.random(len(allocation)-1)
weights /= np.sum(weights)
prets_noEM.append(np.sum(datos_returns[[‘AGG’,’SPY’,’QQQ’,’GLD’]].mean()* weights)* semana)
pvols_noEM.append(np.sqrt(np.dot(weights.T,np.dot(datos_returns[[‘AGG’,’SPY’,’QQQ’,’GLD’]].cov()*semana,
weights))))
prets_noEM = np.array(prets_noEM)
pvols_noEM = np.array(pvols_noEM)
# the charts
fig8 = plt.figure(figsize = (12,16))
plt.subplots_adjust(wspace=.5)
plt.subplot(211)
plt.scatter(pvolsEM, pretsEM, c = pretsEM / pvolsEM, marker = ‘o’,cmap=’coolwarm’)
plt.grid(True)
plt.xlabel(‘expected volatility’)
plt.ylabel(‘expected return’)
plt.colorbar(label = ‘Sharpe Ratio’)
plt.title(‘Monte Carlo Simulation Efficient Frontier with EM’)
plt.subplot(212)
plt.scatter(pvols_noEM, prets_noEM, c = prets_noEM / pvols_noEM, marker = ‘o’,cmap=’viridis’)
plt.grid(True)
plt.xlabel(‘expected volatility’)
plt.ylabel(‘expected return’)
plt.colorbar(label = ‘Sharpe Ratio’)
plt.title(‘Monte Carlo Simulation Efficient Frontier with no EM’)
plt.show();
fig8.savefig(‘frontiers.png’,dpi=fig8.dpi)