问题描述
看了一下聚宽的AH股比价信息,发现在AH除权日期差之间的数据有错,想获取AH股的除权信息纠正一下。
请问有这个查询功能吗?
解决方案
根据 JoinQuant API 文档,您可以通过 finance.run_query 查询深沪港通的相关数据,包括 AH 股比价信息。但关于 H股的除权信息,目前基础 API 文档中并未直接列出专门针对 H 股(港股)的除权除息明细数据表。
聚宽主要提供 A 股的除权除息数据。如果您发现 finance.STK_AH_PRICE_COMP(AH股价格对比表)在除权日期附近存在偏差,这通常是由于两地市场除权除息日不同步、分红派息规则差异或汇率换算导致的。
1. 获取 AH 股比价信息的示例代码
您可以使用以下代码获取 AH 股的比价信息,以万科(000002.XSHE)为例:
from jqdata import *
# 查询万科 AH 股价格的前10条数据
q = query(finance.STK_AH_PRICE_COMP).filter(
finance.STK_AH_PRICE_COMP.a_code == '000002.XSHE'
).order_by(
finance.STK_AH_PRICE_COMP.day
).limit(10)
df = finance.run_query(q)
print(df)
2. 纠正 H 股除权数据的替代解决方案
既然直接查询 H 股除权表的 API 可能缺失,您可以尝试以下几种方法来获取或推算 H 股的除权信息,从而纠正您的数据:
方法一:通过复权因子反推除权日
如果聚宽支持您所需 H 股标的的行情查询,您可以通过 get_price 或 get_bars 获取该 H 股的 factor(复权因子)字段。当复权因子在相邻两个交易日发生变化时,即可判定发生了除权除息,并可通过因子的比值计算出除权比例。
# 假设支持该港股代码,获取复权因子
df = get_price('港股代码', start_date='2022-01-01', end_date='2022-12-31', fields=['close', 'factor'])
# 筛选出 factor 发生变化的日期
df['factor_change'] = df['factor'].pct_change()
dividend_days = df[df['factor_change'] != 0]
方法二:查阅最新数据字典
建议登录聚宽官网,进入“数据” -> “数据字典” -> “市场通(沪港通深港通和港股通)”板块,确认近期是否新增了港股的除权除息表(如类似 A 股的 finance.STK_XR_XD 表)。
方法三:引入外部数据源
如果平台内确实缺失精确的 H 股除权明细,您可以借助外部免费或开源的金融数据接口(如 AkShare、Tushare 等)获取 H 股的除权除息日历。将其保存为 CSV 或 JSON 文件后,上传至聚宽的“投资研究”目录,再通过 read_file 或 pandas.read_csv 读取并在策略中进行数据清洗和纠正。
import pandas as pd
from six import BytesIO
# 读取您上传的 H股除权信息文件
body = read_file("h_share_dividends.csv")
dividend_data = pd.read_csv(BytesIO(body))