成交假设三档:从"收盘价幻觉"到严格撮合的工程实现
先掌握这个答案
三档规则集:①理想档:t日信号→t日收盘价成交、无约束——研究初筛用(虚高5-15%);②保守档:t日信号→t+1日开盘或VWAP成交+双边滑点——候选策略检验(虚高2-5%);③严格档:t+1成交+涨跌停/停牌不可成交+部分成交规则+量约束(单票≤当日成交额5%)——上线前终审(基本无虚高)。撮合器最小实现清单(严格档):输入(信号/价格/约束表)→依次检查(停牌?涨跌停方向?量上限?)→成交价(次日VWAP或均价+滑点)→输出(成交记录+未成交队列顺延);伪代码六分支覆盖90%场景。档位选择原则:迭代早期用高速度低真实(向量化+理想档),越接近决策越降速升真——与q-504的引擎分工正交组合(2×3=六种配置,研究流程的"档位矩阵")。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
每一笔收益都要有可执行时间线
打印数据截止时间、信号时间、订单时间、成交时间和持仓收益区间。收盘信号不能乘当天完整收益;次日开盘成交也不能无条件拿到整个close-to-close收益。用原始价格判断可成交性,并纳入停牌与涨跌停。
本阶段实战方法 · 回测先过时序、成交与成本三道关
把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。
- 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
- 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
- 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。
使用边界
- 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
- 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
- 用严格档就够了不用前面:研究早期严格档的慢会杀迭代——档位是流程不是道德(分阶段用)
- VWAP成交假设最真实:你拿到VWAP的前提是全天均匀下单——大单实际偏离VWAP;它比"收盘价"真实、比"实际执行"乐观
- 部分成交很难写先不写:单票量约束(≤5%成交额)已覆盖主要场景——部分成交的精细版可后补,量约束不能省
🛠 本题实践任务
把你的回测从理想档升到保守档(次日成交+滑点),记录年化变化;再实现fill_model的停牌与涨跌停分支(严格档第一步),跑对照——三档滑梯完整了吗?
💡 提示(先自己想5分钟再看)
第一档到第二档的差距常在3-5个点——看到差距别心痛,看到没有差距才该担心(假设可能没接对)。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
🤖 AI导师
导师会先检查你的前置知识(滑点结构、撮合约束),再用案例、公式和代码帮助理解。此功能需要先启用服务。