- 功能描述:获取股票的复权因子
- 返回限量:单次请求最大返回6000行
- 接口权限:2000积分起,5000以上可高频调取
- 说明:
1. 每日8:30-9:30更新;
2. 复权因子一般不会单独使用而是配合行情数据计算复权数据。与历史日线(
daily)不同的是,复权因子在股票停牌的交易日也会进行补齐,而停牌期间日行情是没有数据的。因而相同数量的复权因子和日行情数据在日期上会有不对齐的情况,这一点在使用时请注意;3. 本接口的复权因子是“累计后复权因子”;
4. 本接口数据是每日快照数据;
5. 和股票日行情一样,复权因子也是会使用多个股票多个交易日的数据。本文作者同样推荐依据
trade_date进行循环遍历请求历史数据到本地,然后每日更新一次,使用时直接在本地加载;6. 由于复权因子在计算的过程中各个数据源对现金分红、送股、配股、税务等不同事件采用了不同的处理逻辑,故而不同数据源的复权因子也会有差异;
7. 本接口数据由Tushare团队自主计算;
输入参数:
名称 |
类型 |
必选 |
描述 |
ts_code |
str |
N |
股票代码 |
trade_date |
str |
N |
交易日期(YYYYMMDD,下同) |
start_date |
str |
N |
开始日期 |
end_date |
str |
N |
结束日期 |
输出参数:
名称 |
类型 |
默认显示 |
描述 |
ts_code |
str |
Y |
股票代码 |
trade_date |
str |
Y |
交易日期 |
adj_factor |
float |
Y |
复权因子 |
示例:
示例1:获取某日全市场股票的复权因子
通过仅传递trade_date可获取某个交易日全市场股票的复权因子。
import tushare as ts pro = ts.pro_api() df = pro.adj_factor(trade_date='20260713') df
输出结果:
ts_code trade_date adj_factor 0 000001.SZ 20260713 139.0080 1 000002.SZ 20260713 181.7040 2 000004.SZ 20260713 4.0640 3 000006.SZ 20260713 39.7400 4 000007.SZ 20260713 8.2840 ... ... ... ... 5535 603580.SH 20260713 2.0581 5536 600193.SH 20260713 6.6990 5537 600696.SH 20260713 3.3040 5538 688287.SH 20260713 1.5915 5539 601369.SH 20260713 2.5948 5540 rows × 3 columns
示例2:获取某支股票所有的复权因子
通过仅传递ts_code可获取该股票最近6000条复权因子数据。如需使用更为久远的复权因子数据,则可以通过推荐的方案,依据trade_date进行循环遍历请求历史数据到本地,然后每日更新一次,使用时直接在本地加载。本示例演示如何获取平安银行(000001.SZ)最近6000条复权因子。
df = pro.adj_factor(ts_code='000001.SZ') df
输出结果:
ts_code trade_date adj_factor 0 000001.SZ 20260713 139.008 1 000001.SZ 20260710 139.008 2 000001.SZ 20260709 139.008 3 000001.SZ 20260708 139.008 4 000001.SZ 20260707 139.008 ... ... ... ... 5995 000001.SZ 20011024 24.359 5996 000001.SZ 20011023 24.359 5997 000001.SZ 20011022 24.359 5998 000001.SZ 20011019 24.359 5999 000001.SZ 20011018 24.359 6000 rows × 3 columns
示例3:获取某支股票历史上某段时间的复权因子
通过传递start_date和end_date可以限定获取复权因子的时间段(左右两端时间点均包含)。本示例演示如何获取平安银行1996年的复权因子。
df = pro.adj_factor(ts_code='000001.SZ', start_date='19960101', end_date='19961231') df
输出结果:
ts_code trade_date adj_factor 0 000001.SZ 19961231 13.968 1 000001.SZ 19961230 13.968 2 000001.SZ 19961227 13.968 3 000001.SZ 19961226 13.968 4 000001.SZ 19961225 13.968 ... ... ... ... 242 000001.SZ 19960108 6.984 243 000001.SZ 19960105 6.984 244 000001.SZ 19960104 6.984 245 000001.SZ 19960103 6.984 246 000001.SZ 19960102 6.984 247 rows × 3 columns
示例4:利用复权因子计算前复权和后复权价格
使用Tushare的daily接口获取到的股票日行情价格数据是没有进行复权的,在发生分红、配股等除权除息事件时未复权价格往往会发生剧烈地跳动。为了消除这种干扰,需要对未复权的价格进行复权处理。这就是复权因子发挥作用的场合。复权分为前复权和后复权。本示例演示如何对贵州茅台(600519.SH)的日行情价格进行前复权和后复权。下面是前复权和后复权使用到的公式:
类型 |
算法 |
标识 |
前复权 |
当日价格 × 当日复权因子 / 最新复权因子 |
qfq |
后复权 |
当日价格 × 当日复权因子 |
hfq |
import pandas as pd # 获取日行情 df_daily = pro.daily(ts_code='600519.SH', start_date='20200101', fields='trade_date,open,high,low,close') # 获取复权因子 df_adj = pro.adj_factor(ts_code='600519.SH', start_date='20200101', fields='trade_date,adj_factor') # 将日行情和复权因子合并在一起,便于计算 df_adj_prices = pd.merge(df_daily, df_adj, on=['trade_date'], how='left').sort_values(by='trade_date', ignore_index=True) # 使用最新日期作为前复权的基准日期 qfq_base_factor = df_adj_prices['adj_factor'].iloc[-1] for f in ['open', 'high', 'low', 'close']: # 这里后复权价格的基准因子使用1表明是以股票上市日作为基准日期 # 如果使用后面某一天作为基准日期,则基准因子使用当日复权因子 df_adj_prices[f+'_hfq'] = (df_adj_prices[f] * df_adj_prices['adj_factor']).round(2) df_adj_prices[f+'_qfq'] = (df_adj_prices[f] * df_adj_prices['adj_factor'] / qfq_base_factor).round(2) df_adj_prices
输出结果:
trade_date open high low close adj_factor open_hfq open_qfq high_hfq high_qfq low_hfq low_qfq close_hfq close_qfq 0 20200102 1128.00 1145.06 1116.00 1130.00 7.3186 8255.38 954.79 8380.24 969.23 8167.56 944.63 8270.02 956.48 1 20200103 1117.00 1117.00 1076.90 1078.56 7.3186 8174.88 945.48 8174.88 945.48 7881.40 911.53 7893.55 912.94 2 20200106 1070.86 1092.90 1067.30 1077.99 7.3186 7837.20 906.42 7998.50 925.08 7811.14 903.41 7889.38 912.46 3 20200107 1077.50 1099.00 1076.40 1094.53 7.3186 7885.79 912.04 8043.14 930.24 7877.74 911.11 8010.43 926.46 4 20200108 1085.05 1095.50 1082.58 1088.14 7.3186 7941.05 918.43 8017.53 927.28 7922.97 916.34 7963.66 921.05 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 1575 20260707 1200.00 1202.00 1188.11 1188.80 8.6463 10375.56 1200.00 10392.85 1202.00 10272.76 1188.11 10278.72 1188.80 1576 20260708 1188.77 1200.98 1177.00 1199.30 8.6463 10278.46 1188.77 10384.03 1200.98 10176.70 1177.00 10369.51 1199.30 1577 20260709 1191.00 1191.99 1178.00 1182.19 8.6463 10297.74 1191.00 10306.30 1191.99 10185.34 1178.00 10221.57 1182.19 1578 20260710 1182.20 1204.98 1170.28 1204.98 8.6463 10221.66 1182.20 10418.62 1204.98 10118.59 1170.28 10418.62 1204.98 1579 20260713 1197.12 1215.00 1190.19 1210.99 8.6463 10350.66 1197.12 10505.25 1215.00 10290.74 1190.19 10470.58 1210.99 1580 rows × 14 columns
说明:
本文说明
本文旨在对Tushare的复权因子adj_factor数据接口进行介绍,提供更多参考示例和使用说明。
本文介绍的复权因子是“累计后复权因子”,存储的是每个交易日的快照。本文介绍了如何获取某个交易日全市场股票的复权因子、如何获取单只股票最近6000条复权因子、如何获取某段时间区间里的复权因子以及如何计算前复权和后复权价格。
本文目的是为了让用户和AIGC工具能够更便捷、准确地使用该接口。大家在使用过程中遇到什么问题和建议可在线留言,作者会进行数据探索将结果更新到文章中,并将建议反馈给Tushare团队。本文另一个目的也是为了聚集大家的智慧以创建“我为人人,人人为我”的共创氛围。