Skip to main content
  1. Posts/

量化交易不是一个模型:从 Alpha 到执行的完整系统框架

·4436 words·9 mins
Table of Contents
Note: This article is available in Chinese only. 本文暂无英文版本。 View original

从一个让我愣住的问题说起
#

2024 年我读过 Rishi K. Narang 的《打开量化投资的黑箱》(Inside the Black Box)。这篇不打算写书评,只提一件事:这本书给了我一张量化交易系统的地图,它把一个典型系统拆成几个组成部分——Alpha Model、Risk Model、Transaction Cost Model、Portfolio Construction Model、Execution Model,底下还有 Data 和 Research。

第一次看到这个拆法时我愣了一下。我长期做 ML Infra,「model」这个词在我这里几乎只有一个含义:一个神经网络,有权重,有 forward 和 backward。所以我的第一反应是:一个交易系统要训练五个网络?Risk Model 里面是什么结构,几层,attention 吗?

后来发现这个理解整个是歪的。而且纠正完之后,看到一个更重要的事实:一个量化交易系统从输入到输出在做的事情,和我原来理解的「训练一个模型预测股价,然后照着预测买卖」,几乎是两回事。这篇文章记录我后来两年慢慢拼出来的这张地图。框架来自那本书,但理解是我自己走错再折回来的。

一个交易系统最终要交出什么
#

如果当时有人问我量化交易系统在干嘛,我的回答大概是:预测哪些股票会涨,然后买它们。

前半句没错,后半句把所有问题都藏起来了。

设一个例子。股票池 5000 只,模型给每只股票打了一个分:

1A    1.27
2B    0.83
3C    0.42
4...
5Y   -0.76
6Z   -1.15

在很多 ML 任务里,到这里活就干完了:prediction 有了,算个指标,写报告。但交易系统的问题从这里才刚开始:

  • 这个 score 是什么单位?是 expected return,是一个 ranking,还是别的什么?
  • 买 top 30,还是 top 100?
  • 每只等权,还是按 score 加权?
  • 某个行业是不是买得太多了?
  • 今天调仓会换手多少,产生多少交易成本?
  • 某只股票信号很强,但流动性很差,买进去本身就把价格推上去 2%,还买吗?
  • 最终需要成交 100 万股,是一次打出去,还是拆开慢慢来?

这些问题没有一个属于 prediction。但只要其中一个答错,prediction 再准,策略照样亏钱。

所以第一个要纠正的认知是:交易系统最终要回答的不是「这只股票会不会涨」,而是「在当前所有可交易资产里,我到底该持有哪些,各持多少,以及怎么把这些仓位真正交易出来」。

Prediction 只是通往这个答案的第一步。

金融里的 model 不是神经网络
#

回到开头让我愣住的问题:系统里真的有五个神经网络吗?

没有。金融里说的 model 比 ML 里的宽得多,它指任何对现实某一部分的数学化、系统化描述。具体可能是一个机器学习模型,可能是一个线性模型或者统计模型,可能是一套经验公式,可能是一套规则,甚至可能就是一个 optimization problem。

Risk Model 大多数时候指的是一套 factor exposure 和协方差的描述,不是一个 Transformer;Transaction Cost Model 可能就是「spread 加一个和成交量挂钩的冲击项」这种经验公式;Portfolio Construction Model 干脆经常就是一个优化问题本身。

所以后来我给自己立了一个规矩:看到「某某 model」,先问它的输入是什么、输出是什么、回答的是什么问题,默认它是一个网络再去想结构,多半会跑偏。

Alpha:哪里可能有收益
#

Alpha Model 是和 ML 工程师最贴近的一层,也是我读这本书时最没有陌生感的一层。它的任务一句话:从数据里发现未来收益、相对收益,或者其他可交易的机会。

对最常见的截面策略,这一部分长得和我熟悉的 ML workflow 几乎一样:

1market data / fundamental data / alternative data
23             features
45           ML model
67      score for each stock

在某个时间截面,它输出的是:

1stock_1 → 0.82
2stock_2 → 0.31
3stock_3 → -0.15
4stock_4 → -0.73

这个 score 可能是 expected return,可能是一个 ranking,可能是相对吸引力,也可能是未来收益的某种 proxy,取决于设计。

