第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 知识体系总览

下面这张图,是我自己整理的多品种管理框架。你可以把它当成一个检查清单:

订单流多品种管理知识体系 多品种管理 品种选择 流动性 > 20万手/日 订单簿深度 > 5档 滑点 < 0.5个tick 资金分配 半凯利 + 波动率调整 单品种最大 10% 单笔亏损 < 2% 相关性矩阵 Delta信号相关性 滞后分析(15-30min) 每周重新计算 核心目标:降低回撤、提高夏普比率、避免黑天鹅

这张图的核心逻辑其实就一句话:品种选对、仓位算准、相关性看透。 三者缺一不可。我见过太多人只做品种选择,不做资金分配,结果一个品种爆仓把全年的利润都吐回去了。也见过有人把相关性矩阵算得天花乱坠,结果选的品种流动性差到根本进不去场。

最后说一句:多品种管理不是万能药。它解决的是「单一品种风险集中」的问题,但解决不了「系统性风险」。当整个市场都在跌的时候,你分散到 100 个品种也没用。所以,永远把风控放在第一位,赚钱是第二位的。

本章核心要点:

  • 品种选择三要素:流动性、订单簿深度、滑点
  • 资金分配用「半凯利 + 波动率调整」,单笔亏损不超过 2%
  • 相关性矩阵要算 Delta 信号的相关性,不是价格的相关性
  • 每周更新相关性矩阵,别用旧数据
  • 永远留 20% 现金应对黑天鹅

无相订单流研究社 微信Lucian808555