能力子页 · 回测与审计

tick-stock-panel 回测可信度审计:先问十个问题

一个策略回测数字好看,不等于它在未来管用。本页不展示任何收益数字,而是把 tick-stock-panel 对到底做了哪些约束、哪些口径需要你自己确认写清楚,并给一份能直接照着跑的审计清单。

本页回答:结果能不能信 / 哪些假设没被覆盖依据:官方 docs/features.md、docs/mining.md、docs/strategy-iteration.md本站未实机跑回测:不展示任何收益数字
时间对齐
成本假设
股票池偏差
样本外验证
导出复测
tick-stock-panel 回测可信度审计清单示意(依据官方 docs/features.md 与 docs/mining.md 整理的 schematic,非官方回测报告)。本站未实机跑过任何回测,下图不包含任何收益、夏普或胜率数字。
Backtest modes

tick-stock-panel 有哪几种回测模式?各自适合问什么问题?

选对模式比调参数更重要:用个股回测去验证一个全市场策略,得到的结论会有系统性偏差。

回测模式适合问题官方口径
个股回测这只标的在某个策略下表现如何单标的 + 一个策略,看净值与交易明细
策略组合一个策略扫全市场后按组合约束持仓会怎样策略先扫全市场,再按最大持仓数、敞口控制与等权或自定义仓位组合
自由信号组合多个自定义信号加自定义权重混合多个信号 + 权重,适合做信号层面的组合实验
分钟策略回测盘中触发条件在历史上会不会真的成立逐交易日回放信号,以分钟收盘价入场,输出分钟级成交明细
选模式时最常见的一个错:拿个股回测去验证一个全市场策略。个股回测只回答「这只标的在这个策略下怎么样」,它无法告诉你「这个策略扫全市场能不能选出好标的」——后者才是选股策略真正的问题。如果你的策略是从一个大池子里挑标的,就应该用策略组合模式,并把最大持仓数与敞口约束设成你真实能承受的水平。
四种模式共用同一套真实约束:T+1、手续费、滑点、止损与最大持仓天数(官方名单)。这意味着你不会在个股模式下看到一个完美曲线、切到组合模式后却全崩掉,因为约束本身没变。但你仍然需要分别检查:组合模式多了一层仓位与敞口约束,分钟模式多了一层时间级差异,这两层都会影响结果。
Real constraints

tick-stock-panel 在回测里到底考虑了哪些真实约束?

下表每一行都是官方列出的约束,并说明它为什么会影响你对结果的信任度。

约束官方行为为什么它影响可信度
T+1信号日与成交日错开,当日信号不能当日成交这是 A 股制度约束,也是回测里最常被无意触发的未来函数
手续费按交易额计提不计成本的策略变成成本后经常直接转负,尤其是高频策略
滑点按配置模拟成交价偏离滑点对高换手策略的侵蚀可能远大于手续费
止损可配置止损条件止损会改变交易分布,让尾部风险变形
最大持仓天数到期强制平仓避免策略靠少数几笔超长持仓把整体收益拉上去
组合约束最大持仓数、敞口控制、等权或自定义仓位仓位规则一变,同一个信号集的结果就变,所以必须记录参数
Metrics

tick-stock-panel 的回测输出哪些指标?怎么看?

指标名字大家都熟,但每个都有它的误区。下表把它们和“看的时候注意什么”放在一起。

输出官方口径看的时候注意什么
净值曲线策略期间的累计表现关注回撤形状而不只是终值;长期横盘也是信息
夏普风险调整后的收益表现它对收益分布形状敏感,小样本下容易被极端值拉高
最大回撤历史最大回撤幅度它是已发生的事实,不是上限;它是「下界」的一个参考
胜率盈利交易占比胜率高不等于赚钱,必须与盈亏比一起看
盈亏比平均盈利单与平均亏损单的比值(官方用颜色区分高低)它与胜率是一对:低胜率 + 高盈亏比与高胜率 + 低盈亏比都可能成立
蒙卡回撤按成交顺序重抽样估计回撤分布,给中位与 95% 边界它回答的是「换一个执行顺序会怎么样」,这比单一最大回撤更接近风险感知
SSE 流式进度回测过程流式输出,切页可重连回测在 spawn worker 子进程运行、有持久 run ID,所以刷新不会丢任务
Factor attribution

tick-stock-panel 的因子归因能告诉我什么?有什么限制?

这是本项目最实用的一个分析工具,但它有明确的适用范围。

因子归因是这个项目最实用、也最容易被误用的一个功能。它的做法是:对比盈利单与亏损单在入场信号日的因子均值,给出胜单均值、败单均值、差值与样本数。数据来自入场候选快照,零额外计算。

但它有两个硬边界,必须知道:第一,它只覆盖 meta.scoring 非空的策略(内置策略与自定义 polars 策略);第二,矩阵单因子排名类策略暂不产出归因(官方明确说明)。所以当你发现某个策略的归因栏是空的,先判断它属不属于这一类,而不是先怀疑功能坏了。

