成本、滑点与贴近现实的假设
为回测建立单笔交易成本模型,计算成本拖累和盈亏平衡成本,并用更高的滑点对系统进行压力测试。
你将学到什么
- 哪些成本项目应纳入回测,以及如何按每次往返交易来表示它们
- 如何计算一个系统的成本拖累和盈亏平衡成本
- 在模拟中对市价单、止损单和限价单采用贴近现实的成交假设
- 如何通过把滑点翻倍来对系统进行压力测试
讲解
订单簿如何产生点差、滑点和市场冲击,已在课程《订单簿、流动性与订单如何成交》中介绍。在这里,你要把这些影响转化为回测中的数字。
成本模型
一次往返交易是一笔完整的交易:入场加出场。对于每次往返交易,贴近现实的回测都要扣除:
- 佣金:经纪商收取的费用,入场和出场时各收一次。
- 点差:买价(bid,你卖出时的价格)与卖价(ask,你买入时的价格)之间的差额。如果你以卖价买入、以买价卖出,那么每一边支付一半点差,因此每次往返交易支付一个完整的点差。
- 滑点:回测假设的价格与你实际获得的价格之间的差额,每一边都要计入。
- 融资成本:差价合约(CFD)等杠杆产品的隔夜成本,以及外国品种的货币兑换费用(如适用)。
把所有项目都表示为头寸价值的基点(bp),其中 1 bp = 0.01%。这样就能比较头寸规模不同的系统。
成本拖累与盈亏平衡成本
每笔交易净结果 = 每笔交易毛结果 − 每次往返交易成本
成本拖累 = 每次往返交易成本 ÷ 每笔交易毛结果
盈亏平衡成本是使净结果变为零的每次往返交易成本;它等于每笔交易的平均毛结果。交易次数多、平均盈利小的系统,盈亏平衡成本很低,对成本模型中的误差非常敏感。一条有用的经验法则:如果贴近现实的成本吞掉了平均每笔毛结果的一半以上,这个系统的安全边际就很小。
贴近现实的成交假设
- 不要在信号 K 线的收盘价交易,除非你真的能做到。如果信号使用的是日收盘价,更稳妥的假设是在下一根 K 线的开盘价加上滑点执行。
- 止损单在触发时会变成市价单,因此要加上滑点;还要记住,跳空可能让你的成交价远远超出止损价。计划风险并不等于最大可能亏损。
- 限价单:不要仅仅因为价格触及了你的限价就算作成交。更严格的规则是,价格必须穿过限价至少一个最小变动价位(tick,即最小的价格步长)。
- 规模:如果你的订单相对于典型成交量较大,滑点就会上升。请让订单相对于平均成交量保持较小,或者按更高的成本进行建模。
压力测试
由于成本具有不确定性,请把成本翻倍(或把滑点翻倍)后再运行一次回测。稳健的系统仍会保持为正;脆弱的系统则会崩溃。把结果写进你的测试报告。
示例演算
假设示例:一个股票交易系统每年进行 120 次往返交易,平均头寸为 €10,000。每笔交易的平均毛结果为 +0.40%,即 €40。假设条件:佣金每边 €4,点差为头寸价值的 0.10%,滑点每边 0.05%。税费和货币兑换不计在内。
第 1 步,佣金:€4 × 2 = €8。
第 2 步,点差:0.10% × €10,000 = €10。
第 3 步,滑点:0.05% × €10,000 × 2 = €10。
第 4 步,每次往返交易的总成本:€8 + €10 + €10 = €28,即 28 bp。
第 5 步,每笔交易净结果:€40 − €28 = €12。成本拖累 = 28 ÷ 40 = 70%。
第 6 步,每年:毛结果 120 × €40 = €4,800;净结果 120 × €12 = €1,440。
把滑点翻倍至每边 0.10% 的压力测试:滑点 = €20,总成本 = €38,每笔交易净结果 = €2,每年净结果 = 120 × €2 = €240。
| 情景 | 每笔交易成本 | 每笔交易净结果 | 每年净结果 |
|---|---|---|---|
| 毛结果(无成本) | €0 | €40 | €4,800 |
| 基准成本 | €28 | €12 | €1,440 |
| 滑点翻倍 | €38 | €2 | €240 |
盈亏平衡成本为每次往返交易 €40。基准情景只留下 €12 的余量,滑点估计中的一个小误差就几乎会抹掉全部优势。这个系统需要更少的交易、更大的平均波动或更便宜的执行。
常见错误
练习活动
请在纸上完成:一个系统每年进行 60 次往返交易,头寸为 €5,000,每笔交易的平均毛结果为 €55。佣金每边 €5,点差为 0.08%,滑点每边 0.10%。(a) 计算每次往返交易成本、每笔交易净结果和每年净结果。(b) 在滑点翻倍的情况下重新计算。(c) 盈亏平衡成本是多少?
查看答案
(a) 佣金 €10 + 点差 €4 + 滑点 €10 = €24。每笔交易净结果 €55 − €24 = €31。每年净结果 60 × €31 = €1,860(毛结果 €3,300)。
(b) 滑点 €20,总计 €34,每笔交易净结果 €21,每年净结果 €1,260。
(c) 每次往返交易 €55,即平均毛结果。
局限性:这里把成本视为每笔交易固定不变;实际上它们会随波动率、交易时段和订单规模而变化,而且税费被忽略了。
要点总结
- 对每次往返交易的佣金、完整点差、两边的滑点以及融资成本进行建模。
- 把每笔交易成本与平均每笔毛结果进行比较;成本拖累高意味着系统脆弱。
- 假设在下一根 K 线执行、止损有滑点,并对限价单采用严格的成交标准。
- 始终用翻倍的成本进行压力测试,并报告两种结果。
下一步
在下一课中,你将把仓位规模规则纳入系统,并看看它们如何改变收益和回撤。
自测
回答问题后核对答案。你可以随意重试多次。
供您自行复习的自动自测。您的答案在浏览器中核对,我们不会查看或评估。这不是考试,也不是资格证书。
您的进度
“已完成”仅表示您将本课标记为已学完,并不是对您理解程度的测试。 学习进度和笔记仅保存在此设备的此浏览器中,而非账户中。