第四讲:逐笔成交分析——逐笔成交数据的解读与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算出来之后,怎么用?我分享三个我常用的视角:

  1. Delta与价格背离:价格创新高,但Delta在下降。这说明上涨是「虚涨」,主动买盘在减少。我一般会减仓。
  2. Delta极值反转:当Delta在短时间内冲到历史极值(比如3倍标准差),往往意味着情绪过度。这时候反向开仓,胜率不错。
  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和订单簿结合起来,讲一个完整的套利策略框架。到时候见。