在量化回测中,Trader 负责将模型产生的预测信号转化为实际持仓。
以截面排序策略(Cross-sectional Ranking Strategy)为例,模型每隔一段时间对所有资产进行预测,并给出一个排名。Trader 根据这些排名、当前持仓和交易约束,决定买什么、卖什么、什么时候交易,以及交易多少。
严格来说,这里的 Trader 主要指 Portfolio Construction + Rebalancing Policy。Trader 在不同框架中的含义可能不同,本文统一用它表示目标持仓与调仓规则。
不同 Trader 即使使用完全相同的预测信号,也可能产生截然不同的交易行为、换手率和最终收益。
一、常见的 Trader
| Trader | 核心规则 | 主要特点 |
|---|---|---|
| Naive TopK | 每次选择排名前 K 的资产 | 简单直接,换手可能很高 |
| Rank Buffer | 持仓掉出更宽的排名范围才退出 | 减少排名抖动引起的换仓 |
| TopK Dropout | 每次限制换出的资产数量 | 控制单次换仓速度 |
| Periodic Rebalance | 每隔 N 分钟重新决策 | 降低决策频率 |
| Weight Band | 权重偏差达到阈值才调仓 | 减少小额再平衡 |
| Minimum Holding Period | 买入后至少持有一定时间 | 抑制短期反复交易 |
| Signal Threshold | 信号优势足够大才交易 | 避免为微弱信号付出成本 |
| Cost-aware Optimization | 综合收益、风险和交易成本决定仓位 | 直接优化预期净收益 |
这些并不是完全互斥的类别。有些负责决定持仓成员,有些负责控制调仓时机,还有些负责确定目标权重。实际策略可以将它们组合使用。
二、不同 Trader 的工作方式
1. Naive TopK
这是最基础的截面排序 Trader。
假设模型每分钟对 18 个币种进行一次打分,Trader 选择排名前 5 的币种做多,后 5 的币种做空,多头名义金额与空头名义金额各占净资产的 50%。此时 gross exposure 为 100%,net exposure 为 0%;若每边等权,单个仓位的绝对权重为 10%。
当前多头持仓为:
A、B、C、D、E
下一分钟,模型排名发生变化,前五名变成:
A、B、C、D、F
Trader 就会卖出 E,买入 F。
即使 E 和 F 的预测分数只相差一点,也会发生完整的成员替换。
Naive TopK 的优点是实现简单、容易解释和审计,非常适合用作研究基准。
问题在于,它对排名变化十分敏感。尤其当模型分数相近时,资产可能在排名边界附近反复进出,导致大量换手。
另外,如果每次都重新分配等权仓位,即使持仓成员没有变化,也可能因为价格变化而产生小额再平衡交易。
2. Rank Buffer
Rank Buffer 主要用于减少排名抖动带来的换仓。
假设目标是持有 Top5,但允许现有持仓保留到 Top8。
规则可以设计为:
-
新资产需要进入 Top5,才有资格买入。
-
已持有资产只要仍在 Top8,就允许继续持有。
-
已持有资产跌出 Top8,才触发退出。
例如,当前持有 E:
-
E 从第 5 名跌到第 6 名:继续持有。
-
E 从第 6 名跌到第 8 名:继续持有。
-
E 从第 8 名跌到第 9 名:退出。
一种固定持仓数量的实现是:先保留 Top8 内的已有持仓,再按当前排名从未持有的 Top5 中补足空缺,最多持有 5 个资产。没有空缺时,即使新资产进入 Top5,也不强制替换仍在缓冲区内的持仓。
这里先假设候选资产都可交易。实际实现还需定义候选不足、同分排序和不可交易资产的处理方式。用于多空组合时,多空两侧分别排序,并明确方向切换时的平仓与开仓规则。
这实际上引入了 Hysteresis(滞后机制),让 Trader 的决策不仅取决于当前排名,也取决于之前的持仓状态。
它的优势是可以避免为排名边界附近的微小变化支付交易成本。
代价是实际持仓可能不再严格对应当前的 TopK。Buffer 越大,换手通常越少,但组合对最新模型排名的响应也越慢。
因此,Rank Buffer 本质上是在信号新鲜度和交易成本之间做权衡。
3. TopK Dropout
TopK Dropout 通过限制单次换仓数量来控制交易行为。
例如:
-
TopK = 5
-
n_drop = 1
本文将 n_drop 定义为组合满仓后,每次调仓最多替换的成员数量;初始化建仓与补足空缺单独处理。即使模型排名发生很大变化,每次也最多替换一个成员,候选没有更好时可以不替换。
Qlib 的 TopkDropoutStrategy 文档提供了这一类规则的具体实现。使用框架时仍需核对卖出条件、可交易性和持仓时间限制,不能仅凭参数名称推断交易行为。
这与 Rank Buffer 的区别在于:
Rank Buffer 关注的是现有持仓的排名是否足够差,而 TopK Dropout 关注的是一次允许替换多少资产。
TopK Dropout 可以让组合逐步向最新排名靠近,避免一次性发生大量换仓。
不过,限制单次换仓数量不代表一定能够显著降低长期交易成本。
如果排名持续变化,后续几次调仓仍然可能完成相同数量的替换。部分换手可能只是被推迟,累计成交金额仍需通过账本验证。
4. Periodic Rebalance
Periodic Rebalance 通过降低决策频率来减少交易。
例如模型每分钟产生一次预测,但 Trader 每隔 15 分钟才重新决定持仓。
即:
1m Signal → 15m Rebalance
它的主要作用是减少对短期预测波动的响应。
这种方法非常简单,也容易与其他 Trader 组合使用。
但需要注意,决策频率降低,不代表成交金额一定按比例下降。
假设组合每隔 15 分钟仍然需要更换大部分成员,那么交易成本可能依然很高。
此外,调仓时间的相位也可能影响结果。
例如每小时的 00、15、30、45 分钟调仓,与 05、20、35、50 分钟调仓,可能得到不同的表现。
因此,研究 Periodic Rebalance 时,除了测试不同周期,也应该检查结果是否对调仓相位敏感。
5. Weight Band
Weight Band 用于处理目标权重附近的小额再平衡。
假设某个资产的目标权重为 10%,设置 ±2 个百分点的容忍带。
那么:
-
当前权重为 9%:不交易。
-
当前权重为 11%:不交易。
-
当前权重为 13%:触发调整。
触发后,可以选择直接恢复到 10%,也可以只调整到容忍带边界。
Weight Band 可以有效减少价格波动引起的细碎交易。
它主要处理持仓权重偏差,对持仓成员替换通常需要另外设置规则。
如果一个资产从 Top5 跌出,需要完整平仓,那么 Weight Band 对这类交易的帮助通常比较有限。
6. Minimum Holding Period
Minimum Holding Period 为每个新建仓位设置最短持仓时间。
例如,一个资产买入之后,至少持有 15 分钟。
即使模型在接下来的几分钟内改变了排名,也不立即退出。
这种方法可以减少频繁进出,尤其适用于短期预测比较不稳定的情况。
但存在一个明显的问题:
持仓时间本身并不代表信号质量。
假设一个资产已经从第 1 名跌到第 18 名,仅仅因为还没有持满 15 分钟,就被禁止退出,可能引入不必要的风险。
因此,Minimum Holding Period 可以设置为带有明确风险例外的约束。
例如可以允许明显的信号恶化、风险约束触发或不可交易状态变化覆盖最低持仓时间。
7. Signal Threshold
前面几种 Trader 大多依赖排名、时间或者权重。
Signal Threshold 则尝试直接判断:
新的交易机会是否足够好,值得支付相应的交易成本?
假设两项预测使用相同的持有期限,替换前后的名义金额相同,收益与成本均按这笔被替换的名义金额计算(1 bp = 0.01%):
-
当前持有 E,预测收益 3 bp。
-
候选 F,预测收益 3.2 bp。
-
从 E 切换到 F,卖出 E 与买入 F 的预计成本合计为 2 bp。
那么预测收益仅改善 0.2 bp,显然不足以覆盖交易成本。
但如果 F 的预测收益为 8 bp,那么这次替换就可能具有经济价值。
Signal Threshold 使用预测收益差异判断交易价值,Rank Buffer 则根据排名与当前持仓决定是否替换。
因为排名第 5 和第 6 的资产,预测收益可能几乎相同,也可能存在巨大差距。
不过,Signal Threshold 有一个前提:模型输出需要具有可靠的经济含义。
如果模型只是提供适合排序的分数,而没有经过预期收益校准,那么分数差不能直接当作 bp 收益差。
否则,看似更加精细的交易决策,可能只是建立在不可靠的收益估计之上。
8. Cost-aware Optimization
Cost-aware Optimization 将预期收益、风险和交易成本放在同一个优化问题中。
例如:
最大化:预期组合收益 − 风险惩罚 − 交易成本
其中,交易成本取决于目标持仓与当前持仓之间的差异。收益预测期限应与决策周期相匹配,成本则需统一到相同的资金口径。比例费用、固定费用与市场冲击会产生不同的优化结构,可参考 MOSEK 的交易成本建模文档。
在这样的框架里,Trader 不一定需要把某个资产全部卖掉,再完整买入另一个资产。
它可能选择:
-
维持当前仓位不变。
-
只增加一部分目标资产。
-
减少某些资产的权重。
-
只有在预期收益改善足够大时才发生交易。
在包含比例交易成本等条件的模型中,最优策略可能出现 No-trade Region(不交易区域),具体形态取决于成本结构、风险偏好与组合约束。
当调整组合带来的预期收益改善不足以覆盖成本时,保持当前持仓可能就是更优决策。
这类方法的优势是优化目标更接近实际的净收益。
但它也引入了更多要求,包括预期收益校准、交易成本模型、风险估计以及组合约束。
如果这些输入不够可靠,更复杂的优化过程不一定能够带来更好的结果,反而可能增加过拟合风险。
三、Trader 和 Execution Model 的区别
这里还需要区分两个概念。
Trader 决定应该持有什么仓位。Execution Model 决定如何完成交易。
例如,Trader 决定:
卖出 E,买入 F,将 F 的权重调整到 10%。
Execution Model 则决定:
-
使用市价单还是限价单。
-
一次完成交易还是拆分执行。
-
是否使用 TWAP、VWAP 等执行方法。
-
遇到部分成交或无法成交时如何处理。
这两个层次解决的是不同问题。
Rank Buffer、TopK Dropout、Weight Band 等主要用于调整目标持仓和交易需求。
TWAP、VWAP、限价挂单等则主要用于改变订单执行方式。
当然,两者会相互影响。例如,当预期成交成本与流动性有关时,Trader 也可能需要考虑 Execution Model 提供的成本估计。
但在研究框架中,把两者分开仍然很有价值,可以避免混淆到底是持仓规则改善了策略,还是订单执行方式改善了成本。
四、如何选择和比较 Trader?
没有一种 Trader 能够适用于所有策略。
对于高频截面排序信号,最直接的问题通常是换手率和交易成本。
但在引入更复杂的 Trader 之前,应该先理解现有策略的交易成本到底来自哪里。
例如,假设某个 1 分钟截面排序策略的交易账本呈现以下结构(仅用于说明分析方法,并非实测结果):
| 交易来源 | 成交名义金额占比 |
|---|---|
| 成员或多空方向替换 | 99.6% |
| 同成员、同方向再平衡 | 0.4% |
这里按成交名义金额归因,方向翻转应拆成平仓与反向开仓,避免漏计。若两类交易的单位费率与滑点相近,成本主要来自成员或方向替换;若单位成本差异较大,还需要直接统计费用与滑点贡献。小额再平衡即使占据大量笔数,也可能只贡献少量成交金额。
在这种情况下,Weight Band 可能大幅减少成交笔数,却很难显著降低成交金额。
Rank Buffer、TopK Dropout 或 Signal Threshold 则更有机会直接减少主要成本来源。
因此,Trader 的选择应该基于实际交易行为和成本归因。
对于截面排序策略,一个合理的研究顺序可以是:
-
Naive TopK:建立最简单、可审计的基准。
-
Rank Buffer:检查排名边界附近的换手是否必要。
-
Periodic Rebalance:研究不同决策频率对收益与成本的影响。
-
TopK Dropout:研究限制换仓速度的效果。
-
Signal Threshold:在预测收益经过校准后,判断交易优势是否能够覆盖成本。
-
Cost-aware Optimization:在收益、风险和成本估计更成熟后,研究组合层面的优化。
Weight Band 和 Minimum Holding Period 则可以根据具体交易账本和策略特点进行补充。
这个顺序按照研究复杂度和所需前提安排,不代表方法的优劣排名。
五、如何评价一个 Trader?
比较不同 Trader 时,不能只看最终收益率。
Trader 的作用是改变交易行为,而交易行为的改变可能同时影响毛收益、交易成本和风险。
因此,至少需要从以下几个方面评价。
1. 扣费前收益
减少换手后,损失了多少模型预测优势?
如果 Trader 显著减少交易,却几乎没有损失毛收益,说明原先可能存在大量不必要的换仓。
如果毛收益也显著下降,则说明被过滤掉的交易中可能包含了重要的预测信息。
2. 交易金额和交易成本
需要分别观察:
-
成交笔数。
-
成交名义金额。
-
手续费。
-
预估滑点和市场冲击成本。
减少成交笔数不一定意味着降低主要交易成本。
对于手续费主要按名义金额计算的市场,成交金额通常比成交笔数更重要。
3. 扣费后收益
一个 Trader 即使降低了成本,也可能因为损失更多毛收益而使净收益恶化。
因此,成本改善必须与收益变化一起衡量。
4. 持仓偏离
需要观察实际组合与模型原始目标组合的偏离程度。
例如,Rank Buffer 允许持有排名更靠后的资产,Periodic Rebalance 则可能让组合持有过时的预测结果。
这些偏离是减少换手的代价,需要量化,而不能直接假设它们没有影响。
5. 风险与容量
不同 Trader 可能改变持仓集中度、风险暴露以及对市场流动性的依赖。
减少换手不一定意味着策略容量必然上升。
如果交易变得更集中,或者持仓暴露产生了新的风险,仍然可能限制策略的实际容量。
比较时,所有 Trader 应该使用相同的预测、市场数据、成交假设、费率及风险约束。否则很难分辨结果改善来自 Trader 本身,还是来自其他条件的变化。
六、总结
不同 Trader 实际上在解决不同类型的问题。
Naive TopK 提供一个简单、直接的基准,但容易因为排名变化产生高换手。
Rank Buffer 减少排名边界附近的反复替换。
TopK Dropout 限制单次换仓数量。
Periodic Rebalance 降低响应预测变化的频率。
Weight Band 减少目标权重附近的小额调整。
Minimum Holding Period 抑制短期反复进出。
Signal Threshold 尝试让交易建立在足够大的预测优势之上。
Cost-aware Optimization 则将预测收益、风险和交易成本放在同一个决策框架中。
这些方法没有绝对的优劣,重点取决于策略中的交易成本来自哪里,以及减少某类交易会损失多少预测优势。
对于截面排序策略,尤其值得研究的是:
减少换手之后,究竟损失了多少模型预测优势?
例如,固定 K,并将退出排名设为 K + b,把缓冲宽度 b 从 0 逐步增加到 1、2、3、5,观察交易金额、毛收益和净收益的变化。
如果换手显著下降,而毛收益几乎不变,说明原先可能有大量交易并没有提供足够的经济价值。
反过来,如果换手下降 50%,毛收益也大幅下降,那么需要检查预测信号的有效收益是否依赖快速更换持仓。
这两种结果对策略研究的意义完全不同。
前一种情况意味着可以通过改进 Trader,将已有预测信号转化为更好的净收益。
后一种情况则意味着,需要进一步研究信号的时间衰减、预测收益与交易成本之间的关系,甚至重新考虑预测目标和交易频率。
Trader 决定了模型中哪些预测优势值得实际交易,以及需要为这些优势支付多少成本。关于如何理解这些回测结果及后续验证,参见 Backtesting and Strategy Validation。