Tushare 港股复权因子接口 hk_adjfactor 实战指南:获取港股每日复权因子并构建复权行情
金融科技示例工程【免费下载链接】ai_quant_tradeStock AI Trader: 1-stop platform for learning, sim live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C deploy JoinQuant code. 股票AI操盘手一站式学习、模拟、实盘平台。涵盖股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C部署及聚宽代码。项目地址https://gitcode.com/gh_mirrors/ai/ai_quant_trade点击查看免费下载港股研究绕不开除权除息当上市公司派息、送股、拆股或合股时股价会瞬间跳空直接拿原始价格做收益率计算、因子回测都会失真。本文以当前仓库 Tushare Skill 包中登记的港股复权因子接口hk_adjfactor接口 ID 401为绝对主线完整讲解其权限、输入/输出参数、调用方式与 6000 行限量下的循环抓取策略并结合同目录下的港股复权行情、港股日线行情等配套文档说明如何用复权因子把港股原始行情换算成可用于量化回测的复权价格。读者读完可掌握单只港股与单日全市场的复权因子获取方法、按日期循环拉取全量数据的工程写法以及复权因子在构建前复权/后复权行情管线中的实际应用。一、复权因子是什么港股数据研究的基石字段港股上市公司每年都会进行分红送配除权除息日当天股价按除权比例向下调整若直接使用未复权价格序列计算收益率会在除权日出现假跌导致回测、因子分析全部失真。复权因子正是用来消除这种价格跳空的校正系数。仓库内 港股复权行情接口文档hk_daily_adj给出了港股复权口径最核心的一条换算公式港股复权逻辑是价格 × 复权因子 复权价格比如close × adj_factor 前复权收盘价。而 A 股侧的 复权行情文档pro_bar则进一步把复权算法总结成一张对照表复权类型算法参数标识不复权无空或None前复权当日收盘价 × 当日复权因子 / 最新复权因子qfq后复权当日收盘价 × 当日复权因子hfq理解这个背景后再来看hk_adjfactor它输出的正是这个复权计算链路中最底层的原料——每日复权因子本身。二、接口概览hk_adjfactor 的核心特性在 Tushare Skill 包的数据接口列表中hk_adjfactor登记于港股数据分类接口 ID 401其核心属性如下项目说明接口名hk_adjfactor描述获取港股每日复权因子数据每天滚动刷新限量单次最大 6000 行数据可以根据日期循环权限开通港股日线权限后自动获得该接口权限具体以 Tushare 官方权限说明文档为准两个关键信息值得展开每天滚动刷新与 A 股 复权因子接口adj_factor盘前 9 点 15~20 分完成当日入库类似港股复权因子也是逐日更新的滚动数据而不是一次性静态快照。随港股日线权限自动开通这意味着只要你的账号开通了港股日线行情hk_daily权限即可直接调用hk_adjfactor无需单独申请该接口权限。三、输入参数详解hk_adjfactor的全部输入参数如下表与原接口文档一致日期统一使用YYYYMMDD格式名称类型必选描述ts_codestrN股票代码港股格式如00001.HKtrade_datestrN交易日期格式YYYYMMDD下同start_datestrN开始日期end_datestrN结束日期四个参数均为可选实际使用遵循以下组合逻辑按单只股票 时间区间同时传ts_code、start_date、end_date拉取该股票一段时间内的每日复权因子按单日 全市场截面只传trade_date拉取该交易日全部港股的复权因子一次最多 6000 行港股全市场约 4000 只股票通常单日一次即可取完两者都不传或组合传参Tushare 会按接口默认规则返回建议实际开发中始终明确至少一种筛选维度避免误取超大结果集。四、输出参数详解接口返回pandas DataFrame字段定义如下名称类型默认显示描述ts_codestrY股票代码trade_datestrY交易日期cum_adjfactorfloatY累计复权因子close_pricefloatY收盘价与原接口文档完全一致。需要特别留意两个字段的语义cum_adjfactor累计复权因子这是本接口的核心产出表示从上市以来累计的复权调整系数。它与原始收盘价相乘即可得到复权价格结合第一节的公式是后续任何复权计算的基准。close_price收盘价该字段为未复权的原始收盘价。hk_adjfactor将复权因子与原始收盘价放在同一行返回好处是拿到数据即可直接做close_price × cum_adjfactor的换算无需再二次 join 行情表缺点是原始收盘价在除权日当天会产生跳空做收益率计算时必须使用换算后的复权价格而非直接使用该字段。五、环境准备与接口初始化调用hk_adjfactor之前先按仓库 Tushare SKILL.md 中的快速上手流程完成环境配置1. 安装 tushare推荐清华 PyPI 镜像pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple2. 注册获取 token 并配置环境变量export TUSHARE_TOKENyour_token3. 初始化 Pro 接口仓库 股票数据获取示例脚本 给出了规范的初始化写法——优先读取环境变量其次回退到本地记录的 tokenimport os import tushare as ts # 读取环境变量中的 token, 或者读取本地记录的 token token os.getenv(TUSHARE_TOKEN) or ts.get_token() # 初始化 pro 接口实例 pro ts.pro_api(token)注意ts.pro_api()不带参数时tushare 会自动从本地配置读取已保存的 token显式传入 token 则更可控适合在 CI 或定时任务中通过环境变量注入。六、接口调用示例原接口文档给出两种最典型的调用方式均基于pro.hk_adjfactor(...)方式一获取港股单只股票的复权因子pro ts.pro_api() # 获取港股单一股票复权因子 df pro.hk_adjfactor(ts_code00001.HK, start_date20240101, end_date20251022)方式二获取港股某一日全部股票的复权因子pro ts.pro_api() # 获取港股某一日全部股票的复权因子 df pro.hk_adjfactor(trade_date20251031)方式二返回的是全市场截面数据一次最多 6000 行。原文档展示的trade_date20251031实例如下ts_code trade_date cum_adjfactor close_price 0 00380.HK 20251031 1.000000 0.150000 1 00698.HK 20251031 1.000000 4.610000 2 00865.HK 20251031 1.000000 0.038000 3 08111.HK 20251031 1.000000 0.068000 4 00039.HK 20251031 1.000000 0.088000 ... ... ... ... ... 4086 01384.HK 20251031 1.000000 113.700000 4087 02954.HK 20251031 1.000000 0.265000 4088 03460.HK 20251031 1.000000 7.440000 4089 83460.HK 20251031 1.000000 6.840000 4090 09460.HK 20251031 1.000000 0.960000从数据样例可以看到当前时间点2025-10-31这些股票尚未发生新的除权除息因此cum_adjfactor为1.000000即未复权口径原始价等于复权价一旦后续发生派息送股同一股票历史各交易日的累计复权因子会整体被刷新为新的比例——这正是每天滚动刷新的含义也是做增量数据更新时必须警惕的地方。七、6000 行限量下的批量抓取策略原文档明确标注单次最大 6000 行数据可以根据日期循环。港股全市场股票数量在数千只的量级单只股票的日频复权因子动辄上万行2019 年至今约 1500 个交易日示例中hk_daily_adj仅 2024 年前 7 个月就有 136 行因此拉取全量历史必须按日期切片循环。下面给出一个可直接复用的分批抓取写法import tushare as ts pro ts.pro_api() def fetch_hk_adjfactor_by_date(ts_code, start_date, end_date, batch_days60): 按日期窗口分批获取港股复权因子规避单次 6000 行限量。 batch_days: 每个窗口的天数可结合每日行数按需调整 from datetime import datetime, timedelta start datetime.strptime(start_date, %Y%m%d) end datetime.strptime(end_date, %Y%m%d) frames [] cursor start while cursor end: window_end min(cursor timedelta(daysbatch_days - 1), end) df pro.hk_adjfactor( ts_codets_code, start_datecursor.strftime(%Y%m%d), end_datewindow_end.strftime(%Y%m%d), ) if df is not None and not df.empty: frames.append(df) cursor window_end timedelta(days1) import pandas as pd return pd.concat(frames, ignore_indexTrue).drop_duplicates( subset[ts_code, trade_date] ).sort_values(trade_date) # 示例拉取 00001.HK 近一年复权因子 adj fetch_hk_adjfactor_by_date(00001.HK, 20251001, 20261008, batch_days90) print(adj.head())要点说明窗口大小的选择取决于该股票的日均数据量港股每年约 240 个交易日单股票日频数据行数 区间交易日数6000 行的额度意味着单个窗口理论上可覆盖约 20 年单股票数据但对全市场单日截面约 4000 行6000 行额度同样够用若市场扩容需按trade_date分段drop_duplicates用于去重窗口边界可能产生的重复行建议用start_date/end_date日期窗口而非trade_date单日逐日轮询可显著减少请求次数避免触发接口限流。八、复权因子的实战应用构建港股复权行情管线拿到复权因子后最常见的落地场景是把它与港股行情数据组合构建可用于回测的复权行情。仓库内的配套文档提供了完整的数据拼图数据需求接口说明仓库文档未复权原始日线hk_daily港股每日增量和历史行情含开高低收、成交量额、涨跌幅港股日线行情复权因子hk_adjfactor本文主角每日滚动刷新港股复权因子复权行情已含因子hk_daily_adj直接返回 close/open/high/low 及adj_factor、换手率、市值等指标港股复权行情交易日历hk_tradecal港股交易日历用于生成完整日期索引港股交易日历管线一因子 原始行情手动复权。对研究场景推荐用hk_adjfactor拿到cum_adjfactor后自行乘算import pandas as pd # adj: hk_adjfactor 返回的 DataFrame # raw: hk_daily 返回的未复权行情 DataFrame需包含 ts_code/trade_date/close 等列 merged raw.merge(adj, on[ts_code, trade_date], howleft) # 前复权收盘价按港股口径价格 × 复权因子 merged[close_adj] merged[close] * merged[cum_adjfactor] # 收益率基于复权价格计算 merged[ret] merged.groupby(ts_code)[close_adj].pct_change()管线二直接使用复权行情接口。若只想要拿来即用的复权行情可直接调用hk_daily_adj其输出中已包含adj_factor字段省去手动合并见港股复权行情文档的接口示例pro ts.pro_api() # 获取单一股票复权行情 df pro.hk_daily_adj(ts_code00001.HK, start_date20240101, end_date20240722) # 获取某一日某个交易所的全部股票 df pro.hk_daily_adj(trade_date20240722)从该文档的数据示例可以看到复权因子的实际数值形态00001.HK2024 年 1 月数据中adj_factor0.9572而 7 月为1.0000这直观印证了复权因子会因除权而被整体刷新的动态特性。九、使用注意事项与权限说明结合原接口文档与仓库内 A 股、港股行情文档的说明实战中还需注意以下几点复权因子会动态刷新港股复权行情文档明确提示复权因子历史数据可能因除权等被刷新请注意动态更新。历史某日的cum_adjfactor在新一次除权后会被重新计算因此做增量更新时要整段重拉受影响区间而不是只补最新一天。6000 行限量单次请求最多 6000 行全量历史数据必须按日期循环或按股票分批见第七节。权限依赖hk_adjfactor在开通港股日线权限后自动获得未开通hk_daily权限前调用会返回权限错误A 股复权因子接口adj_factor则有独立的积分要求仓库 A 股复权因子文档 注明 2000 积分起、5000 以上可高频调取两者权限口径不同需分别确认。日期格式统一所有日期参数一律使用YYYYMMDD如20251031港股股票代码统一为XXXXXX.HK后缀格式如00001.HK。复权口径差异Tushare 的 A 股复权以用户设定的end_date为基准开始往前复权分红再投模式与行情软件以最近交易日为基准的口径存在差异见 A 股复权行情文档 的复权说明。港股侧的换算公式为价格 × 复权因子 复权价格在跨市场研究时不要混用两套口径。十、小结hk_adjfactor是 Tushare 港股数据家族中小而关键的底层接口它只输出ts_code、trade_date、cum_adjfactor、close_price四个字段却决定了港股行情复权计算的准确性。通过本文可以完整掌握接口的权限与限量约束、四类输入参数的组合用法、两个官方示例的正确姿势、6000 行限量下的日期循环抓取方案以及如何与hk_daily、hk_daily_adj、hk_tradecal配合构建一条端到端的港股复权数据管线。无论你是做多因子回测、事件研究还是跨市场A/H比价分析先把复权因子这一层数据地基打牢后续一切量化分析才有可信的前提。赞分享金融科技示例工程【免费下载链接】ai_quant_tradeStock AI Trader: 1-stop platform for learning, sim live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C deploy JoinQuant code. 股票AI操盘手一站式学习、模拟、实盘平台。涵盖股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C部署及聚宽代码。项目地址https://gitcode.com/gh_mirrors/ai/ai_quant_trade点击查看免费下载相关推荐港股复权因子hk_adjfactor深度指南Vibe-Trading 中 Tushare 港股复权数据的原理、获取与实战应用港股复权因子hk_adjfactor深度指南Vibe Trading 中 Tushare 港股复权数据的原理、获取与实战应用 港股上市公司在派息、送股、拆人工智能AI Agent金融科技MCP 服务Tushare 港股利润表 hk_income 接口实战指南从腾讯控股年报数据到港股基本面因子构建Tushare 港股利润表 hk_income 接口实战指南从腾讯控股年报数据到港股基本面因子构建 本文以 ai_quant_trade 仓库中 Tushar金融科技示例工程AI量化交易实战Tushare ETF 复权因子fund_adj接口详解与基金复权行情计算指南AI量化交易实战Tushare ETF 复权因子fund_adj接口详解与基金复权行情计算指南 在 ETF 量化研究与回测中除息、分红等权益事件会让 E金融科技示例工程上一篇gpt2-finetuned-greek-small API开发指南构建RESTful服务的完整教程下一篇探索智能迷宫DQN算法实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

