ETF资金流监测系统实战:用Python构建场内场外套利信号识别
ETF资金流监测系统实战用Python构建场内场外套利信号识别ETF是A股一个特殊的存在——它既是一篮子股票又能在二级市场像股票一样交易。我做量化这几年专门搭建了一套ETF资金流监测系统用Python把场内场外的资金流数据打通识别套利信号。这篇文章把核心实现分享出来。ETF数据主要分四块。第一块是ETF基金列表路径base/jjlbList基金列表返回所有ETF基金的代码、名称、类型、跟踪指数。第二块是ETF基金行情路径time/jjHQ/{基金代码}返回ETF的实时行情。第三块是ETF基金规模变动路径time/jjgm/{基金代码}返回ETF的份额变动历史。第四块是行业资金流向路径all/zjlx/zjhhy行业资金流向返回各行业的资金流向数据。我把这四块数据全部沉到本地。先说ETF基金列表怎么读。importjsonimportosimportpandasaspd data_dirD:/stock_datadefread_etf_list():file_pathos.path.join(data_dir,base,jjlbList)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[dm,mc,jjlb,gmbm,gmrb,gmsj,gmjz,gmje]returndfdefread_etf_realtime(dm):file_pathos.path.join(data_dir,time,jjHQ,dm)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame([data])df.columns[dm,mc,now,zf,jk,zs,zsz,cjsl,cjje,zt,dt,wb,wp]returndf字段简写dm基金代码mc基金名称jjlb基金类型gmbm规模编码gmrb规模日期gmje规模金额。实时行情字段now当前价zf涨跌幅jk今开zs昨收zsz总市值cjsl成交量cjje成交金额zt涨停dt跌停wb委买wp委卖。第一步是分析ETF场内场外溢价。ETF同时在场内二级市场和场外一级市场交易两个价格之间的差额就是套利空间。defanalyze_etf_premium(dm,lookback_days30):realtimeread_etf_realtime(dm)ifrealtimeisNone:returnNoneetf_listread_etf_list()ifetf_listisNone:returnNonetarget_etfetf_list[etf_list[dm]dm]iflen(target_etf)0:returnNoneetf_iopvtarget_etf.iloc[0][gmjz]etf_pricerealtime[now].iloc[0]premium(etf_price-etf_iopv)/etf_iopv*100print(ETF{}场内场外溢价分析.format(dm))print(场内价格{:.4f}.format(etf_price))print(场外净值{:.4f}.format(etf_iopv))print(溢价率{:.2f}%.format(premium))signalNoneifpremium2.0:signal场内高溢价可考虑卖出套利elifpremium-1.0:signal场内折价可考虑买入套利else:signal溢价正常无套利空间return{premium:premium,signal:signal}第二步是分析ETF份额变动。ETF份额变动反映了资金对这只ETF的态度是大资金进场还是离场最直观的指标。defread_etf_share_change(dm):file_pathos.path.join(data_dir,time,jjgm,dm)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[rq,fbdw,fqjz,fcye,zfdw,zqjz,zcye,jzzzl]returndfdefanalyze_etf_share_change(dm,days30):dfread_etf_share_change(dm)ifdfisNoneorlen(df)0:returnNonedf[fbdw]pd.to_numeric(df[fbdw],errorscoerce)df[zfdw]pd.to_numeric(df[zfdw],errorscoerce)df[rq]pd.to_datetime(df[rq],errorscoerce)recentdf.head(days)total_inflowrecent[fbdw].sum()/1e8total_outflowrecent[zfdw].sum()/1e8nettotal_inflow-total_outflowprint(ETF{}近{}日份额变动.format(dm,days))print(总申购{:.2f}亿份.format(total_inflow))print(总赎回{:.2f}亿份.format(total_outflow))print(净申购{:.2f}亿份.format(net))signalNoneifnet1.0:signal大额净申购资金流入elifnet-1.0:signal大额净赎回资金流出else:signal份额变动正常return{net:net,signal:signal}第三步是行业ETF联动分析。行业ETF和行业指数高度联动可以用行业资金流向数据来预判行业ETF的走势。defread_industry_flow():file_pathos.path.join(data_dir,all,zjlx,zjhhy)ifnotos.path.exists(file_path):returnNonewithopen(file_path,r,encodingutf-8)asf:datajson.load(f)dfpd.DataFrame(data)df.columns[rq,hy,zjl,zlJlr,zlJlb,shJlb,ddy,ddx,ddz,ddf,f5MinZlJe]returndfdeffind_industry_etf_signals(date_str):dfread_industry_flow()ifdfisNone:returnNonedf[rq]pd.to_datetime(df[rq],errorscoerce)targetdf[df[rq].dt.strftime(%Y-%m-%d)date_str]iflen(target)0:returnNonetarget[zlJlr]pd.to_numeric(target[zlJlr],errorscoerce)strongtarget[target[zlJlr]5]weaktarget[target[zlJlr]-5]print(日期{} 行业资金流向.format(date_str))print(强势行业)foridx,rowinstrong.iterrows():print( {}净流入{:.2f}亿.format(row[hy],row[zlJlr]))print(弱势行业)foridx,rowinweak.iterrows():print( {}净流出{:.2f}亿.format(row[hy],abs(row[zlJlr])))return{strong:strong,weak:weak}第四步是构建完整的ETF套利信号系统。我把上面几个模块组合起来。defetf_arbitrage_scan(date_str):etf_listread_etf_list()ifetf_listisNone:returnNoneetf_listetf_list[etf_list[jjlb].str.contains(ETF,naFalse)]signals[]fordminetf_list[dm].tolist():premium_resultanalyze_etf_premium(dm)share_resultanalyze_etf_share_change(dm,days10)ifpremium_resultisNoneorshare_resultisNone:continuepremiumpremium_result[premium]net_shareshare_result[net]ifpremium2.0andnet_share0.5:signals.append({dm:dm,signal:高溢价净申购可能有大资金申购套利关注卖出机会,premium:premium,net_share:net_share})elifpremium-1.0andnet_share-0.5:signals.append({dm:dm,signal:折价净赎回可能有大资金赎回套利关注买入机会,premium:premium,net_share:net_share})returnpd.DataFrame(signals)这套ETF系统跑了一年最关键的收获是ETF的资金流向比价格更值得关注。当某只ETF出现大额净申购但价格没怎么涨的时候往往是聪明钱在悄悄建仓。反过来当某只ETF大额净赎回但价格还坚挺的时候往往是陷阱。接口说明ETF基金列表base/jjlbListETF实时行情time/jjHQ/{dm}ETF份额变动time/jjgm/{dm}行业资金流向all/zjlx/zjhhy资料参考ig50