这一层的边界我一开始没看清:Alpha Model 的职责是回答「哪里可能有收益」,而不是「最终应该买多少」。 前者是 prediction,后者是 decision。Alpha 层的输出是一个观点,不是动作。

30 个 bet,还是 1 个 bet
#

Alpha 给了我一个 top 30 名单,照着买就行了?

我以前觉得是:30 只股票,够分散了。后来才知道先要看一眼这 30 只是什么。

假设名单里 20 只是半导体,剩下 8 只也全是 AI 相关,大多数 beta 偏高,大多数是小盘股。表面上是 30 只股票、30 个独立下注,实际这个组合可能只是一个大号的「科技 / 成长 / 小盘」 bet——板块一回调,30 只「独立」的股票会一起跌。

这就是 Risk Model 存在的意义:资产数量不等于风险来源数量。 它描述的是 factor exposure、sector exposure、波动率、相关性、集中度、流动性这些维度的风险,回答的问题是「我到底承担了什么风险」。

注意这里的分工。Alpha 回答哪里可能赚钱,Risk 回答我押的是什么。Risk Model 不负责提高预测准确率——它压根就不是 prediction 意义上的模型。这两个是完全不同的问题,这一句我是被上面这种集中度的例子绊过之后才真正消化掉的。

8 bps 的 edge,为什么不够
#

接下来是交易成本。这层是我以前觉得可以放到最后再减掉的东西。

Alpha Model 说这次调仓的预期 edge 是 8 bps。有 alpha,交易,好像很顺。先算完成这次调仓要花多少:

1spread + fees + slippage + market impact ≈ 10 bps

方向全对,预测全准,一进一出倒贴 2 bps。这个信号不值得交易。

我原来的想法是:predicted return 归 predicted return,成本归成本,最后结算时减掉就行。但成熟系统里成本不是结算项,成本本身就是决策的输入——在决定要不要交易、交易多少之前,就得知道每次交易的价格。所以更接近真实可利用 edge 的估计,不是 predicted return,而是 predicted return 减去 cost。这两个数字之间的差,决定了一个信号值不值得变成交易。

把观点变成仓位
#

现在手上有三样东西:Alpha 给观点,Risk 说押的是什么,Cost 说每次交易的价格。距离一个真正的持仓,还差一步:把它们和一堆约束放在一起,变成目标仓位。

这一步是 Portfolio Construction,也是整张地图里我认为位置最关键的一层。它把预测、风险、交易成本和各种约束组合起来,输出最终的目标持仓。

为什么它必须是独立的一层?因为真实的 portfolio 带着一堆 prediction 根本不知道的约束:

1position limit        单票仓位上限
2sector neutrality     行业中性
3factor neutrality     风格中性
4turnover limit        换手约束
5liquidity constraint  流动性约束
6gross / net exposure  总仓位与净仓位

同样一个排序 A 优于 B 优于 C 一直到 Z,最终持仓完全取决于这些约束怎么设、优化怎么做。一个好的预测模型,并不会直接对应一个好的 portfolio。 预测是观点,持仓是观点、风险、成本和约束互相妥协的结果。

还有一个我当时没料到的推论:同一个 Alpha,换不同的 Portfolio Construction 方法,得到的可以是完全不同的策略——有的激进,有的保守,有的换手高,有的压着交易量不动。Alpha 决定观点从哪来,Construction 决定观点怎么表达。想通这一点之后,我才明白为什么同一个信号在不同人手里能长成完全不同的东西。

目标仓位仍然不是成交
#

Portfolio Construction 输出:

1A: +1.2%
2B: +0.8%
3C: -0.7%
4...

能直接发给市场吗?不能。市场不接受 portfolio,不接受一个数据结构,它只接受 orders。

Execution 层的职责就是把 target position 变成 orders,再把 orders 变成 trades。中间又是一整套新问题:每笔 order 多大、什么时候发、对手盘的流动性够不够、拆成几笔、要不要被动的挂在盘口等成交还是主动吃掉价差。算法执行的细节这里不展开,但这一层和上一层之间的接口值得单独记一句:「我想持有什么」和「我如何得到这些仓位」又是两个问题。

上一层回答目标是什么,这一层回答怎么以最小的代价到达目标。

把系统拼回来
#

现在可以把前面几块拼成一张完整的图:

量化交易系统总览:从 Market Data 到 Market 的决策流水线,Risk 与 Cost 汇入 Portfolio Construction,Data 与 Research 作为支撑层

主流程是一条决策空间逐步收缩的流水线:从 5000 只候选股票,到一份 score 列表,再到一个带风险和成本约束的目标仓位,最后变成一串发往市场的 orders。

图里有两位不在主流程上,我觉得这个画法才是它们真实的位置。

Data 不属于任何一步,它是每一步的原料和基础设施:Alpha 需要行情和基本面,Risk 需要协方差和 exposure,Cost 需要流动性和成交数据,Execution 需要实时的 order book。

Research 也不在流水线上,它是构建和改进整个系统的方法论:提出假设、回测、验证、迭代。它的输出不是运行时的某个预测,而是这张图本身的设计。

我第一次读那本书的时候,是把这两个画成流水线上的 box 的。后来才意识到,那样画其实把它们降格了。

Prediction 只是中间表示
#

拼完图,回到老本行问一个问题:ML 工程师熟悉的那个「model」,在这套系统里处在什么位置?

答案有点扎心:大多数时候,它处在 Alpha Model 这一个框里面,甚至常常只覆盖这个框的一部分。

我做 ML 这么多年形成的直觉是:

1features → model → prediction

在 benchmark 任务里,prediction 就是终点,模型质量由它决定。但在交易系统里,prediction 只是一个 intermediate representation,后面还有一整条链:

1prediction → decision → allocation → execution

这和 ML Systems 里很多场景是同构的:模型的输出只是下一个环节的输入,训练侧的 loss 不能保证 serving 侧的体验。在这里,prediction 的质量不能保证 trade 的质量,中间隔着 risk、cost、约束和 execution 一层一层。

所以我现在是这样理解的:机器学习解决的通常只是量化系统里的一个局部 optimization problem。 这不是贬低 ML——alpha prediction 本身可以非常困难,也是策略 edge 的重要来源——但 prediction quality 和 trading system quality 是两个层次的问题。把它们混在一起,容易产生两种误判:觉得预测指标涨了收益就该涨,或者反过来,觉得策略不赚钱就一定是模型不行。

端到端,end 在哪里
#

写到这里,其实已经凑齐了我后面想讨论的问题的前置:金融场景会不会像 CV、推荐系统那样,走向越来越端到端的模型?

但这张地图先回答了一个更前面的问题:说「端到端」的时候,end 到底在哪里?

它不可能是「行情进网络、直接向交易所发订单」,也不是把风险管理、portfolio 约束、execution、compliance 全塞进一个网络。前面每一层拆开看就知道,它们解决的问题不一样,约束和成本的输入也根本不来自模型内部。

我目前真正感兴趣的是一个窄得多的问题,在主流程的最前段。传统截面模型长这样:

1raw market data
23handcrafted / engineered features
45prediction model
67stock score

未来会不会越来越变成:

1raw / lightly processed market data
23large learned representation
45prediction
67stock score

也就是 representation learning 把 feature engineering 这一段吃掉。这种「端到端」发生在行情到 alpha signal 之间,end 停在 score:

端到端讨论的区间:从行情到 stock score 这一段,score 之后的下游不在讨论范围内

把这个边界画清楚,后面的讨论才不会滑掉:如果 end 定义成 stock score,那研究行情到 signal 的端到端学习是一个完全合理的问题;如果 end 定义成发往交易所的 order,那就是另外一个完全不同的问题。 score 之后还有 risk、cost、约束和 execution,它们不会因为前段变得端到端就消失。

写在最后
#

过去讨论机器学习模型,我会自然地问:模型的输入是什么,输出是什么?

现在放到交易系统里,我会先问另一个问题:这个模型处在整套决策链条的什么位置,它服务谁,又把结果交给谁?

回答了这个,才有资格继续讨论:representation learning 能不能替代 feature engineering,截面模型能不能变得更端到端,prediction 和 portfolio construction 的边界会不会移动。

这些就是下一篇文章想讨论的:金融会重走 CV 和推荐系统的端到端之路吗?

参考资料
#

  • Rishi K. Narang, 《打开量化投资的黑箱》(Inside the Black Box)——本文系统拆解框架的来源

Related