因子载荷和因子协方差的协方差矩阵?



我有一个包含 6 个资产的列表,其中加载向量为 4 个因子,并且我有 4 个因子的协方差矩阵。如何使用这两个输入构建 6x6 的"资产"协方差矩阵?

import pandas as pd
import numpy as np
## Python 2.7

加载向量:

raw_asset_loadings = {'asset1': [.25, .25, .25, .25], 
'asset2': [.0, 0,.5,.5], 
'asset3': [0,0,1.25,.25], 
'asset4': [0,0,.25,0], 
'asset5': [.85,0,0,.15],
'asset6': [.7,.15,0,.15]}
asset_loadings = pd.DataFrame(data=raw_asset_loadings)

这产生

asset1  asset2  asset3  asset4  asset5  asset6
0 0.25    0.0     0.00    0.00    0.85    0.70
1 0.25    0.0     0.00    0.00    0.00    0.15
2 0.25    0.5     1.25    0.25    0.00    0.00
3 0.25    0.5     0.25    0.00    0.15    0.15

和因子协方差矩阵:

raw_cov = {0: [.04, .008, .12, .0], 
1: [.008, .01,.0015,0], 
2: [.0012,.0015,.0036,.0], 
3: [.0,.0,.0,.0004]}
factor_cov = pd.DataFrame(data=raw_cov)

这产生

0       1       2       3
0   0.040   0.0080  0.0012  0.0000
1   0.008   0.0100  0.0015  0.0000
2   0.120   0.0015  0.0036  0.0000
3   0.000   0.0000  0.0000  0.0004

我认为这会起作用,但我得到一个 4x6 矩阵,而不是所需的 6x6 矩阵:

covy = (np.matmul(np.matmul(asset_loadings.T,factor_cov),factor_cov))

关于如何从 6 个因素中创建 4x6 的任何想法?

在最后乘以错误的术语。答案是:

covy = (np.matmul(np.matmul(asset_loadings.T,factor_cov),asset_loadings))

第一篇文章到StackOverflow,当然,在走出去喝咖啡10分钟后,我得到了自己的答案......

最新更新