4. 大单定义与阈值设定:绝对阈值法、相对阈值法、动态阈值法、基于流动性的阈值
各位同学,咱们今天聊一个实操中绕不开的话题——到底多大的单子才算大单?
说实话,我刚入行那会儿也犯过傻。拿着交易所的逐笔成交数据,上来就拍脑袋设了个“单笔成交≥100万就算大单”。结果回测下来,策略收益曲线跟心电图似的,忽上忽下。后来复盘才发现——阈值设错了,后面全是白忙活。
所以这一节,我把自己踩过的坑和总结出来的经验,掰开了揉碎了讲给你听。咱们从四种主流方法说起。
4.1 绝对阈值法:最简单,但最危险
绝对阈值法,说白了就是定一个固定数值。比如:
- 单笔成交金额 ≥ 100万元 → 大单
- 单笔成交量 ≥ 10万股 → 大单
听起来很直观对吧?但我得提醒你:这个方法只适合特定场景。
什么时候能用?我个人习惯在以下场景用绝对阈值:
- 分析大盘蓝筹股(比如茅台、平安),流动性好,阈值稳定
- 做日内高频策略,需要快速过滤掉小单噪音
- 跨市场对比时,统一标准方便比较
4.2 相对阈值法:按比例来,更公平
相对阈值法,就是根据股票自身的成交情况来设定。比如:
- 单笔成交量 ≥ 当日总成交量的 0.1% → 大单
- 单笔成交金额 ≥ 当日平均单笔成交金额的 5倍 → 大单
这个方法的好处是——不同股票之间可以横向比较了。
举个例子:
| 股票 | 当日总成交量 | 0.1% 阈值 | 实际大单笔数 |
|---|---|---|---|
| 工商银行 | 1亿股 | 10万股 | 23笔 |
| 某小盘股 | 500万股 | 5000股 | 18笔 |
你看,用相对阈值后,大小盘股的大单识别数量就比较均衡了。不会出现大盘股全是“大单”、小盘股全是“小单”的尴尬局面。
4.3 动态阈值法:让阈值跟着市场走
动态阈值法,就是阈值不是固定的,而是根据近期市场状态自动调整。比如:
- 基于过去20个交易日的平均单笔成交金额 × 某个倍数
- 基于过去N天的成交量标准差,设定上下限
为什么要动态?你想想看:
一只股票平时每天成交1亿,突然有一天成交5亿。这时候如果还用原来的阈值,可能会把很多“正常的大单”漏掉。动态阈值就能自动适应这种变化。
我常用的一个动态阈值公式:
# 动态阈值示例(Python伪代码)
import pandas as pd
import numpy as np
def dynamic_threshold(trade_data, window=20, multiplier=3):
"""
trade_data: 逐笔成交DataFrame,包含'amount'列
window: 滚动窗口天数
multiplier: 倍数
"""
# 计算每日平均单笔成交金额
daily_avg = trade_data.groupby('date')['amount'].mean()
# 滚动窗口计算动态阈值
dynamic_thresh = daily_avg.rolling(window=window, min_periods=5).mean() * multiplier
# 将阈值映射回每笔交易
trade_data['threshold'] = trade_data['date'].map(dynamic_thresh)
trade_data['is_large'] = trade_data['amount'] >= trade_data['threshold']
return trade_data
嗯,这里要注意:窗口期不能太短,也不能太长。我试过5天,太敏感,市场一波动阈值就乱跳;60天又太迟钝,跟不上节奏。20天是我个人觉得比较舒服的。
4.4 基于流动性的阈值:最精细,也最复杂
这个方法,说白了就是——大不大,得看市场能不能“接得住”。
举个例子:
同样一笔100万的买单,放在工商银行(日成交50亿)里,就是毛毛雨;放在一只日成交只有2000万的仙股里,那就是“巨鲸”级别的。
基于流动性的阈值,通常会考虑:
- 买卖盘口深度:比如买一~买五的总挂单量
- 订单簿斜率:价格每变动1%,能吃掉多少单子
- 成交冲击成本:这笔单子如果全部吃掉,价格会滑多少
我曾在项目中用过一种简化方法:
# 基于流动性的大单识别(简化版)
def liquidity_based_threshold(order_book, trade_amount):
"""
order_book: 当前盘口数据(买一~买五的价格和数量)
trade_amount: 当前成交金额
"""
# 计算买一到买五的总挂单金额
total_bid_depth = sum([price * qty for price, qty in order_book['bids']])
# 如果成交金额超过盘口深度的20%,视为大单
threshold_ratio = 0.2
is_large = trade_amount >= total_bid_depth * threshold_ratio
return is_large
4.5 四种方法对比总结
好了,四种方法都讲完了。我画了一张图帮你理清思路:
最后说一句:没有完美的阈值方法,只有最适合你策略的方法。我个人习惯是先用相对阈值法做快速筛选,再用动态阈值法做精细识别。如果数据源允许,再加上流动性阈值做辅助验证。
嗯,这一节就到这里。记住:阈值设对了,大单识别就成功了一半。