python - 来自因子载荷和因子协方差的协方差矩阵?

标签 python pandas numpy optimization matrix-multiplication

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

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))

关于如何从 4 个因素创建 6x6 有什么想法吗?

最佳答案

最后乘以错误的项。答案是:

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

第一次在 stackoverflow 上发帖,当然,我在出去喝咖啡 10 分钟后得到了自己的答案......

关于python - 来自因子载荷和因子协方差的协方差矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52783180/

相关文章:

涉及前一行数据的 Python 矢量化操作

python-3.x - Python Numpy 在爆炸性传播中跟踪所有 0

python - pip 安装与 conda 安装

python - pandas 滚动应用于数据框

python - 从 python 中的现有列创建新列

python - 无法将稀疏矩阵写入 csv

python - 如何在 Tensorflow 中的张量中选择 "box"并将所有这些像素设置为零?

python - OpenAI/Tensorflow自定义游戏环境而不是使用 'gym.make()'

Python- For Loop - 增加列表中每个元组的每个索引位置

python - 根据动态条件选择行