归因结果怎么读:它回答的是「这笔交易为什么赚或亏」,而不是「下一笔该不该买」。如果发现高位信号对应的败单占比明显偏高,那是一个可以去验证的假设(比如加一个位置过滤条件重跑),而不是一个可以直接下结论的结论。
Minute replay

tick-stock-panel 的分钟回测怎么避免未来函数?

分钟级回测最容易出现“用了未来一分钟”的问题,下面是官方在入场价与粒度上的具体取舍。

关键点官方口径为什么这样设计
分钟级回放逐交易日回放信号而不是先把所有分钟数据载入内存再一次性计算
入场价格以分钟收盘价入场避免用分钟内最优价造成不可实现的收益
明细粒度输出分钟级成交明细你可以看到具体到分钟的入场时点而不是只有日级汇总
约束一致性与日线回测同用一套 T+1 / 费用约束两类回测的结果可以直接放在一起比较
信号回放工具另有独立的分钟信号回放接口可以在配监控之前先验证信号会不会真的触发
Export and rerun

tick-stock-panel 的回测结果怎么导出与复现?

能不能复现,是区分“真结果”和“巧合”的最直接手段。

  • 导出 CSV,一次四段

    概要、净值曲线、交易明细与分标的统计。四段分开好处是你能把交易明细拿到其他工具里做自己的分析。

  • 保存候选

    保存时存的是完整参数与指标快照,而不只是一个名字。

  • 回测页一键载入复测

    「候选方案」里点一键载入,会回填全部参数。这是判断「结果能不能复现」最直接的手段。

  • 复测时先确认三件事

    版本是否相同、本地数据是否变过、股票池是否一致。这三件任何一件变了,结果都不应该一模一样。

  • 记录复现信息

    官方在策略迭代文档里强调过证据包与台账:每轮留下改了什么、为什么改、结果如何。对回测而言同样适用。

  • 把“能复现”当成结论的前提

    一个跑不出第二遍的结果,即使数字再好也不该该拿去做决定。

  • Audit checklist

    TSP 回测结果到底可不可信?十问审计清单

    下表把每个审计问题对到项目的具体能力或明确边界,方便你逐条确认而不是凭感觉。

    审计问题tick-stock-panel 的对应能力 / 边界本站提醒
    信号日与成交日错开吗?有——T+1 是官方列出的真实约束之一这是最容易被无意触发的未来函数,先看这一条
    有没有计算手续费与滑点?有——两项都在真实约束名单里分别做一次「计入 / 不计入」的对比,看感应强度
    涨跌停与停牌怎么处理?涨停信号与连板数是 enriched 的一部分涨跌停制度下“买不到”的情形难以在纯数值回测里完全复现,需要人工判断
    是否使用复权数据?前复权,且指标与回测共用同一份请确认你自己导入的数据不是已复权的,否则会双重处理
    股票池有悬殊偏差吗?股票池口径由你的数据源决定,官方未承诺历史成分用当前仍在交易的股票去回测更早时期,会系统性高估,这是策略以外的偏差
    做了参数敏感性吗?本身不自动扫参数;但因子搜索与策略迭代提供了正式方法在正式流程下不要用手改参数、看结果、再改参数的方式做敏感性
    做了样本外验证吗?挖掘流程内置嵌套 walk-forward 与 purge;策略迭代提供留出集纪律普通回测模式本身不强制样本外验证,需要你自己切区间
    收益是不是靠少数几笔?可用交易明细与分标的统计自己算官方在挖掘发布门槛里把「样本外交易数 ≥ 60」写成硬条件,就是为了防这一点
    结果能导出复现吗?能——CSV 四段 + 候选方案一键载入复现失败时先排查数据与版本,而不是先改策略
    这十个问题里,有三个是系统帮不了你的:涨跌停与停牌的可成交性、股票池的历史成分偏差、以及普通回测模式下的样本外强制性。它们都不是缺陷,而是这类工具与制度现实之间的真实距离。把它们记在心里,比多调一个参数更能提高你对结果的判断力。
    Failure modes

    TSP 回测有哪些典型失败模式?

    下表列出七种最常见的失败模式、它们看起来像什么,以及到底在哪一步崩掉。认得出来,比会调参数更重要。

    失败模式典型症状它在哪一步崩掉
    样本内优秀、样本外失效回测曲线很漂亮,换一段区间就不行过拟合:参数在同一段历史上被反复调到最优
    计入成本后直接转负不计费用时收益可观,加上费用后变负交易频率高,成本占据了大部分优势
    参数轻微变化、收益大幅变化把均线周期从 20 改到 22,结果完全不同缺乏参数敏感性检查:真正健壮的策略应该在一个区间内都成立
    换数据源后信号不一致同一天、同一策略,两个溕选出不同标的复权方式、成交额口径或股票池不同,而不是策略逻辑不同
    胜率很高但盈亏比很差大多数交易小赚,少数几笔大亏只看胜率不看盈亏比;官方把两者放在同一屏就是为了防这个
    结果靠少数几笔删掉最赚的三笔后策略变负样本量不足。官方挖掘门槛要求样本外交易数 ≥ 60,就是这个原因
    回测很好但实盘买不进去涨停买不到、滑点远大于假设这是纯数值回测难以完全复现的部分,需要人工判断
    这七种失败模式里,只有最后一种不能靠调参数解决。前六种都能通过换区间、加成本、做敏感性、统一口径来暴露或修正;最后一种(涨停买不到、滑点远大于假设)是建模能力的边界,只能靠你在实盘中观察并在未来版本里把假设调得更保守。对一个研究工具而言,把边界写出来比把结果包装得更好看更重要,因为前者能让你提前放弃一个注定不成的方向。
    Set the contract

    跑正式回测前,应该先把哪些口径定下来?

    下面五个口径是本站归纳的「先定规矩」清单:它们不改策略逻辑,但决定你看到的结果有没有意义。

    跑一次可信的回测,先把这五个口径定下来

  • 第一个口径 · 区间划分

    至少切三段:调参用的段、验证用的段、你完全没碰过的段。第三段最重要,它是你唯一能用来评估“未来表现”的东西。

  • 第二个口径 · 成本假设

    先把手续费与滑点设成一个不保守也不离谱的值,然后再分别跑一遍极低与极高。结果在三者之间都站得住,才叫健壮。

  • 第三个口径 · 股票池

    确认你用的是不是当前仍在交易的股票。如果是,你的回测里天然不包含那些已经退市的标的,结果会系统性偏好。

  • 第四个口径 · 复权与字段单位

    确认你导入的数据没有二次复权,且单位与系统一致。官方用 pct_unit 强制要求源头声明单位,就是为了防这一类错。

  • 第五个口径 · 结果导出与标记

    每次跑完都导出 CSV 并记下参数。否则一周后你就不知道那条好看的曲线到底是哪组参数跑出来的。

  • FAQ

    tick-stock-panel 回测与可信度常见问题

    以下答案基于官方仓库与文档的核验结果;涉及版本、数据源口径与许可条款的内容一律以官方仓库与官方文档为准。
    tick-stock-panel 的回测引擎到底是什么?

    这里要说一个官方资料自己就不完全一致的地方:README 的技术栈里写的是「自研仓位模拟引擎(T+1 / 费用 / 滑点 / 分钟回放)+ vectorbt(部分路径)」,而 docs/features.md 写的是「基于 vectorbt」。本站不替你选一个说法,因为两种表述都在官方仓库里。对你而言真正重要的是约束本身:不管底层是谁,T+1、费用、滑点与持仓天数都在。你验证口径的方法也不变:看交易明细里买入日是不是晚于信号日、成本是不是真的扣了。

    不计手续费和滑点,结果会差很多吗?

    取决于你的交易频率,但在高换手策略上差异往往是决定性的。官方把手续费与滑点都列进了真实约束清单,就是为了避免你在「不计成本」的假设下做决定。建议你自己做一次对照:同一个策略、同一段区间,分别在计入与不计入成本两种设定下跑一遍,看差距有多大。这比看任何三方结论都有说服力,因为参数是你自己的。判断标准很简单:如果一个策略在合理成本下就不成立,那它本身就不适合作为你的候选,不需要纠结到底该用多少滑点。

    因子归因为什么有时候是空的?

    因为它只覆盖 meta.scoring 非空的策略(内置策略与自定义 polars 策略),而矩阵单因子排名类策略暂不产出归因——这是官方明确说明的边界。它的数据来自入场候选快照,零额外计算,所以不会影响回测耗时。碰到空的归因栏,先判断策略类型,再判断功能是否异常。

    分钟回测会不会有未来函数?

    官方在入场价与回放方式上做了选择:逐交易日回放信号、以分钟收盘价入场、输出分钟级成交明细,且与日线回测共用同一套 T+1 与费用约束。收盘价入场是一个保守选择:它避免了「用分钟内最优价成交」这种在实盘中难以保证的假设。

    怎么判断一个回测结果是不是只靠少数几笔?

    用交易明细与分标的统计自己算:看前几笔盈利占总盈利的比重,以及删掉最赚的几笔后结果是不是还成立。官方在挖掘的发布门槛里把「样本外交易数 ≥ 60」写成了硬条件,就是为了防止这种情况被当成可用策略发布出去。你在普通回测模式下也应该自己设一个最低交易数心里线。一个简单做法:把交易明细按盈利降序排,删掉前 10%,看剩下来的结果还能不能站住。站不住就说明优势集中在少数几笔上。

    回测结果能导出吗?怎么复现?

    能,而且官方把复现做成了一个动作:结果可导出 CSV 四段(概要 / 净值曲线 / 交易明细 / 分标的统计),也可保存候选(存完整参数与指标快照),回测页的「候选方案」可一键载入并回填全部参数。复现失败时,顺序应该是先排数据(复权与股票池)、再排版本,最后才怀疑策略。把每次回测的参数与导出文件放在同一个目录,下次就能直接对比而不用猜,也能避免重复劳动。

    回测看懂了,怎么把可信度做成正式流程?

    先看因子平台与挖掘页(嵌套 walk-forward、purge 与发布门槛),再看 AI 助手与监控页。