我正在研究交易算法,并在尝试访问 DataFrame 中的列时遇到 KeyError。具体来说,我在回溯测试阶段访问股票报价机的调谐信号时遇到了错误。
KeyError: 'MSFT_Tuned_Signal'
这是我的代码的相关部分:
def backtest_with_risk_management(data, tickers):
for ticker in tickers:
for i in range(len(data)):
signal = data[f'{ticker}_Tuned_Signal'].iloc[i]
# Additional logic here...
某些代码(例如 MSFT)的数据 DataFrame 中似乎缺少信号列
('{ticker}_Tuned_Signal')
,但我不知道为什么会发生这种情况。我已经应用卡尔曼滤波器来生成信号,但仍未创建列。
可能的原因是什么?如何确保信号数据在回测过程中正确生成并可访问?
我对股票数据应用了卡尔曼滤波器,并期望它在 DataFrame 中为每个股票代码生成一个新列(例如,
MSFT_Tuned_Signal
、GOOG_Tuned_Signal
)。卡尔曼滤波器似乎运行没有错误,但是当我尝试在回溯测试函数中访问这些列时,我遇到了 KeyError。我期望这些列存在于 DataFrame 中,但某些代码缺少这些列,从而导致错误。
当您调用该函数时,您确定传递的数据参数包含“MSFT_Tuned_Signal”列吗?
您可以简单地使用
进行检查'MSFT_Tuned_Signal' in data.columns