相关新闻

Java 应用数据库接入层工程实践:驱动、连接池与故障排查

Java 应用数据库接入层工程实践:驱动、连接池与故障排查

--- title: "Java 应用数据库接入层工程实践:驱动、连接池与故障排查" date: "2026-08-06T09:02:2708:00" summary: "数据库访问异常往往不只来自 SQL,也可能发生在驱动加载、连接池配置、网络超时和事务边界。本文以 Spring B…

2026/8/7 1:43:05 阅读更多 →
CANoe测试工程从零搭建指南:汽车电子工程师实战手册

CANoe测试工程从零搭建指南:汽车电子工程师实战手册

1. 项目概述:从零搭建CANoe测试工程如果你是一名汽车电子工程师,或者正在进入这个领域,那么“CANoe”这个名字对你来说一定不陌生。它几乎是汽车网络开发、测试和仿真领域的“瑞士军刀”,由Vector公司出品。但很多新手朋友拿到这个…

2026/8/7 1:43:05 阅读更多 →
免费GPX在线编辑器:无需下载软件,浏览器里编辑GPS轨迹

免费GPX在线编辑器:无需下载软件,浏览器里编辑GPS轨迹

免费GPX在线编辑器:无需下载软件,浏览器里编辑GPS轨迹 【免费下载链接】gpxstudio.github.io The online GPX file editor 项目地址: https://gitcode.com/gh_mirrors/gp/gpxstudio.github.io 你是否经常需要处理户外运动的GPS轨迹文件&#xff0…

2026/8/7 1:43:05 阅读更多 →

最新新闻

5分钟快速上手微信公众号爬虫:3个实战技巧获取文章数据、阅读量和点赞数

5分钟快速上手微信公众号爬虫:3个实战技巧获取文章数据、阅读量和点赞数

5分钟快速上手微信公众号爬虫:3个实战技巧获取文章数据、阅读量和点赞数 【免费下载链接】wechat_articles_spider 微信公众号文章的爬虫 项目地址: https://gitcode.com/gh_mirrors/we/wechat_articles_spider 微信公众号爬虫是数据分析师和运营人员必备的数…

2026/8/7 2:23:26 阅读更多 →
2026年pdf合并网站实测盘点:这几款在线合并与拆分工具各有什么特点

2026年pdf合并网站实测盘点:这几款在线合并与拆分工具各有什么特点

上个月报销差旅费,财务要求把所有票据按时间顺序合并成一个PDF上传。我手里散落着机票行程单、酒店水单、打车发票,格式五花八门——有的从邮箱下载,有的是手机截图,还有两张是同事转发的扫描件。文件名乱成一团,手动排…

2026/8/7 2:23:26 阅读更多 →
PDF合并拆分工具有哪些?2026免费方案盘点,线上本地都覆盖

PDF合并拆分工具有哪些?2026免费方案盘点,线上本地都覆盖

八月初入职,我被财务主管一句“报销单全部合并成一个PDF交过来,不要一张一张发”钉在工位上整整一下午。手机扫出来的发票零零散散七八个文件,微信里还躺着同事转来的三张收据截图,我在办公室电脑前翻了好一阵子也没找到能直接用的…

2026/8/7 2:23:26 阅读更多 →
Ubuntu系统配置全攻略:为鸿蒙开发打造高效Linux环境

Ubuntu系统配置全攻略:为鸿蒙开发打造高效Linux环境

1. 项目概述:为什么要在Ubuntu上准备鸿蒙开发环境?最近身边不少朋友开始琢磨鸿蒙开发,尤其是想搞点设备侧或者系统底层的应用,第一道坎往往就是环境搭建。很多人习惯了在Windows上用各种IDE点点鼠标,但真到了鸿蒙这种偏…

2026/8/7 2:23:26 阅读更多 →
本地部署AI角色绘画:从Stable Diffusion到特定角色风格化实践

本地部署AI角色绘画:从Stable Diffusion到特定角色风格化实践

这次我们来看一个基于AI图像生成技术的本地部署项目,它能够将二次元角色“古明地恋”的立绘风格进行高精度复现与创作。这个项目并非一个通用AI绘画工具,而是针对特定角色风格进行深度优化的模型与应用方案,核心目标是在本地环境下&#xff0…

2026/8/7 2:23:26 阅读更多 →
轩辕镜像:轻量级容器化解决方案与性能优化实践

轩辕镜像:轻量级容器化解决方案与性能优化实践

1. 轩辕镜像概述:新一代容器化解决方案轩辕镜像是近期在开发者社区中备受关注的一款轻量级容器镜像解决方案。作为一名长期在云计算和容器化领域实践的工程师,我最初接触这个项目是在一次技术沙龙上,当时演讲者演示了如何用轩辕镜像在3秒内完…

2026/8/7 2:22:26 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →