用组合标准差最小和组合收益率最大 分别求的不同的资金权重比例
import numpy as np #导入numpy库,是科学计算库
from sympy import * #导入解方程组的模块
def ZHbestrate(A,B): #设置函数
w=np.linspace(0,1,100) #w取值,0-1等分100个数值
r=w*np.mean(A)+(1-w)*np.mean(B) #组合收益率公式
std=(w**2*np.var(A)+(1-w)**2*np.var(B)+\
2*w*(1-w)*np.std(A)*np.std(B)*A.corr(B))**0.5 #组合标准差公式
return (std.min(),r.max()) #返回求组合标准差最小,组合收益率最大的值
print(ZHbestrate(jlr,aulr),'组合标准差最小','组合收益率最大')
stdmin=ZHbestrate(jlr,jmlr)[0] #取组合标准差最小的值
rmax=ZHbestrate(jlr,jmlr)[1] #取组合收益率最大的值
w_rmax=Symbol('w_rmax') #设置参数,组合收益率最大是的资金权重比例
print(solve(w_rmax*np.mean(jlr)+\
(1-w_rmax)*np.mean(jmlr)-rmax,w_rmax)) #解方程组(组合收益率最大时)
w_stdmin=Symbol('w_stdmin') #设置参数,组合标准差最小时的资金权重比例
print(solve((w_stdmin**2*np.var(jlr)+(1-w_stdmin)**2*np.var(jmlr)+\
2*w_stdmin*(1-w_stdmin)*jlr.corr(jmlr)*np.std(jlr)*np.std(jmlr))*0.05\
-stdmin,w_stdmin)) #解方程组(当组合标准差最小时)