场景切入 在做外汇量化策略的这些年里,我一直试图从更短的时间尺度上提取有效因子。传统的 OHLC 统计在分钟级别上看似简洁,却把每根 K 线内部的订单流信息全部“压缩”掉了。有一次在实盘监控中,我发现 EUR/USD 一分钟阳线涨幅可观,但顺势开仓后立即被打回,复盘才发现当时卖方力量远大于买方。这个经历促使我系统性地将 Tick 级盘口失衡度纳入因子库。
客户需求:跨境外汇策略需要灵敏刻画短周期资金流向
对于我们这些用模型在跨境市场跑短线的量化交易者而言,因子的反应速度和信息含量决定了策略的竞争优势。我需要构建一类能够敏锐反映市场瞬间买卖力量对比的因子,弥补传统动量、成交量因子在分钟级别上的钝化问题。换言之,策略必须能感知到这一分钟内,到底是买方还是卖方在主动驱动价格。
投顾痛点:传统量价因子无法揭示盘口内部的主动方向
许多现成的量化因子依赖分钟 K 线的收盘价、成交量或者成交额,但这些都是在窗口结束后形成的聚合值。假设一分钟内先放量下跌再快速回升,最终收阳,传统因子可能会解读为偏多信号,完全忽略了其中的多空激烈拉锯。这种信息丢失,会导致策略在震荡和高频波动中出现严重的误判。
数据支撑:利用 Tick 数据实现分钟级的买卖力量统计
盘口失衡度(Order Imbalance)因子定义为: Imbalance = (Buy Volume - Sell Volume) / (Buy Volume + Sell Volume)
它的取值在 -1 到 1 之间,直观反映买卖双方的相对强弱。例如一分钟内的统计:
| 类型 | 成交量 |
|---|---|
| 买方成交量 | 800 |
| 卖方成交量 | 500 |
得到失衡度为 0.23,显示买方主导。当连续若干个一分钟窗口的失衡度由负转正时,往往预示着短线资金态度已经发生了实质性的转变,这就是策略可以捕捉的边际信号。
原始外汇 Tick 数据不含买卖标志,因子的构建依赖规则推导:将当前成交价格与上一笔比较,上涨归为买方量,下跌归为卖方量。例如:
| 时间 | 价格 | 判断 |
|---|---|---|
| 10:00:01 | 1.0860 | - |
| 10:00:04 | 1.0862 | 买方 |
| 10:00:08 | 1.0858 | 卖方 |
基于上述规则,即可在分钟窗口内累加得出计算所需的 Buy Volume 与 Sell Volume。
服务升级:从离线回测延伸到实时因子生产管道
策略因子的有效性建立在数据源持续、可靠的基础上。为了让盘口失衡度因子能够实时参与交易决策,我通过 WebSocket 接入 AllTick 的实时行情推送,将流式 Tick 数据缓存后按分钟聚合,稳定地输出因子值。这样一来,因子不再只是回测曲线上的一个数字,而成了实盘中动态演化的市场情绪仪表。
数据接入部分的代码,负责持续拉取 Tick 流:
import websocket
import json
def on_message(ws, message):
data = json.loads(message)
print(
data["symbol"],
data["price"],
data["volume"]
)
def on_open(ws):
request = {
"symbol": "EURUSD",
"type": "tick"
}
ws.send(json.dumps(request))
ws = websocket.WebSocketApp(
"wss://api.alltick.co/ws",
on_open=on_open,
on_message=on_message
)
ws.run_forever()
因子值计算的核心累加逻辑如下:
ticks = [
{"price": 1.0860, "volume": 100},
{"price": 1.0862, "volume": 180},
{"price": 1.0858, "volume": 120}
]
buy_volume = 0
sell_volume = 0
for i in range(1, len(ticks)):
if ticks[i]["price"] > ticks[i-1]["price"]:
buy_volume += ticks[i]["volume"]
else:
sell_volume += ticks[i]["volume"]
imbalance = (
buy_volume - sell_volume
) / (buy_volume + sell_volume)
print(imbalance)
在实盘生产环节,还需要增加严格的时钟对齐与窗口关闭机制,防止因数据延迟导致因子值跳动。我将其与波动率、成交量分位等辅助因子组合使用,策略的稳定性得到了肉眼可见的提升。对于仍在打磨短周期外汇策略的量化同好,真心建议把这个因子加入自己的候选池。


