You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中利用协方差矩阵计算方差?附代码报错求助

问题分析与解决
  • 你的第二段代码执行失败,核心原因是组合标准差的计算逻辑错误:
    组合方差的正确公式是 权重向量^T × 协方差矩阵 × 权重向量,你当前只计算了权重向量 × 协方差矩阵,得到的是一个向量而非标量,无法直接赋值给标准差列。同时,标准差是方差的平方根,就算算出方差也需要开根号才能得到标准差。

  • 修正后的代码:

for num in range(9):
    # 保留原期望收益计算逻辑,注意缩进要正确
    result_table2.iloc[num]['Expected Return'] = arith_mean.dot(result_table1.iloc[num])
for num in range(9):
    w = result_table1.iloc[num]
    # 先计算组合方差
    variance = w @ V.values @ w
    # 开平方得到标准差
    result_table2.iloc[num]['Standard Deviation'] = variance ** 0.5
  • 额外提示:
    1. 注意代码缩进,你粘贴的原代码中for循环后的语句没有缩进,实际运行会报错,第一段能正常执行大概率是粘贴时格式丢失,要确保缩进符合Python语法要求。
    2. 也可以用numpy.sqrt(variance)代替variance ** 0.5,两者效果一致。

(补充数据结构说明:result_table1是9行5列的持仓权重表,每行对应一组股票权重;result_table2是结果存储表,包含期望收益和标准差列;协方差矩阵为5x5的矩阵,对应5只股票的协方差数据)

内容的提问来源于stack exchange,提问作者pupupyguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:05:21