4. 订单流分析:订单流的不平衡、订单到达率的泊松过程建模
做高频交易这些年,我越来越觉得——订单流才是市场的「心跳」。价格涨跌只是表象,真正驱动市场的,是那一笔笔订单的微观博弈。今天咱们就来聊聊订单流分析里两个核心概念:订单流不平衡,以及订单到达率的泊松过程建模。
4.1 订单流不平衡:市场的「供需温差」
说白了,订单流不平衡就是买方和卖方在某一时刻的「力量对比」。你想想看,如果买盘远大于卖盘,价格大概率要往上走。反之亦然。但这里有个坑——不是所有订单都「真心实意」。
核心定义: 订单流不平衡 = 主动买成交量 - 主动卖成交量
我在实盘里习惯用 订单流不平衡比率(OFIR) 来量化这个指标:
OFIR = (主动买量 - 主动卖量) / (主动买量 + 主动卖量)
OFIR 的取值范围在 -1 到 1 之间。正值表示买方占优,负值表示卖方占优。绝对值越大,力量越悬殊。
嗯,这里要注意——我曾经踩过一个坑:只看 OFIR 的绝对值,忽略了时间窗口。比如 1 秒内 OFIR 达到 0.8,和 10 秒内 OFIR 达到 0.8,含义完全不同。前者可能是突发大单,后者可能是持续吸筹。所以我现在都会结合时间窗口来看。
4.2 订单到达率的泊松过程建模
订单到达市场,其实是个随机过程。我个人最喜欢用泊松过程来建模。为什么?因为简单、有效,而且数学上很优雅。
泊松过程有两个关键假设:
- 独立性: 订单到达事件之间相互独立
- 平稳性: 在足够短的时间内,到达率 λ 是常数
当然,真实市场里这两个假设都不完全成立。但做量化嘛,我们追求的是「足够好」而不是「完美」。
4.2.1 泊松过程的数学表达
在时间区间 [0, t] 内,到达 k 笔订单的概率为:
P(N(t) = k) = (λt)^k * e^(-λt) / k!
其中 λ 是单位时间内的平均到达率。这个公式看着复杂,其实用 Python 实现起来很简单:
import numpy as np
from scipy.stats import poisson
# 假设每秒平均到达 10 笔订单
lambda_rate = 10.0
time_window = 1.0
# 计算 1 秒内到达 8 笔订单的概率
prob = poisson.pmf(8, lambda_rate * time_window)
print(f"P(8 orders in 1s) = {prob:.4f}")
4.2.2 如何估计 λ
实际交易中,λ 是随时间变化的。我一般用滑动窗口法来估计:
def estimate_lambda(order_timestamps, window_size=1.0):
"""
估计当前时刻的订单到达率 λ
order_timestamps: 最近 N 笔订单的时间戳列表(单位:秒)
window_size: 滑动窗口大小(单位:秒)
"""
current_time = order_timestamps[-1]
window_start = current_time - window_size
# 统计窗口内的订单数量
orders_in_window = [t for t in order_timestamps
if t >= window_start]
lambda_hat = len(orders_in_window) / window_size
return lambda_hat
实战技巧: 我建议用指数加权移动平均(EWMA)来平滑 λ 的估计值,这样既能快速响应市场变化,又不会过度反应。
4.3 订单流不平衡与泊松过程的结合
把这两个概念结合起来,就能构建一个简单的交易信号。我个人常用的方法是:
- 分别估计主动买订单的到达率 λ_buy 和主动卖订单的到达率 λ_sell
- 计算两者的比值或差值
- 当比值超过某个阈值时,触发交易信号
举个例子:
def order_flow_signal(buy_timestamps, sell_timestamps,
window_size=1.0, threshold=1.5):
lambda_buy = estimate_lambda(buy_timestamps, window_size)
lambda_sell = estimate_lambda(sell_timestamps, window_size)
ratio = lambda_buy / lambda_sell
if ratio > threshold:
return "BUY_SIGNAL"
elif ratio < 1/threshold:
return "SELL_SIGNAL"
else:
return "NEUTRAL"
注意: 泊松过程假设订单到达是独立的。但在高频交易中,大单拆分、算法交易会导致订单到达存在自相关性。我建议在使用前先做一下自相关检验,否则模型可能失效。
4.4 知识体系总览
下面这张图是我自己梳理的订单流分析知识框架,你可以对照着看:
4.5 实战中的避坑指南
做订单流分析这几年,我总结了几条血泪教训:
- 不要迷信单一指标: 我曾经只靠 OFIR 做交易,结果在震荡市里被来回打脸。后来加入了成交量确认,效果才好起来。
- 注意数据颗粒度: 用 tick 级数据还是秒级数据,结果可能天差地别。我建议先做敏感性分析,找到最适合你策略的时间尺度。
- 泊松模型不是万能药: 在极端行情下(比如闪崩),订单到达率会瞬间飙升,泊松假设基本失效。这时候我会切换到极值理论模型。
我的一个小习惯: 每天收盘后,我会把当天的订单流数据回放一遍,看看哪些信号是有效的,哪些是噪音。这个习惯帮我避开了很多坑。
好了,订单流分析的核心内容就这些。记住一句话:订单流是市场的「语言」,读懂它,你就能听懂市场在说什么。