第十七章:订单流与量化分析
订单流数据,说白了就是市场最原始的“心跳”。
我做了这么多年交易,越来越觉得传统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时,往往意味着短期趋势要反转。但别死板,要结合市场整体环境看。
三、订单流模型的建立
模型建立这块,我走过不少弯路。最开始我用简单的阈值规则,后来尝试了机器学习,最后发现——其实没有万能模型。
我个人比较推荐的做法是分层建模:
- 基础层:用订单流因子做信号过滤
- 策略层:结合价格形态做入场判断
- 风控层:用订单流异常检测做止损
下面是我画的一个模型结构图,你看一眼就明白了。
你看这个结构,数据从下往上流动,每一层都有明确的职责。我在实际项目中,经常在信号过滤层就干掉了一半以上的假信号。
四、订单流策略的评估
策略评估,这是最容易出问题的地方。很多人回测跑得漂亮,实盘就翻车。为什么?因为订单流数据的微观结构跟回测环境差别太大了。
我总结了一套评估框架:
评估维度:
- 滑点测试:模拟不同流动性下的成交情况
- 延迟测试:考虑网络延迟对信号的影响
- 容量测试:资金量增大时策略是否失效
- 压力测试:极端行情下的表现
举个例子,滑点测试怎么做?
# 滑点模拟代码
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%时,滑点直接吃掉了一半利润。所以,容量测试一定要做。
最后说一句,订单流策略的评估,不能只看夏普比率。我建议你重点关注最大回撤和胜率。为什么?因为订单流策略往往胜率不高,但盈亏比很大。如果你只看夏普,可能会错过好策略。
好了,这一章的内容就这些。记住,订单流数据是金矿,但挖矿需要工具和方法。量化处理、因子构建、模型建立、策略评估,这四个环节缺一不可。
我的建议:刚开始做订单流量化时,别贪多。先盯住一两个因子,把它们的规律摸透了,再慢慢扩展。我当年就是太心急,结果浪费了半年时间。