import numpy as np import pandas as pd defportfolio1(ra,rb,sa,sb,rho,wa): wb = 1 - wa rp = wa*ra + wb*rb sp = ((wa**2)*(sa**2) + (wb**2)*(sb**2) + 2*wa*wb*sa*sb*rho)**0.5 return rp,sp
ra = 0.05 rb = 0.08 sa = 0.1 sb = 0.2 rho = np.arange(-10,11,2)/10 wa = np.arange(101)/100
result = pd.DataFrame(columns = ['rho','wa','rp','sp']) for rhos in rho: for was in wa: rp,sp = portfolio1(ra,rb,sa,sb,rhos,was) x = pd.DataFrame([rhos,was,rp,sp]).T x.columns = ['rho','wa','rp','sp'] result = result.append(x) result = result.reset_index(drop = True)
plt.figure(figsize=(16,9)) for i in rho: datas = result.loc[result.rho ==i] plt.scatter(datas.sp,datas.rp,marker = 'o',label = 'rho = '+ str(i)) plt.legend() plt.xlabel('sigma',fontsize = 20) plt.ylabel('r',fontsize = 20) plt.show()