成本模型是回测与实盘之间最大的鸿沟制造者:几乎每一个「回测很美、实盘很惨」的故事,成本都扮演了主要凶手。本篇把成本拆到最小单元,给出可直接进回测引擎的模型参数。
显性成本:可查账的部分
A 股股票的费用清单(费率随监管调整,用前核对最新):
| 项目 | 量级 | 方向 |
|---|---|---|
| 佣金 | 万 1–万 3(量化专用席位可谈) | 双边 |
| 印花税 | 0.05%(2023 年减半后) | 卖出单边 |
| 过户费 | 0.001% | 双边 |
| 融资利率(若加杠杆) | 年化 5%–8% | 持有期 |
ETF 场内交易免印花税——高频调仓场景用 ETF 替代个股篮子有真实的成本优势。期货的成本结构完全不同:无印花税、佣金极低(按手),主要成本是展期成本与基差(见衍生品 )——「成本」必须按品种重新定义,不能复用股票的参数。
价差成本:half-spread 的会计
市价单(吃单方)立即付出半个买卖价差:你要买 → 成交在 ask(卖一)而非中间价。half-spread = (ask − bid)/2。A 股的典型量级:沪深 300 成分股 1–3bp;中证 1000 成分 3–8bp;微盘股与流动性差的票 20bp+。
三个工程要点:
- 价差随波动率与流动性动态变化——成本模型里的 spread 不该是常数:
spread ≈ a + b × σ_d(与日内波动正相关),开盘与尾盘时段价差系统性更宽(时段分档); - 限价单是「负价差」的期权:排队成交赚 half-spread,但承担不成交与逆向选择风险(排到了往往因为价格在往坏处走,见市场结构 )——执行算法的进出场本质是在这个期权上做价;
- 回测的简化阶梯:用「日线 high-low 的 1/4」估计 spread(Roll/Corwin-Schultz 类代理),或直接用 L2 快照的真实价差(有数据时,见数据类型 )。
冲击成本:你推动价格的部分
下单量超过盘口深度时,你自己推动价格——这是大资金与小资金成本结构的分水岭。行业标准近似是平方根模型:
冲击成本 ≈ k × σ_d × √(Q / ADV)
Q=订单量、ADV=日均成交额、σ_d=日波动率、k≈0.5–1(经验系数,按市场与执行方式校准)。它给出的量级直觉:
- 流动性好的票(ADV 10 亿)买 1000 万:Q/ADV = 0.1%,冲击 ≈ 0.5 × 2% × √0.001 ≈ 3bp——可忽略;
- 冷门票(ADV 2000 万)买 500 万:Q/ADV = 25%,冲击 ≈ 0.5 × 3% × 0.5 ≈ 75bp——一个中频信号的半条命。
平方根模型的来源是 Kyle 模型一脉的市场微观结构理论(冲击 ∝ 订单量的平方根而非线性,见市场冲击与 Kyle 模型
)。校准方法:用自己的成交流水回归——每笔成交的「决策价 vs 成交价」差额对 √(Q/ADV) 回归,斜率就是你的 k(这就是 TCA 的核心动作,见TCA
)。
滑点与机会成本:两个会计科目
滑点(slippage):决策价(信号价)与实际成交均价的差额 = half-spread + 冲击 + 时效损耗(从决策到下单期间价格移动)——它是执行质量的综合仪表,但拆开才能归因(「时效损耗大」要提速,「冲击大」要拆单)。回测里应显式记录「决策价 → 假设成交价」的模拟滑点,实盘后用真实滑点对照(影子偏离的执行维度,见事中风控 )。
机会成本(opportunity cost):想成交没成交、价格走掉的部分。执行算法的时间权衡本质就是「冲击成本 ↑ vs 机会成本 ↓」:拆得越慢冲击越小、但错过行情越多——Almgren-Chriss 理论正是求这个权衡的最优轨迹(见执行算法 )。机会成本最阴险的形态:止损单在跌停板挂不上——回测里这是「止损生效、小亏离场」,实盘里是「无法出场、亏满全程」(不可成交状态建模见回测框架设计 )。
成本模型的完整参数卡(回测引擎配置示例)
| |
成本压力测试是上线门槛(成本 ×2 后策略是否仍成立,见回测偏差 的清单)——因为成本参数的校准误差永远存在,策略必须对它的不确定性稳健。
关联阅读:冲击的理论根基市场冲击与 Kyle 模型 ;成本的实测TCA ;降低成本的算法执行算法 。