9.6 交易成本敏感性:成本一变策略就死?
课前导读
本节目标
你将学会:把交易成本从“细节”提升为策略生死线,检查一套回测结果是否经得起佣金、印花税、滑点和冲击成本的变化。 适合基础:已经知道资金曲线、回撤、胜率、盈亏比和风险调整收益的 A 股新手。 预计用时:约 40 分钟。 本节产出:完成一张成本敏感表,判断策略在成本升高时是仍有安全垫,还是很快死亡。
知识正文
1. 先用开小店理解交易成本
假设你开一家小店。
每卖出一件商品,毛利是 10 元。
听起来不错。
但你还要付房租、水电、包装、平台手续费和配送费。
如果这些成本合计 3 元,你还剩 7 元。
如果成本合计 9 元,你只剩 1 元。
如果成本合计 12 元,你卖得越多亏得越多。
交易策略也是这样。
回测里的毛收益,像是商品毛利。
佣金、印花税、滑点、冲击成本,像是小店的经营费用。
换手率越高,就像每天进出货越频繁,成本被放大的速度越快。
直觉提醒
低成本环境下赚钱的策略,不一定能在稍高成本下继续赚钱;真正稳健的策略要有成本安全垫。
2. 交易成本分成两类
第一类是显性成本。
显性成本是你能在规则或账单里直接看到的成本。
A 股常见显性成本包括佣金、印花税以及相关交易费用。
佣金通常和买卖金额有关。
印花税通常在卖出股票时产生,具体规则以当时市场制度为准。
这些成本相对容易写进回测程序。
第二类是隐性成本。
隐性成本不一定直接写在账单上,却会影响真实成交价格。
最常见的是滑点。
滑点是你想按某个价格成交,但真实成交价更差。
例如你计划 10.00 元买入,实际平均成交价是 10.03 元。
这 0.03 元就是买入端的价格损失。
另一个隐性成本是冲击成本。
当你的订单相对成交量较大时,自己的买卖行为可能推高买入价或压低卖出价。
对成交不活跃的小盘股,这个问题更明显。
3. 换手率:成本被放大的放大器
换手率可以先理解为“本金在一段时间里被交易了几遍”。
如果你有 10 万元本金。
一天买入 10 万元股票,第二天全部卖出,再换入另一批股票。
你的交易金额很快就会累积。
哪怕单次成本率看起来很小,重复很多次后也会侵蚀收益。
简化理解可以写成:
如果一个策略年换手 20 倍,单边综合成本每次 0.08%。
粗略成本拖累就是:
如果按完整买卖往返计算,成本还可能更高。
这就是为什么高频换仓策略必须特别重视成本。
低换手策略也要算成本,但安全垫通常更宽。
4. 成本敏感性要问什么
成本敏感性不是只扣一次手续费。
它要问的是:成本假设从低到高变化时,策略表现如何变化。
如果成本从 0.05% 提高到 0.10%,策略仍然盈利。
这说明它有一定安全垫。
如果成本从 0.05% 提高到 0.08%,策略就从盈利变亏。
这说明它的优势非常薄。
如果成本稍微提高,最大回撤立刻加深,夏普明显下降。
这说明策略可能依赖过于理想的成交条件。
回测陷阱
没有成本的回测,尤其是高换手回测,往往像没有房租的小店利润表,看起来美好但不真实。
5. A 股案例:一个高换手策略如何被成本吃掉
假设有一套 A 股短线策略。
它平均每笔交易毛收益为 0.30%。
每年大约做 180 次完整买卖。
先不考虑复利,只做直觉估算。
如果每次完整买卖成本是 0.05%。
单笔净优势约为:
如果每次完整买卖成本是 0.20%。
单笔净优势约为:
如果真实滑点和冲击成本让总成本达到 0.35%。
单笔净优势就变成:
策略从正期望变成负期望。
交易次数越多,这个负期望累积得越快。
这就是“成本一变策略就死”的含义。
不是所有策略都会死。
只有那些毛优势很薄、换手很高、成交假设很理想的策略,最容易被成本击穿。
6. 成本敏感表:把生死线画出来
下面是一张教学用成本敏感表。
假设策略每笔毛收益期望为 0.30%。
一年做 120 次完整交易。
为了简单,我们先用线性估算,不考虑复利。
| 完整买卖成本 | 单笔净期望 | 年度粗略贡献 | 状态 |
|---|---|---|---|
| 0.00% | 0.30% | 36.0% | 理想环境 |
| 0.05% | 0.25% | 30.0% | 安全垫较足 |
| 0.10% | 0.20% | 24.0% | 仍可观察 |
| 0.20% | 0.10% | 12.0% | 优势变薄 |
| 0.30% | 0.00% | 0.0% | 接近死亡线 |
| 0.40% | -0.10% | -12.0% | 策略死亡 |
这张表的重点不是精确预测收益。
它的重点是观察斜率。
成本每提高一点,收益掉得快不快?
死亡线在哪里?
如果死亡线离当前假设很近,就要非常谨慎。
如果策略在保守成本下仍然有正期望,才值得继续研究。
7. 不同成本的来源要分别想
佣金通常比较稳定。
但不同券商、不同资金规模和不同交易安排可能不同。
印花税与市场制度有关。
回测时不要把它忘掉,尤其是卖出频繁的策略。
滑点和交易时段、委托方式、价格波动有关。
开盘、收盘、快速拉升或快速下跌时,滑点可能更大。
冲击成本和订单规模、股票流动性有关。
成交额小、买卖盘薄的股票,更容易被订单影响价格。
A 股里还要注意涨跌停导致的成交困难。
回测假设“信号出现就能成交”,有时会过于乐观。
本章不展开后续实盘执行细节。
但在回测评估阶段,你必须把这些成本以保守方式加入。
8. 用 pandas 做一个成本扫描示例
下面示例不需要真实外部数据。
假设我们已经有每笔交易的毛收益率和每笔交易的换手比例。
import pandas as pd
gross_returns = pd.Series([0.012, -0.006, 0.018, 0.004, -0.01, 0.021])
turnover = pd.Series([1.0, 1.0, 0.8, 1.2, 1.0, 0.9])
cost_levels = [0.0000, 0.0005, 0.0010, 0.0020, 0.0030]
rows = []
for cost in cost_levels:
net_returns = gross_returns - turnover * cost
total_return = (1 + net_returns).prod() - 1
win_rate = (net_returns > 0).mean()
rows.append({"cost": cost, "total_return": total_return, "win_rate": win_rate})
result = pd.DataFrame(rows)
print(result)gross_returns 是扣成本前的每笔收益。
turnover 表示每笔交易相对本金的交易强度。
cost_levels 是不同成本假设。
循环里每次用毛收益减去成本拖累。
最后观察总收益和胜率是否随着成本上升快速恶化。
如果成本稍微提高,胜率和总收益都明显崩塌,这套策略需要重新审视。
9. 成本敏感性也要看回撤
成本不只降低收益。
它还可能改变资金曲线形状。
原本小赚的交易被成本扣成小亏。
原本打平的震荡期变成缓慢回撤。
连续交易越多,资金曲线越容易被成本磨损。
所以成本敏感表不应只看最终收益。
最好同时记录最大回撤、夏普或索提诺、胜率、单笔期望值。
例如:
| 成本假设 | 总收益 | 最大回撤 | 简化夏普 | 单笔期望 |
|---|---|---|---|---|
| 0.05% | 28% | 12% | 1.30 | 0.23% |
| 0.10% | 20% | 15% | 0.95 | 0.16% |
| 0.20% | 6% | 24% | 0.25 | 0.05% |
| 0.30% | -7% | 31% | -0.20 | -0.04% |
从这张表可以看到,成本升高后不只是收益下降。
回撤也在加深。
这说明成本会影响策略的整体风险收益质量。
10. 专业评估中的三重视角
从专业老师角度,成本是把理想模型带回现实的第一道门槛。
从投资者角度,成本决定了“频繁操作是否值得”。
如果每次买卖都只是为了赚很薄的一层差价,成本会让执行压力非常大。
从量化开发角度,成本敏感性是回测报告必须包含的压力测试。
不要只给一个成本参数。
要给一组成本参数。
不要只报告收益。
要报告收益、回撤、风险调整指标和期望值的共同变化。
当策略在保守成本下仍然稳健,才更接近可继续研究的系统。
交互实验室
练习 1:制作你的成本敏感表
请假设一套策略每笔毛期望收益为 0.25%。
一年做 100 次完整买卖。
请填完下面表格。
| 完整买卖成本 | 单笔净期望 | 年度粗略贡献 | 你的判断 |
|---|---|---|---|
| 0.00% | 0.25% | 25.0% | 理想环境 |
| 0.05% | 请计算 | 请计算 | 是否仍有安全垫 |
| 0.10% | 请计算 | 请计算 | 优势是否变薄 |
| 0.20% | 请计算 | 请计算 | 是否接近死亡线 |
| 0.30% | 请计算 | 请计算 | 是否已经死亡 |
计算方法很简单。
单笔净期望等于毛期望减去完整买卖成本。
年度粗略贡献等于单笔净期望乘以交易次数。
参考结果如下。
成本 0.05% 时,单笔净期望 0.20%,年度粗略贡献 20.0%。
成本 0.10% 时,单笔净期望 0.15%,年度粗略贡献 15.0%。
成本 0.20% 时,单笔净期望 0.05%,年度粗略贡献 5.0%。
成本 0.30% 时,单笔净期望 -0.05%,年度粗略贡献 -5.0%。
练习 2:找出成本死亡线
请使用下面公式。
如果一套策略单笔毛期望只有 0.12%。
当完整买卖成本接近或超过 0.12% 时,它就非常危险。
如果一套策略单笔毛期望有 0.80%。
它对成本上升的承受能力更强。
请写下你正在研究的策略毛期望。
再写下你愿意使用的保守成本假设。
如果保守成本已经接近毛期望,请暂停乐观判断。
练习 3:给策略写一段成本结论
请用下面模板完成一句话。
“在成本为 ___ 时,策略年化表现仍为 ___;当成本提高到 ___ 时,收益降为 ___,最大回撤变为 ___。因此,这套策略对成本 ___。”
示例:
“在成本为 0.05% 时,策略年化表现仍为 24%;当成本提高到 0.20% 时,收益降为 5%,最大回撤变为 25%。因此,这套策略对成本较敏感,需要降低换手或提高信号质量。”
这个练习的重点,是把成本影响写成可复核结论。
不要只说“成本有影响”。
要说清楚影响从哪里开始变得危险。
核心复盘
知识清单:
- [ ] 交易成本包括佣金、印花税等显性成本,也包括滑点和冲击成本等隐性成本。
- [ ] 换手率会放大成本,小成本在高频交易中也会变成大拖累。
- [ ] 成本敏感性要观察成本从低到高时收益、回撤和期望值如何变化。
- [ ] 毛优势很薄的高换手策略最容易被成本击穿。
- [ ] 成本死亡线可以粗略理解为成本接近单笔毛期望的位置。
- [ ] 回测报告应使用保守成本假设,而不是只展示零成本或低成本结果。
金句总结
“成本不是回测表格里的小数点,它可能是把正期望策略推成负期望的分界线。”