初始条件:
资产 | ||
---|---|---|
1 | 8% | 14% |
2 | 12% | 20% |
计算公式:
0 | 1 | 0.12 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 |
0.1 | 0.9 | 0.116 | 0.180544 | 0.187393 | 0.194 | 0.173424 | 0.166 |
0.2 | 0.8 | 0.112 | 0.162432 | 0.175682 | 0.188 | 0.148 | 0.132 |
0.3 | 0.7 | 0.108 | 0.146164 | 0.165058 | 0.182 | 0.124435 | 0.098 |
0.4 | 0.6 | 0.104 | 0.132424 | 0.155743 | 0.176 | 0.104 | 0.064 |
0.5 | 0.5 | 0.1 | 0.122066 | 0.147986 | 0.17 | 0.088882 | 0.03 |
0.6 | 0.4 | 0.096 | 0.116 | 0.142042 | 0.164 | 0.082073 | 0.004 |
0.7 | 0.3 | 0.092 | 0.114909 | 0.138145 | 0.158 | 0.08558 | 0.038 |
0.8 | 0.2 | 0.088 | 0.118929 | 0.13647 | 0.152 | 0.098306 | 0.072 |
0.9 | 0.1 | 0.084 | 0.127577 | 0.137099 | 0.146 | 0.117286 | 0.106 |
1 | 0 | 0.08 | 0.14 | 0.14 | 0.14 | 0.14 | 0.14 |
Excel作图:
Python Code:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import math
w_1=np.linspace(0,1,11)
w_2=1-w_1
E_r_1=0.08
E_r_2=0.12
sigma_1=0.14
sigma_2=0.2
rho_1=0
rho_2=0.5
rho_3=1
rho_4=-0.5
rho_5=-1
E_r_p=w_1*E_r_1+w_2*E_r_2
sigma2_p_1=w_1*w_1*sigma_1*sigma_1+w_2*w_2*sigma_2*sigma_2+2*rho_1*w_1*w_2*sigma_1*sigma_2
y1=[]
Y1=[]
for i in sigma2_p_1:
y1=round(math.sqrt(i),4)
Y1.append(y1)
sigma2_p_2=w_1*w_1*sigma_1*sigma_1+w_2*w_2*sigma_2*sigma_2+2*rho_2*w_1*w_2*sigma_1*sigma_2
y2=[]
Y2=[]
for i in sigma2_p_2:
y2=round(math.sqrt(i),4)
Y2.append(y2)
sigma2_p_3=w_1*w_1*sigma_1*sigma_1+w_2*w_2*sigma_2*sigma_2+2*rho_3*w_1*w_2*sigma_1*sigma_2
y3=[]
Y3=[]
for i in sigma2_p_3:
y3=round(math.sqrt(i),4)
Y3.append(y3)
sigma2_p_4=w_1*w_1*sigma_1*sigma_1+w_2*w_2*sigma_2*sigma_2+2*rho_4*w_1*w_2*sigma_1*sigma_2
y4=[]
Y4=[]
for i in sigma2_p_4:
y4=round(math.sqrt(i),4)
Y4.append(y4)
sigma2_p_5=w_1*w_1*sigma_1*sigma_1+w_2*w_2*sigma_2*sigma_2+2*rho_5*w_1*w_2*sigma_1*sigma_2
y5=[]
Y5=[]
for i in sigma2_p_5:
y5=round(math.sqrt(i),4)
Y5.append(y5)
%matplotlib auto
plt.figure()
plt.plot(Y1,E_r_p)
plt.plot(Y2,E_r_p)
plt.plot(Y3,E_r_p)
plt.plot(Y4,E_r_p)
plt.plot(Y5,E_r_p)
plt.title(r'$Efficient\ Frontier\ of\ Two\ Risky\ Assets$')
plt.xlabel(r'$\sigma_p$')
plt.ylabel(r'$E(r_p)$')
plt.legend(labels=[r'$\rho_1=0$',r'$\rho_2=0.5$',r'$\rho_3=1$',r'$\rho_4=-0.5$',r'$\rho_5=-1$'])
plt.show()
Result: