资讯动态

沪深港通数据实战:从北向资金到择时信号的全链路量化(第 1 篇):沪深港通全景接入:资金流向概览、历史走势与总览

发布时间:2026/9/27 23:07:43 来源:尧图企业网站定制
沪深港通数据实战从北向资金到择时信号的全链路量化第 1 篇沪深港通全景接入资金流向概览、历史走势与总览一、前言沪深港通是外资配置 A 股、内资配置港股的主通道。市场习惯把「北向资金」沪股通深股通视为外资情绪的风向标把「南向资金」港股通沪港股通深视为内资南下意愿的晴雨表。本季《沪深港通数据实战从北向资金到择时信号的全链路量化》规划 12 篇围绕官方/ht/nbzj/接口族从资金流向概览一路做到可落地的北向择时信号。本篇是开篇目标是把 5 个基础接口一次性接入、落库并验证「北向≈沪股通深股通」这一自研恒等式为后续走势深度第 2 篇与择时综合指标第 11 篇打底。系列沿用统一规范域名固定api.biyingapi.comLICENCE / DB_PATH / LOG_FILE为全局常量网络请求统一走biying_api_get_retry带重试本地落库用 SQLitequant.db代码块语法均通过ast.parse自检。二、接口与字段本篇覆盖 5 个只读接口字段全部以官方 API 文档为准零编造。2.1 最新资金流向概览/ht/nbzj/lxgl字段含义按官方字段名推断type渠道类型如沪股通/深股通/港股通等tname渠道名称dir流向方向netbuy净买入额netin净流入额remain当日余额up / ping / down上涨 / 平盘 / 下跌家数idx / idxdm / idxzd关联指数 / 指数代码 / 指数涨跌status状态2.2 北向资金历史走势/ht/nbzj/bxls/阶段(如1)字段含义bx北向资金净流入hgt沪股通净流入sgt深股通净流入t日期2.3 南向资金历史走势/ht/nbzj/nxls/阶段(如1)字段含义nx南向资金净流入ggth港股通沪净流入ggts港股通深净流入t日期2.4 北向资金历史总览/ht/nbzj/bxzl字段含义bx1m / hgt1m / sgt1m近 1 月北向 / 沪股通 / 深股通累计bx6m / hgt6m / sgt6m近 6 月累计bx1y / hgt1y / sgt1y近 1 年累计bxall / hgtall / sgtall开通以来全部累计2.5 南向资金历史总览/ht/nbzj/nxzl字段含义nx1m / ggth1m / ggts1m近 1 月南向 / 港股通沪 / 港股通深累计nx6m / ggth6m / ggts6m近 6 月累计nx1y / ggth1y / ggts1y近 1 年累计nxall / ggthall / ggtsall开通以来全部累计三、自研衍生指标接口只返回裸字段以下指标全部在 Python 中手写北向恒等式校验bx ≈ hgt sgt。官方分别给出北向与沪/深分项我们用加法做交叉验证偏差接近 0 说明数据自洽。南向恒等式校验nx ≈ ggth ggts同理。概览涨跌广度用up / ping / down计算北向通道覆盖标的的上涨占比作为情绪快照。四、数据表设计5 张表分别存放 5 个接口。以quant.db为统一库。CREATETABLEht_lxgl(typeTEXT,tnameTEXT,dirTEXT,netbuyREAL,netinREAL,remainREAL,upINTEGER,pingINTEGER,downINTEGER,idxTEXT,idxdmTEXT,idxzdREAL,statusTEXT,tsTEXT);CREATETABLEht_bxls(tTEXT,bxREAL,hgtREAL,sgtREAL);CREATETABLEht_nxls(tTEXT,nxREAL,ggthREAL,ggtsREAL);CREATETABLEht_bxzl(bx1mREAL,hgt1mREAL,sgt1mREAL,bx6mREAL,hgt6mREAL,sgt6mREAL,bx1yREAL,hgt1yREAL,sgt1yREAL,bxallREAL,hgtallREAL,sgtallREAL,tsTEXT);CREATETABLEht_nxzl(nx1mREAL,ggth1mREAL,ggts1mREAL,nx6mREAL,ggth6mREAL,ggts6mREAL,nx1yREAL,ggth1yREAL,ggts1yREAL,nxallREAL,ggthallREAL,ggtsallREAL,tsTEXT);五、完整代码importurllib.request,json,sqlite3,time,loggingimportpandasaspdfromdatetimeimportdatetime LICENCEYOUR_LICENCE_HEREDB_PATHquant.dbLOG_FILEseason4_article1.logBASEhttps://api.biyingapi.comlogging.basicConfig(filenameLOG_FILE,levellogging.INFO,format%(asctime)s %(levelname)s %(message)s)defbiying_api_get_retry(url,timeout15,max_retry3):带重试的官方接口请求封装。lastNoneforiinrange(max_retry):try:requrllib.request.Request(url,headers{User-Agent:Mozilla/5.0})withurllib.request.urlopen(req,timeouttimeout)asresp:returnjson.loads(resp.read().decode(utf-8))exceptExceptionase:laste logging.warning(retry %d/%d %s %s,i1,max_retry,url,e)time.sleep(1)logging.error(api failed %s %s,url,last)returnNonedefwith_exchange_suffix(code):沪深港通接口返回的代码已是标准代码如 600519.SH / 00700.HK原值透传。returncodedefget_conn():returnsqlite3.connect(DB_PATH)def_as_list(data):returndataifisinstance(data,list)else[data]defsave_lxgl():urlf{BASE}/ht/nbzj/lxgl/{LICENCE}databiying_api_get_retry(url)ifnotdata:returnrows_as_list(data)connget_conn()conn.execute(CREATE TABLE IF NOT EXISTS ht_lxgl ( type TEXT, tname TEXT, dir TEXT, netbuy REAL, netin REAL, remain REAL, up INTEGER, ping INTEGER, down INTEGER, idx TEXT, idxdm TEXT, idxzd REAL, status TEXT, ts TEXT))forrinrows:conn.execute(INSERT INTO ht_lxgl VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?),(r.get(type),r.get(tname),r.get(dir),r.get(netbuy),r.get(netin),r.get(remain),r.get(up),r.get(ping),r.get(down),r.get(idx),r.get(idxdm),r.get(idxzd),r.get(status),datetime.now().isoformat()))conn.commit();conn.close()logging.info(lxgl saved %d rows,len(rows))defsave_bxls(stage1):urlf{BASE}/ht/nbzj/bxls/{stage}/{LICENCE}databiying_api_get_retry(url)ifnotdata:returnrows_as_list(data)connget_conn()conn.execute(CREATE TABLE IF NOT EXISTS ht_bxls (t TEXT, bx REAL, hgt REAL, sgt REAL))forrinrows:conn.execute(INSERT INTO ht_bxls VALUES (?,?,?,?),(r.get(t),r.get(bx),r.get(hgt),r.get(sgt)))conn.commit();conn.close()logging.info(bxls saved %d rows,len(rows))defsave_nxls(stage1):urlf{BASE}/ht/nbzj/nxls/{stage}/{LICENCE}databiying_api_get_retry(url)ifnotdata:returnrows_as_list(data)connget_conn()conn.execute(CREATE TABLE IF NOT EXISTS ht_nxls (t TEXT, nx REAL, ggth REAL, ggts REAL))forrinrows:conn.execute(INSERT INTO ht_nxls VALUES (?,?,?,?),(r.get(t),r.get(nx),r.get(ggth),r.get(ggts)))conn.commit();conn.close()logging.info(nxls saved %d rows,len(rows))defsave_bxzl():urlf{BASE}/ht/nbzj/bxzl/{LICENCE}databiying_api_get_retry(url)ifnotdata:returnconnget_conn()conn.execute(CREATE TABLE IF NOT EXISTS ht_bxzl ( bx1m REAL, hgt1m REAL, sgt1m REAL, bx6m REAL, hgt6m REAL, sgt6m REAL, bx1y REAL, hgt1y REAL, sgt1y REAL, bxall REAL, hgtall REAL, sgtall REAL, ts TEXT))conn.execute(INSERT INTO ht_bxzl VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?),(data.get(bx1m),data.get(hgt1m),data.get(sgt1m),data.get(bx6m),data.get(hgt6m),data.get(sgt6m),data.get(bx1y),data.get(hgt1y),data.get(sgt1y),data.get(bxall),data.get(hgtall),data.get(sgtall),datetime.now().isoformat()))conn.commit();conn.close()logging.info(bxzl saved)defsave_nxzl():urlf{BASE}/ht/nbzj/nxzl/{LICENCE}databiying_api_get_retry(url)ifnotdata:returnconnget_conn()conn.execute(CREATE TABLE IF NOT EXISTS ht_nxzl ( nx1m REAL, ggth1m REAL, ggts1m REAL, nx6m REAL, ggth6m REAL, ggts6m REAL, nx1y REAL, ggth1y REAL, ggts1y REAL, nxall REAL, ggthall REAL, ggtsall REAL, ts TEXT))conn.execute(INSERT INTO ht_nxzl VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?),(data.get(nx1m),data.get(ggth1m),data.get(ggts1m),data.get(nx6m),data.get(ggth6m),data.get(ggts6m),data.get(nx1y),data.get(ggth1y),data.get(ggts1y),data.get(nxall),data.get(ggthall),data.get(ggtsall),datetime.now().isoformat()))conn.commit();conn.close()logging.info(nxzl saved)defself_check():自研校验北向沪股通深股通南向港股通沪港股通深。connget_conn()dfpd.read_sql(SELECT * FROM ht_bxls ORDER BY t,conn)conn.close()if{bx,hgt,sgt}.issubset(df.columns):df[check](df[hgt]df[sgt]-df[bx]).abs()print(df.tail(5).to_string())print(最大偏差:,df[check].max())if__name____main__:save_lxgl()save_bxls(stage1)save_nxls(stage1)save_bxzl()save_nxzl()self_check()六、业务关键点lxgl是「最新快照」每次拉取建议覆盖写入或带时间戳追加本篇用追加时间戳便于看日内变化。bxls / nxls的阶段参数控制时间粒度如 1日度不同会员等级返回窗口不同落地前先用小阶段验证。bxzl / nxzl是累计值单条记录建表时注意去重可按ts保留多版本。所有代码走biying_api_get_retry避免盘中限频导致整批失败。七、拓展练习把self_check的偏差阈值固化成断言偏差超 1e-6 即告警。用lxgl的up/ping/down计算每日北向覆盖标的上涨占比存成独立时序表。将 5 张表统一加上source字段标记接口名方便后续联表。八、下篇预告下一篇《北向资金走势深度累计净流入与自研动量信号》将基于本篇落库的ht_bxls / ht_bxzl计算累计净流入曲线、净流入 N 日动量并给出可量化的择时阈值信号。免责申明文中所有数据处理逻辑仅为编程演示仅为数据演示不构成投资建议。市场有风险投资需谨慎。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