阶段6回测基础●●●●●

成交假设三档:从"收盘价幻觉"到严格撮合的工程实现

我的掌握程度:
q-519精讲

先掌握这个答案

三档规则集:①理想档:t日信号→t日收盘价成交、无约束——研究初筛用(虚高5-15%);②保守档:t日信号→t+1日开盘或VWAP成交+双边滑点——候选策略检验(虚高2-5%);③严格档:t+1成交+涨跌停/停牌不可成交+部分成交规则+量约束(单票≤当日成交额5%)——上线前终审(基本无虚高)。撮合器最小实现清单(严格档):输入(信号/价格/约束表)→依次检查(停牌?涨跌停方向?量上限?)→成交价(次日VWAP或均价+滑点)→输出(成交记录+未成交队列顺延);伪代码六分支覆盖90%场景。档位选择原则:迭代早期用高速度低真实(向量化+理想档),越接近决策越降速升真——与q-504的引擎分工正交组合(2×3=六种配置,研究流程的"档位矩阵")。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

每一笔收益都要有可执行时间线

打印数据截止时间、信号时间、订单时间、成交时间和持仓收益区间。收盘信号不能乘当天完整收益;次日开盘成交也不能无条件拿到整个close-to-close收益。用原始价格判断可成交性,并纳入停牌与涨跌停。

本阶段实战方法 · 回测先过时序、成交与成本三道关

把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。

  1. 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
  2. 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
  3. 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。

使用边界

  • 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
  • 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
背景 · 从一个困惑说起
回测里每一笔交易都要回答"以什么价格、能不能成交"——成交假设就是回答的档位设定。q-518定了成本参数,本题把完整的成交规则工程化:三档假设的精确语义与代码级实现。
由此产生的问题
三档成交假设(理想/保守/严格)的精确规则集?每档的适用场景与虚高量级?撮合器(fill model)的最小实现清单?
核心概念
三档规则集:①理想档:t日信号→t日收盘价成交、无约束——研究初筛用(虚高5-15%);②保守档:t日信号→t+1日开盘或VWAP成交+双边滑点——候选策略检验(虚高2-5%);③严格档:t+1成交+涨跌停/停牌不可成交+部分成交规则+量约束(单票≤当日成交额5%)——上线前终审(基本无虚高)。撮合器最小实现清单(严格档):输入(信号/价格/约束表)→依次检查(停牌?涨跌停方向?量上限?)→成交价(次日VWAP或均价+滑点)→输出(成交记录+未成交队列顺延);伪代码六分支覆盖90%场景。档位选择原则:迭代早期用高速度低真实(向量化+理想档),越接近决策越降速升真——与q-504的引擎分工正交组合(2×3=六种配置,研究流程的"档位矩阵")。
为什么需要它
①虚高量级的直觉:每降一档假设,年化掉2-5个点——三档全走一遍是"挤水分流水线"(q-503红旗检查的前置);②规则集的完备性:严格档的三约束(时点/方向/量)对应q-063前视、q-044涨跌停、q-055冲击三大杀手——成交假设是它们的交汇点;③工程复用:撮合器写一次,所有策略共用——它是回测框架里ROI最高的模块。
实际应用场景
实现顺序:先写保守档(够用于大部分研究)→再补严格档约束(上线前启用);两档结果对照进策略档案("成交假设代价:-3.2%/年")。
与之前知识的联系
q-504(引擎分工)正交组合成档位矩阵;q-044(涨跌停不可成交)与q-055(量约束)是严格档的两条硬规则;q-503(红旗)审计它的输出。
⚠ 常见误解
  • 用严格档就够了不用前面:研究早期严格档的慢会杀迭代——档位是流程不是道德(分阶段用)
  • VWAP成交假设最真实:你拿到VWAP的前提是全天均匀下单——大单实际偏离VWAP;它比"收盘价"真实、比"实际执行"乐观
  • 部分成交很难写先不写:单票量约束(≤5%成交额)已覆盖主要场景——部分成交的精细版可后补,量约束不能省

🤖 AI导师

导师会先检查你的前置知识(滑点结构、撮合约束),再用案例、公式和代码帮助理解。此功能需要先启用服务。