You need to enable JavaScript to run this app. Python计算股票两两协整时For循环报KeyError:0问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Python计算股票两两协整时For循环报KeyError:0问题求助

错误产生原因
  • 你定义的data是键为股票代码字符串的字典结构,不存在0、1这类整数类型的键
  • 循环逻辑中你直接用range生成的整数下标i、j作为key访问data,匹配不到对应键就触发了KeyError: 0报错
修复代码

仅需要修改协整计算行的取值逻辑,用下标先从tickets列表取对应股票代码,再用代码作为key从data中取行情数据即可:

lista = []
comprimento = len(tickets)

for i in range(0, comprimento):
    print("当前分析标的: " + str(tickets[i]))
   
    for j in range(i+1, comprimento):
        # 替换原有的data[i]、data[j]为如下写法
        cointeracao = coint(data[tickets[i]], data[tickets[j]])
        if cointeracao[1] < 0.05:
            lista.append((tickets[i],tickets[j]))
            print(lista)
            
print(lista)

额外优化建议

为了避免不同股票的交易日缺失导致协整计算报错,可以先把所有行情数据合并为DataFrame并清除缺失值再计算,代码如下:

import pandas as pd
# 合并所有标的行情为DataFrame,删除存在缺失值的行
price_df = pd.DataFrame(data).dropna(axis=0, how='any')

lista = []
comprimento = len(tickets)
for i in range(0, comprimento):
    print("当前分析标的: " + str(tickets[i]))
    for j in range(i+1, comprimento):
        cointeracao = coint(price_df[tickets[i]], price_df[tickets[j]])
        if cointeracao[1] < 0.05:
            lista.append((tickets[i],tickets[j]))

print("协整关系显著的标的对:", lista)

内容的提问来源于stack exchange,提问作者Tiago Emanuel Pratas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 07:27:05