大单交易明细管道实战用bigdeal接口构建超大单动向监控 IG50免费开源股票数据API接口

大单交易明细管道实战用bigdeal接口构建超大单动向监控 IG50免费开源股票数据API接口

逐笔数据颗粒度最细但体量太大,L2指标开箱即用但口径是黑盒,介于两者之间的大单交易明细是我用得最顺手的资金观察数据:交易所撮合出的大单成交逐条落盘,带成交方向和时间戳,既能做资金画像又不用背负全量逐笔的清洗成本。这篇文章记录我把大单明细管道化的完整过程:数据结构解析、超大单的动态定义、流向聚合、以及和逐笔数据的口径校验,代码全部是生产版本。

先看数据结构。大单交易在本地接口 time/real/trace/bigdeal/加股票代码,返回数组,每条记录四个核心字段:t 成交时间、v 成交量(股)、p 成交价、ts 交易方向(0 中性盘、1 买入、2 卖出),另有 d 字段标注数据归属日期。注意它已经过滤掉了小单,所以单条记录的量级显著高于逐笔,直接拿金额排序就能定位超大单,这是它对逐笔最大的工程优势。

第一步,读取与金额标准化。价格乘数量得到每笔金额,再按方向符号化,这一步没啥花样,关键是把 d 字段的日期校验做严------跨日文件拼接时以 d 为准,避免把隔日数据混进当日序列。

python 复制代码
import json
import pandas as pd

def load_bigdeal(fp: str) -> pd.DataFrame:
    """读取大单明细并标准化"""
    rows = json.loads(open(fp, encoding='utf-8').read())
    df = pd.DataFrame(rows)
    # 字段: t 时间 v 成交量 p 成交价 ts 方向(0中性/1买/2卖) d 归属日期
    df = df[(df['v'] > 0) & (df['p'] > 0)].sort_values('t').reset_index(drop=True)
    df['amt'] = df['p'] * df['v']                       # 单笔金额
    df['sign'] = df['ts'].map({0: 0.0, 1: 1.0, 2: -1.0})
    return df

第二步,超大单的动态定义。固定金额阈值(比如一百万)在流动性分层明显的市场里会失真:小票全天可能没几笔百万单,大票百万单只是零头。我的方案是双维度动态阈值:单日金额分位数乘流通规模系数。具体做法是取当日大单金额的 98 分位作为超大单下限,再要求单笔金额不低于当日成交额的千分之三,两个条件取交集。这样同一套代码从五亿盘子跑到千亿盘子都不用调参。

python 复制代码
def tag_super(df: pd.DataFrame) -> pd.DataFrame:
    """动态定义超大单:98分位 且 占大单合计千分之三以上"""
    q98 = df['amt'].quantile(0.98)
    base = df['amt'].sum()
    mask = (df['amt'] >= q98) & (df['amt'] >= base * 0.003)
    df['is_super'] = mask
    df['flow'] = df['amt'] * df['sign']
    return df

第三步,流向聚合与时段画像。超大单的观察价值在时段结构上:早盘超大单净流向代表开盘博弈的方向,尾盘超大单是资金隔夜态度的表达。我按三个时段聚合净流向,并算一个集中度指标------最大单笔金额占超大单合计的比例,集中度极高说明方向由个别大资金决定,离散分布则更像机构拆单的渐进建仓。

python 复制代码
def flow_profile(df: pd.DataFrame) -> dict:
    """时段流向画像与集中度"""
    sup = df[df['is_super']]
    def net(lo, hi):
        seg = sup[(sup['t'] >= lo) & (sup['t'] < hi)]
        return float(seg['flow'].sum())
    total = max(float(sup['flow'].abs().sum()), 1.0)
    return {
        'morning_net': net('09:30', '11:00'),
        'afternoon_net': net('13:00', '14:30'),
        'tail_net': net('14:30', '15:01'),
        'conc': float(sup['amt'].max() / max(sup['amt'].sum(), 1)),  # 集中度
        'buy_ratio': float(sup[sup['ts'] == 1]['amt'].sum() /
                           max(sup['amt'].sum(), 1)),
    }

第四步,口径校验。大单明细是数据方过滤后的子集,用它之前我会抽样和逐笔数据做一次勾稽:同一时段、同方向的逐笔加总应能覆盖大单明细的金额。勾稽对得上说明两边口径同步,对不上优先怀疑大单过滤规则变更,这时候要检查数据文档的更新日志。这个校验每周跑一次就够,成本极低但能挡住静默漂移。

实战观察说三点。其一,超大单集中在度 conc 高于 0.35 的样本,次日延续当日方向的概率明显更高------单个大资金的行为比一群中等资金的一致性更稳定,这个特征我直接做进了监控表排序。其二,尾盘超大单的权重应该比早盘给得更高,实测尾盘净流向对次日开盘方向的指示力是早盘的两倍上下,毕竟尾盘是当天最后的真金白银表态。其三,中性盘 ts 等于 0 的超大单不要丢弃,撮合规则下它们多为对倒嫌疑,单独计数,占比突变往往先于价格异动。另有一个流动性分层经验:金额占大单合计千分之三这条绝对线在小票上会过严,实际部署时我把分位参数做成按流通市值分三档的配置表,五亿以下用 96 分位、二十亿以上用 99 分位,命中率比全局单一参数好一截。

这条管道每天收盘后全池跑一遍只要几分钟,产出一张超大单时段画像表,配合主力净额数据做交叉确认,资金面的判断就有了两层独立证据。

本文用到的接口:大单交易 time/real/trace/bigdeal/加股票代码(字段 t、v、p、ts、d);逐笔成交 time/real/trace/onebyone/加股票代码(勾稽校验用)。数据由本地引擎 ig50 按日落盘。

资料参考:ig50

gitee开源地址

github开源地址

相关推荐
wflynn3 小时前
GitHub 今日推荐|Edge0:让大号 MoE 模型在一台 Mac 上流式跑起来
python·开源·github
甘晴void4 小时前
我给 Magpie 做了个 macOS 桌宠:106 段动画,请求一多就亮灯
macos·electron·开源·deepseek·桌面宠物·magpie
miofly6 小时前
Claude Sonnet 5自主选药选坐标完成小鼠脑部手术,更强模型拒绝执行
开源·github
hhhjhl8 小时前
开源鸿蒙平台 KMP_CMP 三方库「Clikt」适配全流程
华为·开源·harmonyos
小杨互联网8 小时前
Rust 现代 CLI 工具离线镜像合集
开源·工具·离线镜像
IvorySQL10 小时前
开源数据库进校园| 11 月 3 日,IvorySQL 校园行走进浙大宁波校区:从 PostgreSQL 扩展生态到 AI 实战
数据库·postgresql·开源
深蓝AI11 小时前
Ghostty 1.4 七个月打磨:ASCII 解析快 5.7 倍、终端能放动画,SSH 乱码终结
程序员·开源
码上观世界11 小时前
从几个抓网页的开源项目讲起
开源
时早玖沐11 小时前
KOOK「找不到语音频道」:同一个错误假设,我犯了三次
python·开源·ai编程
Raas10011 小时前
AI网关怎么部署?MAI Gateway部署实操教程
人工智能·开源·gateway·mai gateway·企业级ai产品