第十七章:订单流与量化分析

订单流数据,说白了就是市场最原始的“心跳”。

我做了这么多年交易,越来越觉得传统K线太“钝”了。你想想看,一根K线把几万笔交易压缩成四个价格,中间的过程全丢了。而订单流,就是把这些过程原原本本摆在你面前。

一、订单流数据的量化处理

原始订单流数据长什么样?我直接给你看个例子。

# 这是我从交易所拿到的原始逐笔数据
# 格式:时间戳, 价格, 成交量, 买卖方向
2024-01-15 09:30:01.123, 100.50, 200, B
2024-01-15 09:30:01.456, 100.51, 150, S
2024-01-15 09:30:01.789, 100.50, 300, B
2024-01-15 09:30:02.012, 100.52, 100, B

拿到原始数据后,第一步就是清洗和聚合。我个人习惯按时间窗口做聚合,比如1秒、5秒或者1分钟。

核心处理步骤:

  • 去噪:过滤掉明显异常的单子(比如价格偏离太离谱的)
  • 聚合:按时间窗口或价格档位合并数据
  • 标记:区分主动买和主动卖(这个很关键)
  • 标准化:把成交量标准化到统一单位

嗯,这里要注意。主动买和主动卖的判断,不同交易所规则不一样。我曾经在某个交易所踩过坑,他们的标记规则跟主流不一样,导致我回测时策略表现很好,实盘却一塌糊涂。

二、订单流因子的构建

因子构建,说白了就是把原始数据变成有预测能力的特征。我常用的订单流因子有这么几类:

因子类别 具体因子 计算方式
成交量类 主动买成交量、主动卖成交量 直接统计
失衡类 买卖失衡率 (主动买 - 主动卖) / (主动买 + 主动卖)
价格冲击类 每单位成交量引起的价格变化 ΔPrice / Volume
订单簿类 买卖盘口深度比 买一量 / 卖一量

举个例子,买卖失衡率这个因子,我特别喜欢用。为什么?因为它能直观反映多空力量的对比。

# 计算买卖失衡率的Python代码
def calculate_imbalance(buy_volume, sell_volume):
    total = buy_volume + sell_volume
    if total == 0:
        return 0
    return (buy_volume - sell_volume) / total

# 实际使用
imbalance = calculate_imbalance(15000, 8000)
print(f"失衡率: {imbalance:.2f}")  # 输出: 0.30

我的经验:失衡率超过0.6或低于-0.6时,往往意味着短期趋势要反转。但别死板,要结合市场整体环境看。

三、订单流模型的建立

模型建立这块,我走过不少弯路。最开始我用简单的阈值规则,后来尝试了机器学习,最后发现——其实没有万能模型。

我个人比较推荐的做法是分层建模:

  1. 基础层:用订单流因子做信号过滤
  2. 策略层:结合价格形态做入场判断
  3. 风控层:用订单流异常检测做止损

下面是我画的一个模型结构图,你看一眼就明白了。

订单流量化模型架构 原始订单流数据 数据清洗与聚合 订单流因子构建 信号过滤模块 策略执行模块 风控止损模块

你看这个结构,数据从下往上流动,每一层都有明确的职责。我在实际项目中,经常在信号过滤层就干掉了一半以上的假信号。

四、订单流策略的评估

策略评估,这是最容易出问题的地方。很多人回测跑得漂亮,实盘就翻车。为什么?因为订单流数据的微观结构跟回测环境差别太大了。

我总结了一套评估框架:

评估维度:

  • 滑点测试:模拟不同流动性下的成交情况
  • 延迟测试:考虑网络延迟对信号的影响
  • 容量测试:资金量增大时策略是否失效
  • 压力测试:极端行情下的表现

举个例子,滑点测试怎么做?

# 滑点模拟代码
def simulate_slippage(order_volume, order_book):
    """
    模拟订单簿成交,计算实际成交价格
    """
    remaining = order_volume
    total_cost = 0
    
    for price, volume in order_book:
        if remaining <= 0:
            break
        trade_volume = min(remaining, volume)
        total_cost += trade_volume * price
        remaining -= trade_volume
    
    avg_price = total_cost / order_volume
    return avg_price

注意:我曾经用这个函数测试过一个策略,发现当订单量超过市场深度10%时,滑点直接吃掉了一半利润。所以,容量测试一定要做。

最后说一句,订单流策略的评估,不能只看夏普比率。我建议你重点关注最大回撤和胜率。为什么?因为订单流策略往往胜率不高,但盈亏比很大。如果你只看夏普,可能会错过好策略。

好了,这一章的内容就这些。记住,订单流数据是金矿,但挖矿需要工具和方法。量化处理、因子构建、模型建立、策略评估,这四个环节缺一不可。

我的建议:刚开始做订单流量化时,别贪多。先盯住一两个因子,把它们的规律摸透了,再慢慢扩展。我当年就是太心急,结果浪费了半年时间。

无相订单流研究社 微信Lucian808555