三菱PLC与组态王锅炉自动控制系统设计与调试实践

三菱PLC与组态王锅炉自动控制系统设计与调试实践

1. 项目背景与系统整体架构1.1 锅炉控制的核心工艺需求这次要做的是一台6t/h蒸汽锅炉的自动化改造项目,现场原来靠人工看水位、手动给煤,锅炉效率和安全性都比较差。改造目标很直接:汽包水位、蒸汽压力、炉膛负压三个主要参数能自动调节&…

2026/10/9 7:18:01 阅读更多 →
微电网事件触发二次控制Simulink仿真实现与调参

微电网事件触发二次控制Simulink仿真实现与调参

孤岛微电网的二次控制,在仿真里做过的人都有感受:下垂控制一投进去,负荷波动后频率和电压必然偏离额定值,波形是稳了,但50Hz和380V就是回不去。这时候就需要二次控制出手。但这几年大家做的二次控制大多是周期采样、周…

2026/10/9 7:18:01 阅读更多 →
Arm服务器与嵌入式开发必修课:ID寄存器与PMU深度解析

Arm服务器与嵌入式开发必修课:ID寄存器与PMU深度解析

1. 为什么搞懂ID寄存器和PMU是Arm服务器与嵌入式开发绕不开的硬功夫你手头正调试一块基于Cortex-A72的工业网关板,系统在高负载下偶发卡顿,perf top显示大量时间花在__softirqentry_text_start,但top里CPU使用率却只有40%——这种“看不见的开…

