港股通标的数据管道实战从gphk列表到港股行情的落地细节 IG50免费开源股票数据API接口

港股通标的数据管道实战从gphk列表到港股行情的落地细节 IG50免费开源股票数据API接口

多市场研究的第一站通常是港股,而港股数据管道的第一课是"目录与A股不同":代码是五位数字、板块分主板创业板、还有一个A股没有的维度------是否属于港股通。这篇文章记录我把港股通标的从列表到行情的管道落地的完整细节:列表结构、通标的筛选、代码规范、行情接入与日历差异处理,把踩过的坑一次写全。

数据源起点是港股股票列表,本地接口 base/gphk,全市场一个文件,字段精炼但覆盖了分类所需的全部维度:dm 股票代码(五位,如00001)、mc 名称、isIndex 是否指数、isZb 是否主板、isCyb 是否创业板,以及多市场研究最关键的 isGgt 是否属于港股通。这一行 isGgt 标记,就是南向资金可交易名单的机器可读版本,省掉了自己维护名单表的全部维护成本。

第一步,列表加载与通标的筛选。列表加载后按 isIndex 等于零剔除指数,再按 isGgt 等于一筛出港股通标的。两个工程细节:其一,港股通名单是动态调整的(定期纳入调出),管道必须每次全量重读列表而不是缓存旧名单,否则会出现"标的已调出、管道还在跟踪"的幽灵标的;其二,主板与创业板分层保留,创业板港股的流动性与主板差一个量级,统计口径要分开。

python 复制代码
import json

def load_ggt_universe(data_root: str) -> dict:
    """加载港股列表并筛出港股通标的(分层保留)"""
    rows = json.loads(open(f'{data_root}/base/gphk',
                           encoding='utf-8').read())
    # 字段: dm 代码(5位) mc 名称 isIndex isZb 主板 isCyb 创业板 isGgt 港股通
    stocks = [r for r in rows if r.get('isIndex') == 0]
    ggt = [r for r in stocks if r.get('isGgt') == 1]
    return {
        'all_stocks': stocks,
        'ggt': ggt,
        'ggt_main': [r for r in ggt if r.get('isZb') == 1],
        'ggt_cyb': [r for r in ggt if r.get('isCyb') == 1],
    }

第二步,代码规范与路径映射。港股代码的五位补零是管道的第一个体力坑:日常语境的"700"在数据体系里是"00700",列表加载后统一做 zfill(5) 规范化,所有下游路径拼接复用同一格式。行情数据的路径组织与A股同构------历史K线沿用 time/history/trade/加代码/加分时级别 的结构,代码换成五位港股格式即可,这让A股管线的读取函数几乎零改动复用,是多市场数据体系最大的工程红利。

python 复制代码
def norm_hk_code(raw: str) -> str:
    """港股代码规范化:'700' -> '00700'"""
    digits = ''.join(ch for ch in str(raw) if ch.isdigit())
    return digits.zfill(5)

def kline_path(data_root: str, raw_code: str, level: str) -> str:
    """港股K线路径:与A股同构,代码走五位规范"""
    return f'{data_root}/time/history/trade/{norm_hk_code(raw_code)}/{level}'

第三步,日历与时间差异处理。港A股两市日历不同步,这是港股管道最深的一个坑:节假日各自独立(A股的国庆假期港股正常交易,港股的复活节A股正常交易),交易日对齐必须以两地日历的交集为基准。管道的实现方式是从K线文件的日期键自动推断港股交易日历------每只活跃港股的日期序列并集就是市场日历,与A股日历(同样方法从A股K线推断)求交集,供跨市场研究使用。两地时区一致,这一层反而无需处理。

python 复制代码
import pandas as pd

def trading_days_union(kline_dates: list) -> list:
    """从K线日期键推断交易日历"""
    return sorted(set(pd.to_datetime(kline_dates).strftime('%Y-%m-%d')))

def aligned_calendar(hk_days: list, a_days: list) -> dict:
    """两地交易日对齐:交集做共同研究基准"""
    hs, as_ = set(hk_days), set(a_days)
    return {'both': sorted(hs & as_),        # 两市同日开盘
            'hk_only': sorted(hs - as_),     # 港股独有交易日
            'a_only': sorted(as_ - hs)}

第四步,管线组装与日常运营。落地后的管线四个日常动作:每日刷新港股列表核对通名单变更(新增与调出标的各生成一条事件记录)、通标的行情增量同步(沿A股同步框架复用)、两地日历对齐表每日更新(跨市场研究直接取 both 集合)、通标的池与自选池的交集监控。三个实测提醒:其一,创业板港股即使入选通标的,成交额中位数也只有主板同行的零头,任何截面统计都要按板分层;其二,通名单调整事件本身值得入库------调入港股通意味着南向资金可以买入,历史上调入事件后的成交活跃度抬升是可统计的现象;其三,五位代码规范要在管道入口一次做足,中途混入未补零的代码是最常见的路径拼接事故。

这套管道建成后的直接收益,是把"港股通标的研究"从手工维护名单加手动查行情的流水账,变成了一套与A股同构的自动化数据体系。多市场扩展的第二站往往就是它------架构同构、成本减半,这就是先把A股管道做规范的红利。

本文用到的数据接口:港股股票列表 base/gphk(字段 dm、mc、isIndex、isZb、isCyb、isGgt);港股历史K线 time/history/trade/加五位代码/加分时级别。数据底座为本地 ig50。

资料参考:ig50

gitee开源地址

github开源地址

相关推荐
鶴哥只手遮天7 小时前
Angular 22 源码级深度解析-第 06 章 模板指令全解:`ɵɵelementStart`、`ɵɵproperty`、`ɵɵadvance` 与绑定指令
前端·开源·angular.js
AI日报派送佬8 小时前
2026年11月01日AI行业日报|可灵AI198亿融资落地、DeepSeek开源超级智能体、Anthropic取消Ultra时长限制
人工智能·开源·openai·deepseek·anthropic·ai日报
miofly8 小时前
Mistral Large 4发布,万亿参数模型的编码与安全实测数据
开源·github
SL_staff8 小时前
10人团队如何用轻量私有化文档平台实现知识复用提效?技术视角拆解B/S架构下的协作闭环
java·开源·全栈
阡陌数智9 小时前
StepFun Step 5 Preview:开源权重 600B MoE 模型拥有 27B 激活参数与 1M 上下文窗口
开源
wflynn11 小时前
GitHub 周榜趋势速报 | 2026-11-01
开源·github
ClouGence11 小时前
开源数据库管理工具 CloudDM 发布新版本,支持团队多级审批工单,无需依赖第三方系统
数据库·sql·开源
七牛云行业应用13 小时前
DeepSeek 开源 Super-agent 是什么:双层架构、主动找活的 Agent 原型怎么部署(2026 年 11 月)
架构·开源
一枕槐安48714 小时前
开源大模型 Llama3 本地部署全过程,Ollama 上手
开源·本地部署·大模型推理·ollama·llama3·modelfile
loulanyue_14 小时前
从沙箱隔离到统一运营:腾讯云Agent工程全景解密AgentHosting、AgentCFS与TeamAI开源——读2026全球数字生态大会实录
开源·云计算·腾讯云