Skip to content

第 15 讲:回测到现实——成本与滑点

本讲要点

回测权益要按可成交假设打折;忽略摩擦的策略不能进答辩。


1. 回测为何偏乐观

第 8–14 讲多数在用收盘价、零摩擦(或第 11 讲简单扣费)。现实中至少还有:

摩擦直觉
佣金按成交金额收取的费用
印花税等视市场与品种而定(股票常见;ETF 规则不同)
买卖价差买入偏卖一价、卖出偏买一价
滑点 / 冲击订单使价格不利移动;越急、越大、越不流动越明显

入门课不接券商 API,但必须建立:成交价 ≠ 回测里的收盘价,换手越高,折扣越大(与第 11 讲呼应)。


2. 本讲扣费方式

对月度动量 Top-2 等权,仍用:

净收益 ≈ 毛收益 − 单向换手 ×(单边成本 bps)/ 10000

对照四档假设(教学用,非实盘报价):

情景单边成本含义
理想成交0 bps账面极限
佣金约 5bps5偏低摩擦
佣金+滑点10常见入门压力测试
偏保守20更苛刻

3. 代码要点

python
for cost_bps in (0, 5, 10, 20):
    ret = portfolio_period_returns(month_end, weights, cost_bps=cost_bps)
    # 打印累计 / 年化 / Sharpe / 回撤,并画净值

脚本:easy-quant/code/15_execution_gap.py


4. 运行结果

text
理想成交 (0bps)         累计  63.56%  年化  9.99%  Sharpe  0.60  最大回撤 -24.14%  均换手 49.19%
佣金约 5bps            累计  61.10%  年化  9.67%  Sharpe  0.58  最大回撤 -24.63%
佣金+滑点 10bps         累计  58.67%  年化  9.35%  Sharpe  0.56  最大回撤 -25.12%
偏保守 20bps           累计  53.93%  年化  8.71%  Sharpe  0.52  最大回撤 -26.09%

相对理想: 佣金约 5bps  收益差 -2.46%
相对理想: 佣金+滑点 10bps  收益差 -4.89%
相对理想: 偏保守 20bps  收益差 -9.63%
情景累计收益Sharpe相对理想
理想 0bps63.56%0.60
5bps61.10%0.58−2.46%
10bps58.67%0.56−4.89%
20bps53.93%0.52−9.63%

理想 vs 扣费

读法:

  • 月均单向换手约 49% 时,10bps 大约吃掉近 5 个百分点累计收益。
  • 若第 11 讲改用周频,同样 bps 下损耗会更大——高频结论必须带摩擦
  • 答辩最低要求:同时给出理想与至少一档压力成本;不能只展示 0 成本曲线。

5. 本讲小结

  • 佣金、价差、滑点使回测偏乐观
  • 用换手 × 单边成本做可复现的压力测试
  • 下一讲:研究如何监控与迭代,并对照开篇目标自评

上一讲:walk-forward · 下一讲:研究迭代