你的回测在图表上的价格成交,你的实盘账户却不是这样。你预期的成交价与实际成交价之间的差距,有一个名字——或者更准确地说,有好几个:点差、滑点和市场冲击。这是一个策略在测试中看起来盈利、实盘中却在不断亏钱的最大原因之一,其根源可以归结为一个很容易被人遗忘的概念:根本不存在所谓的"价格"这种东西。这是订单类型之下的机制层面:点击提交之后究竟发生了什么。

不存在单一价格,只有买价和卖价

行情报价板上闪动的数字是最新成交价。它是历史数据:是另外两个人已经完成交易的价格。你现在能成交的价格是一对数字。买价(bid)是买方当前愿意支付的最高价格。卖价(ask,或称offer)是卖方当前愿意接受的最低价格。两者之间的差距就是点差(spread)

市价买单以卖价成交,市价卖单以买价成交。所以如果你买入后立即卖出,你不会打平,而是会亏掉点差。这是每一笔交易的第一项成本,甚至发生在佣金之前,而且每一次往返交易你都要付这笔钱。在流动性好的品种上这笔成本很小,但在流动性差的品种上却很致命——这正是为什么同一个策略在EUR/USD上能赚钱,却在流动性稀薄的小盘股上死掉的原因。

下面是点差通常占仓位的百分比,计算方式为点差除以价格。这些数值是示意性的典型区间,而非实时报价,但数量级是真实的:

按品种类别划分的典型往返点差成本

品种类别示例典型价格典型点差往返成本
主要外汇货币对EUR/USD1.0850约0.6点0.006%
大盘股超大市值股票$210约$0.010.005%
小众外汇货币对USD/ZAR18.50约190点约0.10%
小盘股流动性稀薄的股票$10约$0.05约0.50%

把同样的点差成本按比例画出来,会更直观地说明表格无法充分体现的问题:

按品种类别划分的往返点差成本(占仓位百分比)

主要货币对和大盘股的柱子几乎看不见。这就是真实情况:小盘股的往返交易成本大约是大盘股的100倍,仅仅是点差成本。如果你每天交易这只小盘股十次,光是点差就足以吞噬掉你自认为拥有的任何优势。如果你交易外汇,同样的数学原理逐点适用,外汇点值与手数计算展示了这一点如何随仓位规模放大。

订单簿,以及为什么规模很重要

在买价和卖价背后,是订单簿(order book):不同价格层级上排队等待成交的挂单堆栈。而市价单恰恰相反,它要求立即执行,会不断消耗最优可用价位,直到全部成交为止。

如果订单簿很深,你的订单会以接近最优价位成交,价格几乎不受影响。如果订单簿很薄,一笔订单就可能吃穿最优价位,然后是下一个,再下一个,成交价越往下走越差。这就是市场冲击(market impact),也是为什么即使是散户交易者,在流动性差的品种或非交易高峰时段也要重视规模的原因。你并不算"太小",小到无法撼动一个几乎没有挂单的市场:在冷清的小盘股上,一笔适中的订单就足以把订单簿"推"动好几美分。

市价单不会询问价格,它会照单全收订单簿所提供的一切,按价位逐级吃进,直到成交完毕。

滑点:成交价与报价的落差

滑点是你预期的价格与实际成交价格之间的差异。这不是券商的把戏,也不是系统故障,而是从你做出决定的那一刻到实际执行的那一刻之间,订单簿发生了变化,再加上你自己的订单造成的冲击。在若干可预测的情形下,滑点会变得更严重,而这背后隐藏着一个令人不安的规律。

滑点最容易出现的地方

情形为什么会滑点如何降低滑点
开盘和收盘集合竞价失衡、点差扩大、订单簿尚未稳定开盘后等待15-30分钟;避免使用收盘市价单
重大新闻或数据发布做市商撤单;订单簿变薄并出现跳空尽量在发布期间空仓,或使用限价单
小盘股与非交易高峰时段挂单稀少;适中规模的订单就能吃穿多个价位减小仓位规模;使用限价单;先查看平均成交量
小众外汇货币对点差较宽,报价做市商较少入场前先查看点差;在重叠交易时段交易
隔夜与周末跳空收盘到开盘之间没有交易,价格以跳空形式重新定价止损无法防范跳空;根据风险调整仓位规模

令人不安的规律是:滑点在实践中是不对称的。它往往对你不利而非有利,因为你恰恰在所有人都需要流动性的那一刻去索取流动性。当利好消息传出时,你想买入,人群也想买入,于是卖价一路上涨、逃离你。当止损连锁反应触发时,所有人都在向同样正在变薄的买盘抛售。你很少是唯一一个冲向出口的人。这正是回测夸大业绩的交易成本原因之一:回测假设每一次都能以打印出来的价格对称地成交。