2026/10/9 7:18:01 阅读更多 →

最新新闻

深入剖析ReentrantLock与AQS:从源码看Java并发锁的排队与唤醒机制

深入剖析ReentrantLock与AQS:从源码看Java并发锁的排队与唤醒机制

你可能见过这样的场景:一群人冲进教室,座位只有几个,谁抢到谁坐,抢不到的只能排队等着。Java并发里的ReentrantLock,本质上就是在干这件事。不过它的“排队”不是简单的先来后到,而是一套基于AQS&#xff0…

2026/10/9 8:51:14 阅读更多 →
Windows 10下MySQL 5.5升级5.7:备份迁移避坑指南

Windows 10下MySQL 5.5升级5.7:备份迁移避坑指南

给 Windows 10 上跑了好几年的 MySQL 5.5 做升级,说难不难,说简单也真不简单。我刚帮一台老机器把 MySQL 5.5 完整升级到 5.7,整个过程踩了字符集、SQL 模式、用户权限迁移、服务安装好几个坑,最后整理出了一套可以直接照着做的流…

2026/10/9 8:51:14 阅读更多 →
MySQL怎么查看?详解库表数据与运行状态查看命令

MySQL怎么查看?详解库表数据与运行状态查看命令

前阵子一个刚转行做开发的朋友问我:“MySQL我装上了,也能连上了,可我怎么知道它到底跑没跑?怎么看数据库里有什么表?怎么看某张表有没有数据?”我把这几个问题拆开一聊,发现其实很多人卡住的不是…

