1. BL
def blacklitterman(returns,tau,P,Q):
mu=returns.mean()
sigma=returns.cov() #协方差
pil=np.expand_dims(mu,axis=0).T #转换维度,axis=0代表扩展列; axis=-1代表扩展最后一个参数
ts=tau*sigma
ts_1=linalg.inv(ts) #np.linalg.inv():矩阵求逆
Omega = np.dot(np.dot(P,ts), P.T)* np.eye(Q.shape[0])#如果a和b都是一维数组,np.dot 向量的内积;如果a和b都是二维数组,那么它返回的是矩阵乘法。# np.eye 对角线为1,其他为0
Omega_1 = linalg.inv(Omega)
er = np.dot(linalg.inv(ts_1 + np.dot(np.dot(P.T,Omega_1),P)),(np.dot(ts_1 ,pil)+np.dot(np.dot(P.T,Omega_1),Q)))
posterirorSigma = linalg.inv(ts_1 + np.dot(np.dot(P.T,Omega_1),P))
return [er, posterirorSigma]
##定义最小化方差的函数,即求解二次规划
def blminVar(blres, goalRet):
covs = np.array(blres[1],dtype=float)
means = np.array(blres[0],dtype=float)
L1 = np.append(np.append(covs.swapaxes(0,1),[means.flatten()],axis=0),[np.ones(len(means))],axis=0).swapaxes(0,1)
## 使用tr

这篇博客介绍了Black-Litterman模型用于确定投资组合预期收益和风险,并通过二次规划优化权重。同时,讨论了Barra回归在处理市场因子和收益率之间的关系,包括去极值、标准化以及加权回归的过程,以实现更精准的投资决策。
最低0.47元/天 解锁文章
770

被折叠的 条评论
为什么被折叠?



