ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

沪深港通数据实战:从北向资金到择时信号的全链路量化(第 2 篇):北向资金走势深度:累计净流入与自研动量信号

沪深港通数据实战:从北向资金到择时信号的全链路量化(第 2 篇):北向资金走势深度:累计净流入与自研动量信号 沪深港通数据实战从北向资金到择时信号的全链路量化第 2 篇北向资金走势深度累计净流入与自研动量信号一、前言第 1 篇已经把ht_bxls日度北向/沪股通/深股通净流入与ht_bxzl累计值落库。本篇不再拉新接口而是对已有时序做深加工累计净流入曲线、日度净流入、N 日动量以及一个可量化的择时阈值信号为第 11 篇的综合择时指标提供「资金面」单因子。代码保持自包含仅从quant.db读取第 1 篇的数据不依赖网络。二、接口与字段本篇复用第 1 篇落库表表字段用途ht_bxlst, bx, hgt, sgt日度北向/沪股通/深股通净流入ht_bxzlbx1m…bxall累计值用于末端交叉校验三、自研衍生指标累计净流入cum_bx bx.cumsum()应随交易日单调逼近ht_bxzl.bxall。日度净流入daily_net bx.diff()反映单日边际变化。N 日动量mom_n bx.diff(n)衡量近 N 日净流入趋势。择时信号signal净流入为正且动量转正 → 1看多净流入为负 → −1看空其余 → 0。四、数据表设计CREATETABLEht_bx_trend(tTEXT,bxREAL,cum_bxREAL,daily_netREAL,mom_nREAL,signalINTEGER);五、完整代码importsqlite3,pandasaspd,loggingfromdatetimeimportdatetime DB_PATHquant.dbLOG_FILEseason4_article2.loglogging.basicConfig(filenameLOG_FILE,levellogging.INFO,format%(asctime)s %(levelname)s %(message)s)defbuild_trend(n5):基于 ht_bxls 计算累计/日度/动量并生成择时信号。connsqlite3.connect(DB_PATH)dfpd.read_sql(SELECT t, bx, hgt, sgt FROM ht_bxls ORDER BY t,conn)conn.close()df[t]pd.to_datetime(df[t])dfdf.sort_values(t).reset_index(dropTrue)df[cum_bx]df[bx].cumsum()df[daily_net]df[bx].diff()df[mom_n]df[bx].diff(n)df[signal]0df.loc[(df[bx]0)(df[mom_n]0),signal]1df.loc[df[bx]0,signal]-1connsqlite3.connect(DB_PATH)conn.execute(CREATE TABLE IF NOT EXISTS ht_bx_trend ( t TEXT, bx REAL, cum_bx REAL, daily_net REAL, mom_n REAL, signal INTEGER))conn.execute(DELETE FROM ht_bx_trend)for_,rowindf.iterrows():conn.execute(INSERT INTO ht_bx_trend VALUES (?,?,?,?,?,?),(row[t].strftime(%Y-%m-%d),row[bx],row[cum_bx],row[daily_net],row[mom_n],int(row[signal])))conn.commit();conn.close()logging.info(trend built %d rows,len(df))returndfdefcheck_vs_bxzl():自研累计与官方累计交叉校验。connsqlite3.connect(DB_PATH)lastpd.read_sql(SELECT cum_bx FROM ht_bx_trend ORDER BY t DESC LIMIT 1,conn)allvpd.read_sql(SELECT bxall FROM ht_bxzl ORDER BY ts DESC LIMIT 1,conn)conn.close()ifnotlast.emptyandnotallv.empty:print(自研累计%.2f 官方累计%.2f%(last[cum_bx].iloc[0],allv[bxall].iloc[0]))if__name____main__:dfbuild_trend(n5)print(df.tail(10).to_string())print(看多天数:,(df[signal]1).sum(), 看空天数:,(df[signal]-1).sum())check_vs_bxzl()六、业务关键点bx单位依官方文档通常为亿元cumsum与bxall完全可比的前提是ht_bxls已拉满全部历史交易日。信号阈值可参数化mom_n 0只是基线实盘可换成「N 日动量 均线」或「连续 K 日为正」。第 11 篇会把本篇signal与后续成分股涨跌、排名持续度做因子共振。七、拓展练习把mom_n换成bx.rolling(n).mean()的环比变化对比两种动量定义。增加「北向连续净流入天数」字段作为独立的情绪因子。把signal序列与沪深 300 日收益做简单回测看看多区间的平均收益。八、下篇预告下一篇《沪、深股通成分股行情字段解析与清洗》将接入ht/nbzj/hgtc与ht/nbzj/sgtc把北向通道的「标的池」行情落库并计算北向成分股当日平均涨跌幅这一情绪指标。免责申明文中所有数据处理逻辑仅为编程演示仅为数据演示不构成投资建议。市场有风险投资需谨慎。
返回列表