3. 大单识别算法:大单定义与阈值设定、基于成交量的识别方法、基于成交金额的识别方法、基于委托单大小的识别方法
聊到大单识别,很多新手第一反应就是:「看到大单就跟着买呗」。嗯,事情要是这么简单,那满大街都是股神了。我做了这么多年量化,踩过的坑比吃过的盐还多。今天咱们就把大单识别这事儿掰开揉碎了讲清楚。
3.1 大单的定义与阈值设定
什么叫大单?说白了,就是一笔交易的单量或者金额,明显超过了市场正常的交易规模。但这里有个关键问题——「明显超过」到底是多少?
我个人习惯把大单分成两类:绝对大单和相对大单。
- 绝对大单:比如单笔成交超过500手、1000手这种固定阈值。适合大盘股,因为流动性好。
- 相对大单:根据个股的日均成交量动态计算。比如单笔成交量超过日均成交量的0.5%。适合小盘股,因为盘子小,绝对阈值容易失真。
阈值怎么定?我建议用「分位数法」。举个例子:
import pandas as pd
import numpy as np
# 假设df是某只股票的历史逐笔成交数据
# 计算每笔成交量的90%分位数
threshold_volume = df['volume'].quantile(0.90)
print(f"90%分位数阈值: {threshold_volume}手")
# 也可以用成交金额
threshold_amount = df['amount'].quantile(0.90)
print(f"90%分位数阈值: {threshold_amount}元")
你想想看,为什么用90%分位数?因为正常情况下,90%的交易都是散户的零碎单子。超过这个线,大概率是机构在动手。
3.2 基于成交量的识别方法
这是最直观的方法。单笔成交量突然放大,说明有大资金在进出。但这里有个坑——拆单。
机构现在都学精了,大单拆成几十笔小单,你按成交量阈值根本抓不到。怎么办?我一般用「累计成交量法」:
- 设定一个时间窗口,比如1分钟。
- 统计窗口内的累计成交量。
- 如果累计成交量超过阈值,就认为这1分钟内有「大单行为」。
# 1分钟累计成交量识别
window = 60 # 60秒
df['cum_volume'] = df['volume'].rolling(window).sum()
df['is_big_order'] = df['cum_volume'] > threshold_volume * 3
为什么要乘以3?因为1分钟的正常成交量大概是单笔阈值的2-3倍。这个系数我调了整整两周才找到感觉。
3.3 基于成交金额的识别方法
成交量法有个硬伤——不同股票的价格差异太大。你想想看,100手茅台和100手工商银行,金额差了100倍。所以成交金额法更普适。
我个人习惯用「金额阈值 + 价格波动」的组合:
| 股票类型 | 单笔金额阈值 | 价格波动要求 |
|---|---|---|
| 大盘股(市值>1000亿) | 100万元以上 | 价格变动>0.3% |
| 中盘股(市值100-1000亿) | 50万元以上 | 价格变动>0.5% |
| 小盘股(市值<100亿) | 20万元以上 | 价格变动>1.0% |
为什么加价格波动要求?因为有些机构会用「对倒」手法——自己买自己卖,制造成交量假象。但价格没动,说明是假的。
# 成交金额 + 价格波动识别
price_change = df['price'].pct_change()
amount_threshold = 500000 # 50万
df['is_real_big'] = (df['amount'] > amount_threshold) & (abs(price_change) > 0.005)
3.4 基于委托单大小的识别方法
这个方法更「前瞻」——成交是已经发生的事,而委托单是还没成交的。通过监控「挂单」的大小,可以提前预判大资金的意图。
我常用的指标是「委比」和「大单挂单占比」:
- 委比 = (买一量 - 卖一量) / (买一量 + 卖一量)。正值说明买方强势。
- 大单挂单占比 = 挂单中超过阈值的大单数量 / 总挂单数量。
举个例子:
# 计算大单挂单占比
def big_order_ratio(order_book, threshold=100):
big_bids = sum(1 for bid in order_book['bids'] if bid['size'] > threshold)
big_asks = sum(1 for ask in order_book['asks'] if ask['size'] > threshold)
total = len(order_book['bids']) + len(order_book['asks'])
return (big_bids + big_asks) / total
嗯,这里要注意:委托单是可以撤的。有些机构会挂大单「虚晃一枪」,等你跟进去,他立马撤单反向操作。我吃过这个亏,后来加了一个「挂单稳定性」指标——挂单后至少保持3秒不撤,才算有效。
知识体系总览
下面这张图是我自己梳理的大单识别框架,你一看就明白了:
最后说一句:没有完美的算法,只有不断迭代的策略。我自己的大单识别系统已经迭代了7个版本,每次回测都能发现新的问题。你刚开始做,别追求一步到位,先把基础框架搭起来,慢慢优化。
公众号:蓝海资料掘金营,微信deep3321