在金融背景下,假设有一个资产权重的数据框和一个每日协方差矩阵的面板:
为了计算1天组合的方差,可以使用以下函数:
但是,如何将上述函数应用于数据帧和协方差矩阵的每一天(不使用循环)?换句话说,类似于以下内容:
而且返回每日方差,就像上面的"out"一样?
w = pd.DataFrame({'Date':pd.to_datetime(['2016-01-01','2016-01-02','2016-01-03']),'A1':[0.3,0.1,0.1],'A2':[0.4,0.4,0.4]}).set_index(['Date'])
covar = [[[0.000087,0.000017],[0.000087,0.000017],[0.000087,0.000017]],[[0.000017,0.00019],[0.000017,0.00019],[0.000017,0.00019]]]
covPanel = pd.Panel(covar, items=['A1', 'A2'], major_axis=pd.to_datetime(['2016-01-01','2016-01-02','2016-01-03']), minor_axis=['A1', 'A2'])
为了计算1天组合的方差,可以使用以下函数:
def portVar(w,sigma):
return w.dot(sigma.dot(w))
每天可以对协方差矩阵应用最后一行权重,得到每日的方差:
out = covPanel.apply(lambda cov1: portVar(w.iloc[-1,:],cov1),axis = [2,0])
但是,如何将上述函数应用于数据帧和协方差矩阵的每一天(不使用循环)?换句话说,类似于以下内容:
pd.ApplyPairwise(portVar,w,covPanel)
而且返回每日方差,就像上面的"out"一样?