FinClaw 回测
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3a4f0d0f/backtest-finclaw。
技能介绍
解决的回测漂移问题
backtest-finclaw 针对一个常见失效点:策略意图、执行参数、数据代理和结果诊断散落在对话、脚本和手工默认值里。它要求把 backtest_spec.md 作为策略意图的单一事实源;进入执行前,不能静默补参数、替换信号、改用代理池,也不能把当前截面数据回灌到历史时点。
输入可以是完整 spec、完整 backtest.py、口语化规则,或已有回测结果。已有 spec 也必须校验;校验失败就留在规格阶段修复,不进入执行。
工作流程与核心能力
- Stage 0 路由输入:有 spec 则运行
scripts/spec_validator.py;只有完整脚本时,从代码反向抽取参数,按references/spec_template.md生成草案并确认;需求零散时进入 Stage 1;只解释结果时读取backtest_result.json、trade_records.csv和 spec,不默认重跑。 - Stage 1 规格冻结:识别 timing、selection、event_driven、dca、hedge、grid 等原型;遇到机构买、调研、评级上调、业绩超预期、ROE、估值低位等词时,读取
references/signal_definitions.md映射 endpoint、API、字段、阈值、窗口和可见日。Tier 1 必须由用户明确;Tier 2 展示复权、分红、佣金、印花税、滑点、手数、T+1、交易日数和无风险利率;Tier 3 追问信号、成交时点、仓位、重复信号、满仓、出场、缺失值和风控。确认前不写盘、不取数。 - Stage 2 忠实执行:只从 spec 的 yaml 代码块读取参数。严格数据缺失且无可靠代理时,写
NOT_EXECUTED,不生成伪收益;代理必须披露proxy_used: true、strict_backtestable: false和非等价风险。按原型选择模板,配置从 spec 派生,使用neodata_kline.py/neodata_client.py,补齐 MA、MACD、ATR、Beta 等 warm-up,区分 raw/qfq,建模 T+1、涨跌停、特殊板块、融券、保证金、分红和公司行动;财务与事件字段按披露日或可见日对齐,并写明 source API、field、observed value、signal date 和 source ref。 - Stage 2.5 暂停确认:先交付核心指标、基准对比和简短结论,再询问是否继续六维分析、只做简版诊断、停在当前结果或修改 spec。
- Stage 3 / 4 分析诊断:用
fetch_dimension.py并行获取 financial、industry、events、macro、institutional、research 六维原始数据;数据为空要标注覆盖缺口,不用当前截面解释历史。最后按report_template.md生成strategy_diagnosis.md,把事实、推断和建议分开。
适用边界与注意点
- 适合需要可审计回测的研究与策略复盘;不保证收益,也不能替代高质量 point-in-time 数据源。
- EPS 超预期不能换成利润同比,ROE 不能换成利润增长,机构调研不能换成评级数量,全市场不能静默换成手写样本池。
- 所有生成文件应写入用户工作目录的
strategies/,不写 skill 目录、缓存、样本、临时探针或__pycache__。 - JSON、CSV、PNG、HTML 和摘要必须来自同一次最终运行;validator 失败、零候选或零交易不能包装成普通成功。
使用场景
- 策略研究员准备复盘择时规则时,需要先冻结标的池、起止日和复权口径,再生成成交记录。
- 量化开发者拿到一份旧回测脚本,需要反向抽取参数、写成 spec 草案并确认后再重跑。
- 数据分析师遇到机构调研、业绩超预期等事件信号,需要确认 point-in-time 数据、可见日和代理风险。
- 策略负责人拿到回测结果,需要核对最大回撤区间,并判断是否值得进入六维归因与综合诊断。
适合人员
- 量化策略研究员:希望把策略意图固化为 spec,避免回测结果来自隐藏默认值。
- 金融数据分析师:需要检查信号定义、数据缺口和复权口径是否影响历史结论。
- 事件驱动策略开发者:关注公告、调研和财务信号能否按可见日对齐且不使用未来函数。
- 策略平台工程师:要把规格校验、忠实回测和诊断输出组织成可审计流程。