2026/10/9 8:51:14 阅读更多 →
Python实战:用CNN卷积神经网络实现图像识别完整流程

Python实战:用CNN卷积神经网络实现图像识别完整流程

图像识别,说白了就是让计算机对着一张图片回答“这是什么”。我最近用Python完整跑了一个CNN卷积神经网络的图像识别项目,从环境安装、数据准备到模型训练、效果调优都捋了一遍,踩的坑不算少。写这篇就是想把整个实战过程拆开讲清楚&#xff…

2026/10/9 8:51:14 阅读更多 →
Servlet+JSP+Bootstrap+MySQL学生信息管理系统实战全解析

Servlet+JSP+Bootstrap+MySQL学生信息管理系统实战全解析

简介:这是一份基于 JavaServletJSPBootstrapMySQL 的学生信息管理系统项目源码,面向正在进行 Java Web 期末大作业、课程设计或毕业设计的本专科学生,也适合初学 Servlet/JSP 分层开发的读者。项目采用 ServletDAOVO 分层结构,涵盖…

2026/10/9 8:51:14 阅读更多 →
空气悬架建模实战:从变刚度原理到控制标定全流程解析

空气悬架建模实战:从变刚度原理到控制标定全流程解析

坐进一台配了空气悬架的车,从一段满是补丁的国道上下来,你大概率会忍不住感叹一句“这底盘是真的舒服”。但这份体感背后并不是玄学,真正让它和普通螺旋弹簧拉开差距的,是空气弹簧本身的变刚度特性。要把这种特性吃透、真正用于产…

2026/10/9 8:50:13 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →