第四讲:逐笔成交分析——逐笔成交数据的解读与Delta计算
各位同学,欢迎来到第四讲。
前面我们讲了订单簿的静态结构,也讲了撮合逻辑。但说实话,那些都是「结果」。真正驱动价格变动的,是每一笔成交背后的资金博弈。今天我们就来拆解这个最底层的信号——逐笔成交数据。
4.1 逐笔成交数据长什么样?
先看一个真实场景。假设你打开交易所的深度图,看到卖一挂了100手,买一挂了80手。突然,一笔200手的市价单砸下来,把卖一吃掉,价格跳了一档。这笔交易在逐笔成交数据里会怎么记录?
我直接贴一个典型的逐笔成交数据结构:
{
"symbol": "BTCUSDT",
"trade_id": 123456789,
"price": 50000.0,
"quantity": 2.0,
"side": "SELL", // 主动成交方向
"timestamp": 1690000000123,
"is_buyer_maker": false // 买方是否为挂单方
}
这里有个关键字段——is_buyer_maker。它告诉你这笔交易中,买方是主动吃单(false)还是被动挂单(true)。说白了,就是判断谁在主动进攻。
核心概念:逐笔成交数据记录的是「已经成交」的订单,不是挂单。每一行代表一笔真实的交易。
4.2 主动买 vs 主动卖——Delta的底层逻辑
为什么要区分主动和被动?因为主动方才是「花钱的人」。主动买意味着买方愿意以卖一价成交,这是看涨信号。主动卖则相反。
Delta的计算公式很简单:
Delta = 主动买入量 - 主动卖出量
嗯,就这么简单。但实际处理时有个坑——不同交易所对「主动」的定义不一样。我曾在项目中遇到过一个问题:某交易所的逐笔数据里,side字段标的是「BUY」,但is_buyer_maker却是true。这意味着买方是挂单方,这笔交易其实是卖方主动吃单。如果你只看side,就会把Delta算反。
避坑指南:我曾经因为没检查这个字段,跑了一个月的回测,结果策略表现极差。后来发现Delta符号全反了。记住:永远以「主动方」为准,不是以「成交方向」为准。
4.3 实战:用Python计算逐笔Delta
好,理论讲完了,我们直接上代码。假设你从交易所API拿到了逐笔成交数据,存在一个DataFrame里:
import pandas as pd
# 假设df包含字段:price, quantity, is_buyer_maker
def calc_delta(df):
# 主动买入:is_buyer_maker == False 且 side == 'BUY'
# 主动卖出:is_buyer_maker == False 且 side == 'SELL'
# 挂单成交不计入Delta(或者单独统计)
df['delta_volume'] = 0.0
# 主动买入
buy_mask = (df['is_buyer_maker'] == False) & (df['side'] == 'BUY')
df.loc[buy_mask, 'delta_volume'] = df.loc[buy_mask, 'quantity']
# 主动卖出
sell_mask = (df['is_buyer_maker'] == False) & (df['side'] == 'SELL')
df.loc[sell_mask, 'delta_volume'] = -df.loc[sell_mask, 'quantity']
# 累计Delta
df['cumulative_delta'] = df['delta_volume'].cumsum()
return df
这段代码逻辑很直白。但实际生产中,数据量是百万级的。我建议用numpy向量化操作,别用loc逐行赋值,否则速度会慢到让你怀疑人生。
个人习惯:我一般会把逐笔数据按1分钟或5分钟聚合,计算每个时间窗口的Delta总和。这样既能捕捉资金流向,又不会太敏感。
4.4 从Delta到交易信号
Delta算出来之后,怎么用?我分享三个我常用的视角:
- Delta与价格背离:价格创新高,但Delta在下降。这说明上涨是「虚涨」,主动买盘在减少。我一般会减仓。
- Delta极值反转:当Delta在短时间内冲到历史极值(比如3倍标准差),往往意味着情绪过度。这时候反向开仓,胜率不错。
- Delta累积与持仓成本:如果某合约的累积Delta持续为正,但价格没涨,说明有大资金在悄悄吸筹。等价格突破时跟进。
举个例子。我记得有一次做ETH的套利,发现现货的Delta持续为正,但期货的Delta为负。这说明有人在现货市场买,在期货市场卖。嗯,典型的期现套利行为。我跟着做了几笔,利润还不错。
4.5 数据清洗——容易被忽略的细节
逐笔成交数据看着简单,但脏数据特别多。我列几个常见问题:
| 问题类型 | 表现 | 处理方法 |
|---|---|---|
| 重复数据 | 同一笔交易出现两次 | 按trade_id去重 |
| 时间戳错乱 | 后一笔的时间戳比前一笔还早 | 按时间戳排序,丢弃异常值 |
| 数量为0 | 某些交易所会推送空交易 | 直接过滤掉quantity=0的行 |
| 价格异常 | 价格偏离市场价太多 | 用Z-score或IQR过滤 |
你想想看,如果数据没洗干净,Delta算出来全是噪音。那策略再牛逼也没用。
4.6 进阶:Delta的微观结构分析
如果你已经掌握了基础Delta,可以试试更精细的分析。比如:
- 大单Delta:只统计单笔超过某个阈值(比如10个BTC)的主动交易。大资金的动作往往更有意义。
- Delta加速度:计算Delta的一阶差分。如果Delta本身在增加,而且加速度也在增加,说明资金在加速流入。
- Delta与订单簿失衡:把Delta和订单簿的买卖盘口深度结合起来。比如Delta为正,同时买盘深度大于卖盘深度,这是强共振信号。
我个人最喜欢的是「Delta加速度」这个指标。因为它能提前捕捉到资金流向的变化。举个例子,价格还在横盘,但Delta加速度已经转正了。这时候我会提前布局,等价格启动时我已经在里面了。
总结一下:逐笔成交分析的核心就两件事——算对Delta,看懂Delta。算对需要细心,看懂需要经验。多复盘,多对比,慢慢你就能从数字里读出市场的「情绪」。
好,这一讲就到这里。下一讲我们会把Delta和订单簿结合起来,讲一个完整的套利策略框架。到时候见。