滑点假设:回测成本参数的"定价学"
先掌握这个答案
三层结构:①固定值(入门):单边0.1-0.3%——先有个数;②分层假设(合格):按流动性分层(大盘0.05%/中盘0.1%/小盘0.25%)+按时段(开盘±50%)——成本随标的特性变化;③量价模型(进阶):滑点= f(订单占均成交额比例),如线性冲击impact=0.6×participation——大资金回测必用。保守原则:用实测或估算的P75而非P50(实盘偏分布的坏边);机构的"影子回测"甚至假设成交价=决策价±2×tick。敏感性报告格式:三档成本(乐观/基准/悲观)下的净收益表——策略生死不应在±50%成本假设间翻转。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
每一笔收益都要有可执行时间线
打印数据截止时间、信号时间、订单时间、成交时间和持仓收益区间。收盘信号不能乘当天完整收益;次日开盘成交也不能无条件拿到整个close-to-close收益。用原始价格判断可成交性,并纳入停牌与涨跌停。
成本必须按成交口径计算
声明换手是单向还是双向,是否有单笔最低佣金、卖出税费、借券利息和期货展期。成交价差、冲击与资金占用不能混为一个固定常数;对费率和参与率做压力测试。
本阶段实战方法 · 回测先过时序、成交与成本三道关
把信号变成策略收益时,每笔收益必须能追溯到当时能下出的订单。
- 画出时间线:数据可得→算信号→下单→成交→持仓收益;收盘信号不能倒用当天完整收益。
- 明确交易价格、T+1可卖数量、停牌涨跌停、仓位上限和实际成交量约束。
- 同时报告毛/净收益、换手、最大回撤、基准和样本外结果;对滑点与费率做压力测试。
使用边界
- 简单shift(1)只解决部分时序问题;次日开盘成交还要区分隔夜和日内收益。
- 成本应按成交金额与买卖方向计提;0.15%是教学情景,不是统一市场费率。
- 用市场的平均滑点:你的滑点取决于你的单量与对手盘——别人的平均值不是你的价格;分层+参与率才贴近
- 成本假设保守到策略全亏:过度悲观同样失真(错杀可行策略)——P75+敏感性区间是平衡点
- 滑点假设定了就不变:市场流动性结构会变(注册制后小票流动性下台阶)——参数要定期重估
🛠 本题实践任务
为你的回测写cost配置(至少分层版),输出策略在三档成本(P50/P75/1.5×P75)下的净收益表。回答:你的策略在悲观档还活着吗?
💡 提示(先自己想5分钟再看)
三档表的行=成本档、列=净超额/夏普/换手;"悲观档归零"的策略要先改频率再谈上线。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
🤖 AI导师
导师会先检查你的前置知识(成本三件套、滑点概念),再用案例、公式和代码帮助理解。此功能需要先启用服务。