Skip to content

数据 - DataTypes 介绍

DataTypesjh_quant.data 的数据类型枚举。每个成员代表一种可以通过 JHData.get_data() 获取的数据。

0.3.0 文档优先介绍 TuShare A 股相关数据类型。AkShare 数据类型仍然兼容,但在研究、回测、因子和交易示例中会优先使用 TuShare。

命名规则

from jh_quant.data import DataTypes
DataTypes.TS_DAILY_QFQ # 枚举名,Python 代码中使用
DataTypes.TS_DAILY_QFQ.value # "ts_daily_qfq",底层数据类型标识

常见前缀:

前缀含义
TS_TuShare 风格数据类型
AK_AkShare 风格兼容数据类型
JH_JiuHuang 自有数据类型

TuShare A 股行情

DataType说明常用参数
TS_DAILYA 股日线行情,未复权ts_code, start, end
TS_DAILY_QFQA 股日线行情,前复权ts_code, start, end
TS_DAILY_HFQA 股日线行情,后复权ts_code, start, end
TS_MONTHLYA 股月线行情,未复权ts_code, start, end
TS_MONTHLY_QFQA 股月线行情,前复权ts_code, start, end
TS_MONTHLY_HFQA 股月线行情,后复权ts_code, start, end
TS_DAILY_BASICA 股每日指标,含市值、换手率等ts_code, start, end
TS_ADJ_FACTOR复权因子ts_code, start, end

回测推荐使用:

df = jh.get_data(
DataTypes.TS_DAILY_QFQ,
ts_code="000001.SZ",
start="2025-01-01",
end="2025-12-10",
)

因子月频计算推荐使用:

df = jh.get_data(
DataTypes.TS_MONTHLY_QFQ,
ts_code="000001.SZ",
start="2020-01-01",
end="2025-12-31",
)

TuShare A 股基础资料

DataType说明常用参数
TS_STOCK_BASIC股票基础信息,含代码、名称、上市日期等ts_code 或空参数
TS_TRADE_CAL交易日历start, end, exchange
TS_DAILY_INFO交易所股票交易统计start, end

示例:

stock_basic = jh.get_data(DataTypes.TS_STOCK_BASIC)
trade_cal = jh.get_data(
DataTypes.TS_TRADE_CAL,
start="2025-01-01",
end="2025-12-31",
)

TuShare A 股财务数据

DataType说明常用参数
TS_INCOME利润表ts_code, start, end
TS_BALANCESHEET资产负债表ts_code, start, end
TS_CASHFLOW现金流量表ts_code, start, end
TS_FINA_INDICATOR财务指标ts_code, start, end

财务数据用于因子计算时,需要特别关注公告日:

ann_date

jh_quant.factors 会使用 ann_date <= return_date 做 as-of 匹配,避免 look-ahead bias。

示例:

income = jh.get_data(
DataTypes.TS_INCOME,
ts_code="000001.SZ",
start="2024-01-01",
end="2025-12-31",
)

AkShare 数据类型

AkShare 风格数据类型仍然可以使用,名称通常以 AK_ 开头。例如:

df = jh.get_data(
DataTypes.AK_STOCK_ZH_A_HIST_QFQ,
symbol="000001",
start="2025-01-01",
end="2025-12-10",
)

但在 0.3.0 文档中,回测、因子和交易示例会优先使用 TuShare 数据类型。AkShare 更适合作为兼容迁移或实时行情补充。

查看完整支持的数据类型

由于 DataTypes 支持的数据很多,文档不再逐项罗列全部类型。你可以用下面代码查看完整列表:

from jh_quant.data import DataTypes
for dt in DataTypes:
print(f"{dt.name} = {dt.value}")

只查看 TuShare 类型:

for dt in DataTypes:
if dt.name.startswith("TS_"):
print(f"{dt.name} = {dt.value}")

按关键词过滤:

keyword = "DAILY"
for dt in DataTypes:
if keyword in dt.name:
print(f"{dt.name} = {dt.value}")

如果你不确定某个数据类型的入参和返回字段,可以结合 JHData.get_data() 的返回结果查看:

df = jh.get_data(DataTypes.TS_DAILY_QFQ, ts_code="000001.SZ")
print(df.code_col)
print(df.date_col)
print(df.code_date_col)
print(df.columns)