Skip to content

Evaluator.report 调用 source.datas 但 DuckPQSource 未实现该属性 #10

@ppoak

Description

@ppoak

问题描述

调用 strategy.backtest() 完成后,Evaluator.report() 内部调用 self.source.datas(位于 quool/sources/duck.py:202),但 DuckPQSource 未实现该属性,导致 KeyError:

File "quool/evaluator.py", line 70, in report
    data = self.source.datas
File "quool/sources/duck.py", line 202, in datas
    .set_index([self.datetime_col, self.code_col])
KeyError: "None of ['time', 'code'] are in the columns"

环境

  • quool 版本:7.0.17
  • DuckPQSource 初始化参数:
    source = DuckPQSource(
        source=db,
        begin=BEGIN,
        end=END,
        datetime_col="time",
        code_col="code",
        bar={...}
    )

复现步骤

  1. 使用 DuckPQSource 初始化回测
  2. 运行 strategy.backtest(history=True)
  3. 回测正常完成,但 evaluate 阶段报错

预期行为

Evaluator.report() 应能正常工作,不依赖未实现的 source.datas 属性。

可能的修复方向

  1. 在 DuckPQSource 中实现 datas 属性,返回历史全量 OHLCV DataFrame(按 time + code 索引)
  2. 或者在 Evaluator.report 中添加兼容处理,duck.py 的 _data 是每次 update 后的快照,可能需要累积到列表中

备注

回测逻辑本身运行正常(44 根 K 线全部处理),问题仅出现在结果评估阶段。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions