VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 3
声望: 0

KeyError Traceback (most recent call last)
Cell In[14], line 24
22 df = engine.calculate_result()
23 return df
---> 24 df1 =run_barcktesting(datetime(2025,2,6),datetime(2025,3,26))
25 df2 =run_barcktesting(datetime(2025,3,1),datetime(2025,4,30))

Cell In[14], line 22, in run_barcktesting(start, end)
20 engine.load_data()
21 engine.run_backtesting()
---> 22 df = engine.calculate_result()
23 return df

File C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\backtesting.py:288, in BacktestingEngine.calculate_result(self)
285 for key, value in daily_result.dict.items():
286 results[key].append(value)
--> 288 self.daily_df = DataFrame.from_dict(results).setindex("date")
290 self.output(
("逐日盯市盈亏计算完成"))
291 return self.daily_df

File C:\veighna_studio\Lib\site-packages\pandas\core\frame.py:6122, in DataFrame.set_index(self, keys, drop, append, inplace, verify_integrity)
6119 missing.append(col)
6121 if missing:
-> 6122 raise KeyError(f"None of {missing} are in the columns")
6124 if inplace:
6125 frame = self

KeyError: "None of ['date'] are in the columns"

Super Moderator
avatar
加入于:
帖子: 74
声望: 7

从错误信息来看,KeyError: "None of ['date'] are in the columns"通常是由于回测过程中没有生成任何成交记录导致的。具体原因可能是:

  1. 策略未触发交易信号

    • 在回测的时间范围内,策略可能没有满足任何交易条件,因此没有生成任何成交记录。
    • 检查策略的逻辑和参数设置,确保在回测时间段内有交易信号生成。
  2. 数据问题

    • 回测引擎加载的历史数据可能不完整或不符合策略的需求,导致策略无法计算信号。
    • 检查加载的数据是否正确,例如时间范围、合约代码等。
  3. 回测时间范围问题

    • 回测的时间范围可能过短,或者不在策略的有效交易时段内。
    • 尝试延长回测时间范围,或者调整策略的交易时段。

解决方法

  1. 检查策略逻辑

    • 确保策略在回测时间段内能够生成交易信号。
    • 可以通过打印日志或调试信息来验证策略是否触发了交易信号。
  2. 检查历史数据

    • 确保回测引擎加载的历史数据完整且正确。
    • 使用engine.load_data()后,检查engine.history_data是否包含预期的数据。
  3. 调整回测时间范围

    • 尝试延长回测时间范围,或者选择一个策略活跃的时间段进行回测。

如果以上方法仍然无法解决问题,可以提供更多上下文信息,我会进一步协助排查。

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】