← 返回文章库

滚动验证窗口重叠,拼接收益时如何避免重复算同一天

2026-10-23 · L5

滚动验证窗口重叠时,不能把各窗口收益直接首尾相接。先按日期合并覆盖关系,再按事先定义的可用模型规则,为每个日期保留一条账户收益。若把同一天乘两次,会同时扭曲累计回报与样本长度,即便每个窗口内部计算都正确也无济于事。

三个窗口怎样覆盖八个构造日?

本页自行编写拼接实验,未运行第三方回测框架。构造八个实验日,收益依次为1%、负2%、3%、0.5%、负1%、2%、1%、负0.5%。窗口一覆盖第1至4日,窗口二第3至6日,窗口三第5至8日。每个窗口输出四条,原始共十二条,但唯一日期只有八个。

为了隔离重复问题,三个窗口在重叠日给出相同基础收益。另明确假设模型一在第1日前、模型二在第3日前、模型三在第5日前已完成并可用,归属规则为使用当时最新可用模型。它是构造发布日程,不代表现实训练或验证已经完成。

实验日覆盖窗口假设唯一归属窗口最终唯一收益率
1111.00%
211-2.00%
31,223.00%
41,220.50%
52,33-1.00%
62,332.00%
7331.00%
833-0.50%

原始拼接12条,唯一日期8个;直接拼接累计回报8.684899881%,唯一日期累计回报3.975389711%。重复实验日:3,4,5,6。

直接拼接相当于把第3、4、5、6日各复利两次。唯一版本则按第1到8日各乘一次增长因子,程序实际计算两个总回报并列显示。差额来自重复观测,不是模型真的多经历了四个交易日,也不是增加了一组独立样本。

只有八个唯一日,为什么不能说回测了十二天?

重叠窗口输出条数反映文件结构,不是自然时间长度。把十二条当十二天,会影响年化期限、交易次数与统计样本数量。即使重复日收益恰好为零、最终金额没变,样本长度仍然被虚增,所以不能只靠终值是否接近判断拼接正确。

日期键还应包含账户或策略输出范围。若多个标的分别给出同日收益,先按组合规则合成账户日收益,再做唯一日期拼接;不能把不同标的同日条目当作重复简单删除,也不能当成额外时间顺序连乘。横截面聚合与时间拼接是两件事。

本页没有真实交易日历,因此用编号保持覆盖关系完全可见。实际使用应保留时区、交易日和估值结束时点,防止同一自然日不同时段输出被误合并,或同一事件因时间格式不同未被识别。

重叠日收益不同,保留哪个版本?

必须根据事先规则与模型可得性,而非哪条收益更高。可采用最新已完成训练且当时可用的模型,也可采用明确的固定优先级或真实并行资金权重。每种选择都对应不同执行策略,应在看结果之前确定并保留归属日志。

若模型二虽覆盖第3日、实际到第4日后才训练完成,就不能在第3日使用它。窗口上的测试标签不能替代模型发布时间。本文把可用时间明确提前,才允许在重叠日选最新模型;真实系统需用训练和发布记录核验,不得从文件名推断。

如果三个模型真实同时运行各占部分资金,应先按资金权重生成唯一账户收益,而不是从中挑一个。简单平均模型收益也要说明权重和再平衡;它是一个新的并行组合,不是自动消除重叠的中性方法。相同日期只能进入账户时间轴一次,但那条收益可以由明确组合规则合成。

窗口边界与持仓衔接还需要什么?

即使日期唯一,不同窗口各自从现金重置,会让拼接忽略交接时的持仓与成本。新模型接管时是否平旧仓、调仓何时成交、费用如何计入,应另行重放。本文只做已经给定日收益的输出拼接,不能据此宣称交易级路径已完整可执行。

窗口第一日的收益还要确认它对应前一日到当日,还是从当日开始下一期。半开与闭合区间若混用,可能多算或漏算边界回报。为每条收益保存开始时点与结束时点,比仅写一个日期更容易查出跨窗口断点。

最小拼接核验表怎样设计?

保留日期、覆盖窗口、模型完成时间、可用状态、候选收益、归属规则、最终唯一收益与冲突处理。汇总时列原始条数、唯一日期数、重复日期数和空白日期数。唯一序列应单调排序,任何一天零条或多条都先解释,再做复利与年化。

[!pitfall] 去掉重复日期只修复输出层的一类错误,不证明训练测试隔离、模型选择或持仓衔接正确。不能把一条更平滑的拼接曲线当成验证通过证据。

Walk-forward母文说明流程背景,年化收益核算帮助理解期限。滚动验证工具可作基础示意,三窗口唯一归属由本文独立表格执行,不声称工具能自动选择模型或修复交易交接。保存逐日归属,才知道每段收益究竟来自哪一个可用版本。

窗口结果完全一致时,归属规则还有必要吗?

有。当前构造只让重复的经济影响容易看清,不代表未来重叠输出永远一致。若缺少事先规则,一旦两个模型同日结果不同,就可能事后选择较高收益。应在一致时也保存归属,下一版模型改变后继续沿用同一选择原则,而不是临时调整。

还可以核对覆盖矩阵的每个唯一日恰好有一个最终标记,并将归属后的增长因子与独立八日序列连乘比较。若只去重收益数值而不使用日期键,两个不同日期碰巧同收益会被误删;若只删除相邻重复,又可能漏掉被窗口排列分开的重复日。唯一性应由事件身份与时间区间定义,不由收益数字是否相等定义。

计算与来源怎样复核?

Python数学函数原始文档用于核对连乘、平方根和数值运算。本页结论来自明示输入的自行编写账表实验,没有调用第三方回测框架。来源核对日:2026-10-23。

署名:道积君编辑组。本文由AI辅助起草,所有数据为构造教学示例,金额、日期与公式经程序复算,不是实盘、真实市场历史或第三方框架运行结果。仅作投资教育,不推荐证券、平台或产品,不预测或保证收益。

复算资料

本篇编号为DJ109。可下载Python核算脚本(文本)与完整输入输出JSON,对照文中表格复算。脚本文件改存为.py后可用Python运行;数据均为构造教学样本。

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。