回测成本总偏低,怎样从成交残差判断哪类单子该重估
回测成本总偏低,应先把事前冻结预测与同口径成交标签配对,再按预测时已知的规模和时段检查残差,最后用留出订单验证修正。不能看到哪类单收益漂亮就给它调低滑点。本例四类训练残差分别为二、二、五、八基点,给固定预测加上对应修正后,四笔有标签留出订单的平均绝对误差从五点七五降到一点五基点;缺失标签那笔仍不能宣称预测准确。
十三张构造订单如何划分可用与缺失
构造观察日为2026年10月24日,设此前已冻结八笔训练订单,之后顺序发生五笔留出订单;不是将实际日期对应到真实市场。订单分小额常规、小额开端、大额常规、大额开端四类。“开端”只是本例预设的一段执行窗口标签,不暗示某交易所开盘规则。规模、时段、预测版本与订单ID在发单前均已知。
本例实测标签其实仍是人为构造的成交有向价差:以决策价为基准、仅覆盖已成交量,不含手续费、税、未成交机会项。名义金额是已成交数量乘决策价,小额一万元、大额五万元;每笔已成交量相对目标假设完整。标签基点乘名义金额再除一万,才得到元成本,不能将基点直接当百分数相乘。
四类原始预测分别为二、四、六、八基点。训练各两笔,标签依次为三和五、五和七、十和十二、十五和十七。留出各一笔可用标签为四、七、十三、十九,另有一张大额开端订单的成交标签缺失。缺失可能因为回报不完整,在这里不猜测原因,也不把它按零成交或零成本配对。
| 订单ID | 集合 | 分组 | 名义金额元 | 原预测bps | 标签bps | 残差bps | 训练修正bps | 新预测bps | 新残差bps | 标签金额元 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1-1 | train | 小额常规 | 10000 | 2 | 3 | 1.000000 | 2.000000 | 4.000000 | -1.000000 | 3.000000 |
| 1-2 | train | 小额常规 | 10000 | 2 | 5 | 3.000000 | 2.000000 | 4.000000 | 1.000000 | 5.000000 |
| 2-1 | train | 小额开端 | 10000 | 4 | 5 | 1.000000 | 2.000000 | 6.000000 | -1.000000 | 5.000000 |
| 2-2 | train | 小额开端 | 10000 | 4 | 7 | 3.000000 | 2.000000 | 6.000000 | 1.000000 | 7.000000 |
| 3-1 | train | 大额常规 | 50000 | 6 | 10 | 4.000000 | 5.000000 | 11.000000 | -1.000000 | 50.000000 |
| 3-2 | train | 大额常规 | 50000 | 6 | 12 | 6.000000 | 5.000000 | 11.000000 | 1.000000 | 60.000000 |
| 4-1 | train | 大额开端 | 50000 | 8 | 15 | 7.000000 | 8.000000 | 16.000000 | -1.000000 | 75.000000 |
| 4-2 | train | 大额开端 | 50000 | 8 | 17 | 9.000000 | 8.000000 | 16.000000 | 1.000000 | 85.000000 |
| 1-3 | holdout | 小额常规 | 10000 | 2 | 4 | 2.000000 | 2.000000 | 4.000000 | 0.000000 | 4.000000 |
| 2-3 | holdout | 小额开端 | 10000 | 4 | 7 | 3.000000 | 2.000000 | 6.000000 | 1.000000 | 7.000000 |
| 3-3 | holdout | 大额常规 | 50000 | 6 | 13 | 7.000000 | 5.000000 | 11.000000 | 2.000000 | 65.000000 |
| 4-3 | holdout | 大额开端 | 50000 | 8 | 19 | 11.000000 | 8.000000 | 16.000000 | 3.000000 | 95.000000 |
| 缺失 | holdout | 大额开端 | 50000 | 8 | 未定义 | 未定义 | 8.000000 | 16.000000 | 未定义 | 未定义 |
表中所有修正只从八笔训练求出,留出行虽能展示实际标签,却不能反过来参与拟合。配对覆盖为十三张提交中十二张,训练八中八,留出五中四。不能只报告十二张已配对而隐去缺失,因为缺失可能集中在最贵、最难成交的订单,样本选择本身会使成本估计偏低。
分组残差比整体均值更能定位偏差
残差定义为实际基点减冻结预测,正值表示原预测偏低。小额常规训练残差为一和三、均值二;小额开端同样为一和三、均值二;大额常规为四和六、均值五;大额开端为七和九、均值八。四类平均只代表各自两张训练样本,没有足够样本证明稳定统计规律。
| 训练组 | 样本数 | 平均残差bps |
|---|---|---|
| 小额常规 | 2 | 2.000000 |
| 小额开端 | 2 | 2.000000 |
| 大额常规 | 2 | 5.000000 |
| 大额开端 | 2 | 8.000000 |
若只用八笔整体平均残差四点二五基点统一修正,小额订单可能被抬得过多、大额开端又补得不够。整体数字适合汇总诊断,却掩盖了规模和时段共同影响。分组也不一定永远优于整体:类别过细会导致样本极少,甚至新组没有可用均值。本页采用四个预先定义的组,是为了让每一步可手算,不声称已经找到最佳特征划分。
本例的修正模型是原预测加训练同组平均残差,没有重新估计整套冲击函数。修正后四类预测依次为四、六、十一、十六基点。保持原版本预测列不变很重要,否则后续审阅者无法知道“预测准确”来自原模型,还是把实际结果写回了预测字段。新版本应单列,且标明从哪一批样本学习。
留出检验怎样阻止事后贴合
四笔有标签留出残差在修正前为二、三、七、十一,绝对值平均五点七五;修正后为零、一、二、三,平均一点五。指标单位是基点的逐订单等权平均,不是金额加权,也不是账户总收益改善了四点二五基点。大额订单名义金额更大,同样一基点对应的元数也更多。
留出标签换算的实际金额分别为四、七、六十五、九十五元。修正后预测金额分别四、六、五十五、八十元,因此剩余金额误差为零、一、十、十五元。若要给总金额误差或名义金额加权基点,还需要按这套权重重新汇总,不能把等权一点五基点直接乘任意账户资金当成成本误差金额。
把留出四笔的平均残差再加一次,可能让这四笔误差更小,但它们就不再是独立留出;必须另找尚未使用的后续样本验证。改变分组、挑选误差指标或删除不利订单,只要依据了这批留出结果,都消耗了验证的独立性。报告可以诚实说用于下一版训练,不能继续称同批检验未参与建模。
一笔缺失标签与一个未见分组怎样处理
缺失那张大额开端仍有冻结预测八、修正预测十六基点,但实际成本和残差均未定义,不参与误差分母。不能用预测值填实际,否则该行残差必然零;不能因同组已有一张十九,就把缺失也补十九而宣称覆盖完整。对缺失订单应追查回报与配对键,必要时报告界限或未知,不能只交一个更好看的平均数。
若出现事前未定义的新规模或新时段,没有对应训练组,当前模型应输出没有分组修正,保留原预测并标明覆盖范围不足,或使用在验证前已经约定的回退规则。不能临时从最相近且误差最小的组借一个数。若真实业务中规模是连续变量,也需要另外验证分箱或函数形式,本页离散四类的结论不能外推到所有规模。
标签口径也必须一致。本例都是决策价有向已成交价差,不得把一部分订单换成成交时中价有效价差,另一部分再加未成交机会项。手续费已在实付账中的,应另列原始费用或明确加入预测目标,不能先放进净成交价、再额外加一次“总成本”。有向残差允许为负,强行截零会掩盖过高预测与市场有利移动。
从残差到重估,需要哪些留痕
先保存发单前输入快照和预测版本,再按唯一订单键对齐成交标签及币种单位,记录所有未配对原因;随后用训练数据形成组内修正,冻结版本,再对后续留出输出误差与覆盖。若新旧模型还改变了成交量或调度,必须重新模拟执行,不能仅替换成本一列就认定账户净值可比。本例固定成交与数量,只审计标签预测误差。
旧文交易成本假设提出成本压力测试,本页交付训练和留出残差。完整未成交比较见实施差额交易成本分解,延迟和缺失成交来源见交易延迟分布成本重放。滑点与手续费敏感度可看基础成本档位,不能自动学习分组修正或证明这十三张构造标签真实。
来源核对:scikit-learn 1.9.1常见陷阱,实读12.2 Data leakage及12.2.1—12.2.2训练测试隔离;Cvxportfolio 1.5.0成本文档实读TransactionCost的预测量与模拟口径。仅支持隔离和成本建模方法,构造标签不是实际成交数据,也未验证任何真实预测精度。
道积君编辑组,AI辅助编写与核算。全部算例为构造教学输入,非真实交易、交易所撮合或券商收费证明;数值在完整精度计算后显示至小数点后六位,不用于预测收益。
复算资料
本篇编号DJ4-077。下载Python复算脚本(文本)与构造输入输出JSON,按编号核对本篇。脚本改存为.py后可用Python标准库运行,数据不是实际用户记录。