第16章 订单流交易中的多品种管理:品种选择、资金分配、相关性矩阵应用
做订单流交易做到一定阶段,你会发现一个尴尬的事实:单一品种的订单流信号,有时候会集体失效。我记得有一年做股指期货,连续三周订单流都显示大资金在吸筹,结果行情就是不涨。后来复盘才发现,那段时间整个市场都在等一个宏观数据,微观的订单流被宏观情绪完全压制了。
所以,多品种管理不是「我想多赚点钱」的贪心,而是「我不想被单一品种坑死」的风控底线。今天我们就聊聊,怎么用订单流的逻辑,把多品种组合管好。
16.1 品种选择:不是所有品种都适合订单流
先泼一盆冷水:订单流交易对品种是有「脾气」的。流动性差的品种,订单簿稀疏得像秃子的头发,Delta 和失衡数据基本没有参考价值。
核心原则:订单流交易只适合高流动性、低滑点的品种。
我个人习惯把品种分成三类:
- 核心品种(主力仓位):股指期货(IF、IC)、国债期货(T、TF)、主流商品(螺纹、铁矿、原油)。这些品种流动性好,订单簿深度足够,Delta 信号稳定。
- 辅助品种(卫星仓位):部分活跃的化工品(PTA、甲醇)、有色(铜、铝)。流动性尚可,但偶尔会出现订单簿断层,需要人工过滤。
- 回避品种:成交量低于 10 万手/日的品种、上市不足半年的新品种、以及那些「一天波动 5 个点,滑点 3 个点」的品种。
我在项目中遇到过最惨的一次,就是在一个流动性不足的品种上看到了「完美」的订单流吸筹信号。结果一进场,对手盘直接把我吃了,滑点吃掉了我 80% 的预期利润。从那以后,我定了个死规矩:日均成交量低于 20 万手的品种,不碰订单流。
16.2 资金分配:凯利公式的订单流改良版
资金分配这件事,很多人喜欢用凯利公式。但凯利公式有个致命问题:它假设每次交易是独立且同分布的。订单流交易不是这样——订单流信号有很强的序列相关性,一个吸筹信号之后,往往跟着另一个吸筹信号。
我自己的做法是「半凯利 + 波动率调整」:
# 订单流资金分配示例(Python 伪代码)
def orderflow_position_size(capital, delta_score, atr, max_risk_pct=0.02):
"""
delta_score: 订单流信号强度(0-100)
atr: 当前品种的 ATR(平均真实波幅)
"""
# 基础仓位:凯利公式的简化版
base_size = capital * 0.1 # 单品种最大 10%
# 信号强度调整
signal_factor = delta_score / 100.0 # 0.3 以下不交易
# 波动率调整:ATR 越大,仓位越小
vol_factor = 1.0 / (atr / atr_baseline)
# 最终仓位
position_size = base_size * signal_factor * vol_factor
# 风控上限
max_loss = capital * max_risk_pct
if position_size * atr > max_loss:
position_size = max_loss / atr
return position_size
你看,这里我加了三个调整因子:
- 信号强度因子:Delta 失衡超过 3 倍标准差才算有效信号,否则直接过滤掉。
- 波动率因子:ATR 越大,仓位越小。这是为了防止「高波动 + 大仓位 = 爆仓」的悲剧。
- 最大亏损限制:单笔亏损不超过总资金的 2%。这是铁律,谁违反谁下课。
一个小技巧:我习惯把资金分成 5 份,每份对应一个品种组。比如股指组 20%、黑色组 20%、化工组 20%、有色组 20%、现金 20%。现金部分是用来应对黑天鹅的——你永远不知道明天会发生什么。
16.3 相关性矩阵:订单流信号的「照妖镜」
很多人做多品种,只看价格的相关性。但订单流交易不一样——订单流信号的相关性,往往比价格相关性更早暴露品种间的联动关系。
举个例子:螺纹钢和铁矿石,价格相关性很高,这大家都知道。但如果你看它们的订单流 Delta 信号,你会发现:铁矿石的 Delta 信号往往比螺纹钢早 15-30 分钟。这意味着什么?你可以用铁矿石的订单流信号,提前预判螺纹钢的走势。
我整理了一个相关性矩阵的计算逻辑:
# 订单流信号相关性矩阵
import numpy as np
import pandas as pd
def orderflow_correlation_matrix(symbols, delta_data, lookback=20):
"""
symbols: 品种列表
delta_data: 每个品种的 Delta 时间序列
lookback: 回看周期(分钟)
"""
corr_matrix = pd.DataFrame(index=symbols, columns=symbols)
for i, sym1 in enumerate(symbols):
for j, sym2 in enumerate(symbols):
if i == j:
corr_matrix.loc[sym1, sym2] = 1.0
continue
# 计算 Delta 信号的滚动相关性
delta1 = delta_data[sym1].rolling(lookback).mean()
delta2 = delta_data[sym2].rolling(lookback).mean()
corr = delta1.corr(delta2)
corr_matrix.loc[sym1, sym2] = round(corr, 2)
return corr_matrix
这个矩阵有什么用?我总结了三句话:
- 相关性 > 0.7:这两个品种的订单流信号高度同步。做多一个就够了,别两个都做,否则等于在同一个赌局里下了两次注。
- 相关性在 0.3-0.7:有联动但不同步。可以同时做,但要控制总敞口。
- 相关性 < 0.3:基本独立。可以放心做多品种组合,分散风险效果最好。
注意:相关性是会变的!2020 年疫情刚爆发时,所有品种的相关性都飙到了 0.9 以上。那时候多品种组合的分散效果基本为零。所以,我建议每周重新计算一次相关性矩阵,别用半年前的数据来指导今天的交易。
16.4 实战中的避坑指南
嗯,这里说几个我踩过的坑:
- 坑一:我曾经同时做多螺纹钢和热卷,以为它们是两个品种。结果发现它们的订单流 Delta 相关性高达 0.95,等于我下了双倍仓位。后来我规定:同一产业链的品种,最多选一个。
- 坑二:相关性矩阵只看价格不看时间滞后。铁矿石和螺纹钢的相关性,如果不对齐时间轴,算出来可能只有 0.3。但如果你把铁矿石的 Delta 信号前移 20 分钟,相关性能到 0.8。所以,算相关性之前,先做一下滞后分析。
- 坑三:别迷信「低相关性 = 安全」。2022 年镍期货的逼仓事件,让所有和镍相关的品种相关性瞬间从 0.2 飙到 0.9。黑天鹅面前,相关性矩阵就是个摆设。所以,永远留 20% 的现金。
16.5 知识体系总览
下面这张图,是我自己整理的多品种管理框架。你可以把它当成一个检查清单:
这张图的核心逻辑其实就一句话:品种选对、仓位算准、相关性看透。 三者缺一不可。我见过太多人只做品种选择,不做资金分配,结果一个品种爆仓把全年的利润都吐回去了。也见过有人把相关性矩阵算得天花乱坠,结果选的品种流动性差到根本进不去场。
最后说一句:多品种管理不是万能药。它解决的是「单一品种风险集中」的问题,但解决不了「系统性风险」。当整个市场都在跌的时候,你分散到 100 个品种也没用。所以,永远把风控放在第一位,赚钱是第二位的。
本章核心要点:
- 品种选择三要素:流动性、订单簿深度、滑点
- 资金分配用「半凯利 + 波动率调整」,单笔亏损不超过 2%
- 相关性矩阵要算 Delta 信号的相关性,不是价格的相关性
- 每周更新相关性矩阵,别用旧数据
- 永远留 20% 现金应对黑天鹅
无相订单流研究社 微信Lucian808555