第16章:交易成本分析

做量化交易这么多年,我越来越觉得一个道理:交易成本才是真正的对手盘。你策略再牛,模型再准,如果成本控制不好,利润全给券商和市场吃了。今天我们就来拆解交易成本这个看似简单、实则深不见底的话题。

16.1 显性成本:看得见的“明枪”

显性成本,说白了就是你在交易软件上能直接看到的费用。这部分虽然透明,但很多人其实没算明白。

16.1.1 佣金

佣金是券商收的服务费。我见过不少新手,选券商只看佣金低不低。嗯,这没错,但别忽略一点——佣金有最低收费。比如某券商说“万1.5”,但每笔最低收5块。你算算,如果你只买1000块的股票,佣金就是5块,实际费率高达千分之五!

我个人习惯是:大资金看费率,小资金看最低收费。做高频交易的朋友更要小心,佣金累积起来能吃掉你一半的利润。

交易类型 佣金费率 最低收费
A股 万1.5 - 万3 5元/笔
期货 按手数或比例 通常无
期权 按张数 1-5元/张

16.1.2 税费

税费这块,A股和美股差别很大。A股有印花税(卖出时收千分之一),美股没有。但美股有SEC费、交易活动费这些杂七杂八的。

我曾经在做一个A股日内策略时,发现回测收益不错,实盘却差一截。排查了半天,原来是印花税没算进去。你想想看,每天高频交易,千分之一的印花税累积下来有多可怕。

重要提醒: 回测时一定要把税费算进去。我建议至少预留0.1%的成本空间,否则实盘大概率翻车。

16.2 隐性成本:看不见的“暗箭”

隐性成本才是真正考验交易水平的地方。很多策略在回测里跑得漂亮,一到实盘就崩,问题往往出在这里。

16.2.1 冲击成本

冲击成本,就是你下单时对市场价格造成的影响。你买100股和买100万股,对市场的冲击完全不一样。

我记得有一次帮客户优化一个ETF套利策略。回测显示年化收益15%,实盘只有8%。后来发现,问题出在冲击成本上。回测用的是收盘价,但实盘时大单直接把价格推高了,买入成本比预期高出一大截。

冲击成本的计算公式:

冲击成本 = (实际成交均价 - 订单簿中间价) / 订单簿中间价 × 100%

为什么会这样?因为你的买单吃掉了卖单队列里的深度。市场深度越浅,冲击成本越大。

我的经验: 做回测时,建议用“限价单成交率”来模拟冲击成本。一般做法是:假设你的订单只能吃掉前3档挂单,超出部分按下一档价格成交。

16.2.2 延迟成本

延迟成本,说白了就是“时间就是金钱”。从你决定交易到订单真正到达交易所,这中间的延迟会带来价格变化。

我做过一个统计:在A股市场,从策略信号发出到订单到达交易所,平均延迟在50-200毫秒。这200毫秒里,价格可能已经变了。对于高频策略来说,这简直是灾难。

延迟成本的构成:

  • 网络延迟: 你的服务器到交易所的距离
  • 处理延迟: 策略计算、风控检查的时间
  • 排队延迟: 订单在交易所队列里等待的时间

我曾经帮一家私募做延迟优化。他们原来的系统延迟在300毫秒左右,我们通过托管机房、优化代码、用FPGA加速,硬生生压到了10微秒以内。效果立竿见影,套利策略的胜率从55%提到了68%。

16.3 交易成本模型

光知道成本有哪些还不够,你得能算出来。下面介绍几个我常用的模型。

16.3.1 Almgren-Chriss模型

这是业界最经典的交易成本模型。它把成本分成两部分:

  • 永久性冲击: 你的交易改变了市场供需,价格回不去了
  • 暂时性冲击: 你的交易只是暂时影响了流动性,价格会恢复

模型公式:

总成本 = 永久性冲击 + 暂时性冲击
       = α × 交易量 + β × 交易量 / 市场深度

其中α和β是参数,需要通过历史数据拟合。我个人习惯用滚动窗口来估计这两个参数,因为市场状态是变化的。

注意: Almgren-Chriss模型假设市场是线性的。但在极端行情下,冲击成本会非线性暴增。比如2020年3月美股熔断那几天,冲击成本比模型预测的高出3-5倍。

16.3.2 实现差价模型

这个模型更简单粗暴:

实现差价 = 实际成交价格 - 决策时的基准价格

基准价格可以是:

  • 订单簿中间价
  • VWAP(成交量加权平均价)
  • 上一笔成交价

我比较喜欢用VWAP作为基准。为什么呢?因为VWAP反映了市场整体的成交水平,用它来衡量你的执行质量比较公平。

16.3.3 实战中的成本估算

在实际项目中,我一般这样估算交易成本:

  1. 小单(< 1%日成交量): 显性成本为主,隐性成本忽略
  2. 中单(1%-5%日成交量): 显性成本 + 0.1%-0.3%的冲击成本
  3. 大单(> 5%日成交量): 必须用Almgren-Chriss模型精细计算

这里有个避坑指南:我曾经在回测中忽略了大单的冲击成本,结果实盘时策略收益直接腰斩。从那以后,我养成了一个习惯——任何策略上线前,先跑一遍成本压力测试。

16.4 知识体系总览

下面这张图是我自己整理的交易成本分析框架,你可以把它当作一个检查清单:

交易成本分析框架 显性成本 隐性成本 佣金 税费 冲击成本 延迟成本 交易成本模型 Almgren-Chriss 实现差价模型 VWAP模型 实战应用:成本估算 → 策略优化 → 执行算法

这张图把交易成本分析的核心逻辑串起来了。你从显性和隐性成本入手,选择合适的模型,最后落到实战应用上。每一步都有坑,但每一步也都有优化空间。

16.5 写在最后

交易成本分析,说白了就是算清楚你到底赚了多少钱。很多人只看策略收益,不看成本,结果白忙活一场。我见过太多这样的案例了。

记住一句话:控制成本,就是增加收益。下次你回测策略时,先把成本模型跑一遍,看看你的策略在真实市场里到底能不能赚钱。

核心要点:
  • 显性成本:佣金、税费,必须精确计算
  • 隐性成本:冲击成本、延迟成本,回测时一定要模拟
  • 模型选择:小单用简单模型,大单用Almgren-Chriss
  • 实战:成本压力测试是策略上线的最后一道关卡

交易系统化学习资料 微信Strategy888888