数据 - akshare / tushare 兼容
jh_quant.data 提供了对 akshare 和 tushare 风格的兼容层,使得原有使用这两个库的代码可以几乎零修改地迁移。
快速对比
| 特性 | 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_date | start | 自动标准化日期格式 |
end_date | end | 自动标准化日期格式 |
symbol | symbol | 直接传递 |
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")
# CPIdf = ak.macro_china_cpi()
# PMIdf = 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_codeprint(ak_symbol_to_ts_code("000001")) # 000001.SZ
# tushare ts_code → akshare symbolprint(ts_code_to_ak_symbol("000001.SZ")) # 000001从原生库迁移
从 akshare 迁移
# 只需修改 importfrom jh_quant.data.data_providers import akshare as akdf = 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 tsdf = ts.daily(ts_code="000001.SZ", start_date="20240101", end_date="20241231")# 无需 token!数据通过 JiuHuang API Key 授权