1. 课程导入与问题界定
在量化交易与程序化策略开发中,我们经常遇到这样一种落差:回测里某个信号看起来相当漂亮,胜率、盈亏比、夏普比率都不错,可一旦放到真实盘口里跑,收益就被"吃掉"了一大截,甚至由盈转亏。造成这种落差的原因很多,但最容易被低估、也最容易被"回测假设"掩盖的一个,就是买卖价差。本课程要讨论的核心问题,正是:当买卖价差成为不可回避的交易成本约束时,我们该如何筛选信号,才能让"纸面有效"变成"实盘可用"。
先把概念界定清楚。买卖价差(bid-ask spread)指某一时刻盘口上最优买价与最优卖价之间的差额。若记最优买价为 Bid、最优卖价为 Ask,则价差 S = Ask − Bid,相对价差常写作 s = S / Mid,其中 Mid = (Bid + Ask) / 2。这里必须统一一个参照约定,本课程全程采用:以中间价 Mid 为基准,买入按 Ask 成交、卖出按 Bid 成交。也就是说,任何一次"买入再卖出"的往返,天然要付出约一个价差的成本;若只做单边开仓,则开仓瞬间就承担了半个价差的浮亏。这个约定会贯穿后续所有图示与计算,切换参照系时会明确说明。
为什么价差会成为信号筛选的"隐形门槛"?关键在于它改变了信号的盈亏结构。一个信号预测未来价格会上涨 Δ,若 Δ 小于价差 S,那么即便方向判断完全正确,扣掉往返成本后依然可能不赚钱。换句话说,价差给每一个信号设定了一条"最低盈利门槛":信号的预期毛收益必须显著大于交易成本,才具备被保留的资格。这就把传统的"预测准不准"问题,升级成了"预测的幅度够不够覆盖成本"的问题。
上图把这一矛盾直观地摆了出来:同样是"看涨"信号,A 的预期涨幅落在价差区间之内,扣掉成本后净收益为负;B 的预期涨幅远大于价差,扣成本后仍有可观净收益。信号筛选的第一层任务,就是把 A 类信号从候选池里剔除,而不是等到实盘亏损了才回头怀疑模型。
但问题远不止"幅度够不够"这么简单。价差本身是动态变化的:流动性好的时段价差可能只有一两个最小变动价位,开盘、收盘、重大消息发布前后价差会显著放大;不同标的的价差水平也差异巨大,大盘蓝筹与冷门小盘股的相对价差可能相差数倍。这意味着,同一个信号在不同时刻、不同标的上的"成本门槛"是不同的。若用固定阈值一刀切,要么在低流动性时段放行了不该放行的信号,要么在高流动性时段误杀了本可盈利的信号。因此,信号筛选必须与价差的状态联动,而不是静态判断。
由此可以归纳出本节要界定的核心矛盾:信号的有效性依赖于预测幅度,而预测幅度能否转化为净收益,取决于当时的价差成本;价差又是时变的、标的相关的。三者交织,使得"筛信号"不能只看预测准确率,而必须同时考虑幅度、成本与状态。这也是本课程区别于普通"因子有效性分析"的关键所在——我们筛选的不是"会涨的信号",而是"涨得足够多、且成本可控的信号"。
明确矛盾之后,学习目标就可以落地了。完成本课程后,你应当能够:其一,量化一个信号在给定价差下的净收益与盈亏平衡点,而不是停留在定性判断;其二,设计带成本约束的筛选规则,包括幅度门槛、价差状态过滤与信号分级;其三,验证筛选前后的组合表现差异,并能解释差异来自哪里;其四,排查实盘与回测背离时,判断问题是否出在价差假设上。
整体框架上,课程将沿着"成本刻画 → 信号度量 → 约束筛选 → 回测验证 → 实盘校准"的主线推进。先建立价差成本的量化口径(含往返成本、滑点与价差的区分),再讨论如何度量信号的预期幅度与不确定性,随后进入带约束的筛选规则设计,最后用回测与实盘数据做闭环校准。每一环都会给出可操作的参数与判断依据,而不是泛泛而谈。
作为实战任务的起点,本节先给出一个可立即动手的小练习:选取你熟悉的某一标的,取一段历史盘口或高频行情数据,统计其相对价差 s 的分布(均值、分位数、开盘/收盘时段的差异),再任取一个你手头的看涨信号,计算其平均预期涨幅 Δ̄,比较 Δ̄ 与 s 的均值及高分位数。若 Δ̄ 连价差的高分位数都覆盖不了,这个信号在实盘中大概率是"看着有效、做着亏钱"。这个练习不需要复杂工具,一张表、几列数据即可完成,却能让你在进入后续章节前,先对"成本门槛"建立真实的体感。
需要强调的是,本课程不追求"消除价差"——价差是市场流动性的价格,无法被策略消灭;我们要做的是在价差约束下做出更聪明的取舍:放弃那些幅度不足的信号,保留那些扣成本后仍有优势的信号,并在价差状态恶化时主动降频或收手。理解了这一点,后面的量化口径、筛选规则与验证方法才有落脚点。