← 返回首页
回测里秒成交,实盘里挂单挂到收盘:我统计了半年成交数据,发现小盘策略的'隐形手续费'比佣金贵40倍
💤 小Q · 2026-10-16 · 量化策略
回测里秒成交,实盘里挂单挂到收盘
量化的世界里有两套物理学。回测里那套叫'理想物理学':你说买,就以那个价格成交,要多少有多少。实盘那套叫'真实物理学':你说买,市场先问一句'你谁啊',然后要不不搭理你,要不好不容易搭理了,价格已经变了。
今天这篇,就是我把这两套物理学的差价——术语叫'冲击成本+滑点'——真金白银地称了一遍的结果。数据有点扎心,建议小盘策略爱好者扶稳坐好。
一、起因:一个'完美'的小市值策略
今年上半年我跑了个小市值轮动策略,回测数据漂亮得很:年化34%,最大回撤12%,每周换仓一次,每次持有5只日均市值15亿以下的小票。
回测里一切安好,直到实盘第二周,我发现一个诡异的现象:策略信号说9:35以8.42元买入某票,我的委托单挂出去之后,先是在买一价位排队排了20分钟,前面压着三四千手的单子;最后追价成交在8.51元——比信号价贵了1.07%。
一次贵一块钱不算什么。但这个策略一年换仓50次,每次5只票,双边算下来100次交易。每笔滑点1%,就是100%的成本——这策略年化才34%啊朋友们。
我意识到一个严肃的问题:我在回测里赚的钱,可能全都是流动性借给我的,早晚要还。
二、我拉了半年的真实数据
于是我做了个挺枯燥但很值钱的事:把自己实盘半年的所有委托回报、成交回报导出来,和当时的盘口数据对齐,一笔一笔算'真实成本'。
先定义清楚:
显性成本:佣金+印花税+过户费。这个大家都知道,双边合计约0.15%。
隐性成本:成交价和信号价的差(滑点),加上大单对价格的冲击。
统计结果,按股票日均成交额分组:
日均成交额5亿以上的票: 隐性成本平均0.09%,和理论假设基本一致。这类票里,回测和实盘是同一套物理学。
日均成交额1-5亿的票: 隐性成本平均0.21%。开始有感觉了,但还能接受。
日均成交额5000万-1亿的票: 隐性成本平均0.42%。回测每赚1块钱,实盘要先交4分钱'过路费'。
日均成交额3000万以下的票: 隐性成本平均0.81%,极端单笔到过3.4%——那天我想卖一只票,卖单金额占了它10分钟成交量的60%,直接把自己砸下去1.9%。自己就是自己的利空。
再算一笔总账:我的小市值策略大部分持仓落在最后两档。显性成本0.15%,隐性成本0.6%上下,合计每次交易约0.75%。双边一年100笔,总成本吃掉7.5个点的年化。
而佣金才是0.15%的那个'显性成本',大家天天抠它;真正的大头隐性成本,却是它的4-5倍——按单边算,是佣金的40倍。我们散户做量化,死抠佣金是捡芝麻,无视滑点是丢西瓜。
三、回测里的'34%',真实值是多少
拿这半年数据修正回测:原回测年化34%,假设的是零滑点成交。叠加真实成本模型后重跑:
年化:34% → 19%
夏普:1.8 → 1.1
那两周实盘的偏差,和修正后模型的预测几乎一致。
也就是说,这个策略依然赚钱,但没那么神。34%的回测里,有15个点是流动性差价送我的幻觉。
四、几个降成本的实操招数
数据摆在这,接下来就是怎么少交'流动性税'。这半年我试出来几条有用的:
1. 用成交量给持仓设上限。 单票委托金额不超过它过去20天日均成交额的3%-5%。超过的票直接从候选池剔除,或者拆两天买。这个过滤器加上后,策略回测年化只掉了2个点,但实盘偏差立刻小了一半。
2. 换仓时间避开开盘30分钟和收盘前10分钟。 开盘30分钟小票的价差是全天的2-3倍;但收盘前竞价阶段滑点反而不小。我改成10:00-14:30之间分批执行,平均滑点从0.6%降到0.35%。
3. 挂单比追价划算,但要有耐心上限。 限价单排队平均能省0.3%,但会有20%左右的单子等不到成交。我的做法是:限价挂3分钟,没成交就追价1个tick,再不行就市价。折中下来成本最优。
4. 把'流动性'写进选股条件,而不是留给执行环节。 这是最重要的一条。日均成交额低于5000万的直接不碰——策略池子小一点,但每一分利润都是真的。
五、写在最后
回测漂亮和实盘赚钱之间,隔着一条叫'执行'的河。很多人(包括三个月前的我)研究策略研究到头发掉光,然后随手一个'以收盘价成交'把这条河填了。
市场不会因为你聪明就给你让路,但它一定会因为你不看流动性而收你过路费。这半年的学费教会我一句话:
在量化里,'能不能买到'和'值不值得买'是同一个问题。
——小Q,一个正在给流动性打白工的程序员
量化策略流动性滑点交易成本小盘股Python实战回测数据统计小Q风格2026年10月