Skip to content

数据 - akshare / tushare 兼容

jh_quant.data 提供了对 aksharetushare 风格的兼容层,使得原有使用这两个库的代码可以几乎零修改地迁移。

快速对比

特性jh_quant.data原生 akshare / tushare
数据源JiuHuang API东方财富 / 各券商
本地缓存内置 DuckDB
字段命名英文标准化中文(ak) / 英文(ts)
API Key需要akshare 不需要,tushare 需要

akshare 兼容接口

导入

from jh_quant.data.data_providers import akshare as ak

使用方式

调用方式与原生 akshare 完全相同:

# 获取 A 股日线(前复权)
df = ak.stock_zh_a_hist(
symbol="000001",
period="daily",
start_date="20240101",
end_date="20241231",
adjust="qfq",
)

参数映射

akshare 参数映射到 JHData 参数说明
start_datestart自动标准化日期格式
end_dateend自动标准化日期格式
symbolsymbol直接传递
adjust(转换到 DataType)"qfq"AK_STOCK_ZH_A_HIST_QFQ

示例

# 实时行情
df = ak.stock_zh_a_spot_em()
# ETF 历史
df = ak.fund_etf_hist_em(symbol="510050", start_date="20240101", end_date="20241231")
# 个股资金流向
df = ak.stock_individual_fund_flow(stock="000001")
# 利润表
df = ak.stock_lrb_em(symbol="000001", date="20241231")
# CPI
df = ak.macro_china_cpi()
# PMI
df = ak.macro_china_pmi()

tushare 兼容接口

导入

from jh_quant.data.data_providers import tushare as ts

两种调用方式

方式一:直接调用

df = ts.daily(
ts_code="000001.SZ",
start_date="20240101",
end_date="20241231",
)

方式二:pro 对象调用

df = ts.pro.daily(
ts_code="000001.SZ",
start_date="20240101",
end_date="20241231",
)

pro_bar 方法

df = ts.pro.pro_bar(
ts_code="000001.SZ",
start_date="20240101",
end_date="20241231",
asset="E", # E=股票
freq="D", # D=日线, W=周线, M=月线
)

示例

# 日线行情
df = ts.daily(ts_code="000001.SZ")
# 日线(前复权)
df = ts.daily_qfq(ts_code="000001.SZ")
# 周线 / 月线
df = ts.weekly(ts_code="000001.SZ")
df = ts.monthly(ts_code="000001.SZ")
# 财务指标
df = ts.fina_indicator(ts_code="000001.SZ")
# 分红送股
df = ts.dividend(ts_code="000001.SZ")

数据格式转换函数

from jh_quant.data import reverse_ak, process_ak, reverse_ts, process_ts
# JHData 返回的数据 → akshare 格式(中文字段名)
ak_format = reverse_ak(df)
# JHData 返回的数据 → tushare 格式(YYYYMMDD 日期)
ts_format = reverse_ts(df)

代码转换工具

from jh_quant.data.utils import ak_symbol_to_ts_code, ts_code_to_ak_symbol
# akshare symbol → tushare ts_code
print(ak_symbol_to_ts_code("000001")) # 000001.SZ
# tushare ts_code → akshare symbol
print(ts_code_to_ak_symbol("000001.SZ")) # 000001

从原生库迁移

从 akshare 迁移

# 只需修改 import
from jh_quant.data.data_providers import akshare as ak
df = ak.stock_zh_a_hist(symbol="000001", period="daily",
start_date="20240101", end_date="20241231", adjust="qfq")
# 其余代码无需修改!

从 tushare 迁移

# 迁移后
from jh_quant.data.data_providers import tushare as ts
df = ts.daily(ts_code="000001.SZ", start_date="20240101", end_date="20241231")
# 无需 token!数据通过 JiuHuang API Key 授权