止损是触发条件,不是保证

止损单并不保证你能以该价格离场,它只是一个触发条件。当市场价格触及你的止损位时,该订单就变成一个市价单,并以那一瞬间存在的任何流动性成交。在流动性好的品种、行情平稳的条件下,这可能只有一两美分的滑点,几乎没人会注意到。但在跳空的情况下,情况就完全不同了。

我们来演算一下。你以$55买入了100股,止损设在$50。夜间突发利空消息。股票并没有向下跌穿$50成交,而是在第二天早上直接以$46开盘,直接跳过了你的止损位。你的止损单在开盘时触发,成交价接近$46,而不是$50。

以$55买入100股,止损设在$50,隔夜跳空至$46

使用的订单类型跳空发生时的情况每股损失损失(100股)
理想情形(止损在$50成交)假设你的止损位有流动性存在-$5.00-$500
止损单(市价)触发,以开盘时的流动性成交约-$9.00约-$900
止损限价单(止损$50/限价$50)触发但限价未满足;未成交仓位仍然持有,仍在下跌无上限

止损单的实际成交结果比你计划的亏损还要糟糕80%,而这一切都无法阻止,因为在$50这个价位根本没有买家。止损限价单是另一种选择:它能保证你的价格,但不能保证成交。如果市场跳空越过你的限价,该订单根本不会执行,你就只能继续持有这个正在下跌的仓位。这才是真正的权衡取舍,值得直白地说清楚:你宁愿接受一个糟糕的成交价,还是宁愿完全不成交?对于在容易跳空的品种上设定的硬性风险限制,大多数交易者会选择接受糟糕的成交价。

"免佣金"的成本到底体现在哪里

如果你的券商不收取佣金,执行本身仍然是有成本的,弄清楚成本在哪里会有帮助。许多零售券商会把你的订单路由给批发做市商,并因此获得一笔报酬,这种做法被称为订单流付费(payment for order flow)。做市商执行你的订单,并通过点差获利,从买卖价差中截取一部分。

这不是什么阴谋,对于流动性好的品种、在行情平稳的条件下,这种执行通常没什么问题,有时甚至比公开报价略好。但值得明确指出的是:免佣金不等于零成本。点差始终是真实存在的,也始终由你支付,只是不像单独列出的佣金那样显眼。当你比较不同券商时,执行质量应该和费用、监管一起被纳入考量,这也是如何根据真正重要的因素选择券商的一部分。同样的"流动性需求"数学原理也出现在链上,基于AMM的去中心化交易所(DEX)上的滑点会根据流动性池的规模,被定价进每一笔兑换交易中。

你实际能做什么

以上这些都不是让你停止交易的理由,而是让你停止假装成交是没有成本的。以下几个具体习惯能弥合你的回测与实盘账户之间的大部分差距:

  • 只要成交确定性不是关键因素,就使用限价单。你放弃了保证成交的确定性,换来对价格的控制,并且不再作为"吃单方"支付点差。
  • 避免在开盘、收盘以及计划公布的新闻发布前后使用市价单。这些时刻恰恰是订单簿最薄、滑点最大的时候。
  • 入场前先查看点差,尤其是在小众外汇货币对和小盘股上。如果点差占你目标收益的相当大比例,这笔交易可能一入场就已经处于亏损状态。
  • 在流动性稀薄的市场中减小仓位规模。你的订单是否"小",只能相对于订单簿中实际存在的流动性而言。
  • 衡量你自己的滑点。在你的交易日志中记录预期成交价与实际成交价,交易满50笔之后,你就能知道自己真实的平均执行成本,而不用再靠猜测。

关键要点

图表上的价格是历史数据。你真正能够成交的是买价和卖价,而两者之间的点差是你在每一次往返交易中都要支付的成本。市价单会消耗流动性,并可能"吃穿"一个稀薄的订单簿;止损单只是触发条件,会以当时存在的任何价格成交,而不是你设定的那个价位。免佣金的订单路由并不会消除点差,只是把它隐藏了起来。那些能够弥合测试与现实之间差距的交易者,会把执行成本视为一项真实的、可衡量的成本,而不是可以忽略的舍入误差。

你的优势必须大于你的执行成本,否则那就不是优势,而是你在补贴那个为你完成成交的对手方。

免责声明:本内容仅供教育目的,不构成财务建议。交易涉及重大亏损风险。过往业绩不保证未来结果。