连享会:2026五一论文班 · 线上
时间:5月2-4日
嘉宾:郭士祺 (上海交通大学)、戚树森 (厦门大学)、李学恒 (中山大学)
咨询:王老师 18903405450(微信)

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:

作者:张祖冲 (江苏大学)邮箱:zzchong1228@163.com
akshare 是专为金融数据分析打造的开源 Python 库,其核心设计理念可用一句话概括:“为人类设计的优雅简洁的 Python 金融数据接口库”。这一定位鲜明地体现了以用户为中心、追求极致易用性的目标。
深入了解 akshare,会发现它本质上并不是原始数据的生产者,而是一个高效的数据聚合与抽象平台。这一点从其接口函数的命名规范即可看出,例如 stock_zh_a_spot_em 和 futures_zh_daily_sina,其中的 _em 和 _sina 后缀分别指明了底层数据源——东方财富网和新浪财经。
akshare 的最大价值在于,它帮助用户摆脱了繁琐的网页数据抓取和各类网站 API 解析的工作,通过统一、稳定的 API,将来自不同来源、结构各异的数据标准化为 pandas DataFrame 格式,大大简化了数据获取流程。这样的设计不仅让用户能够免费获取海量公开金融数据,还无需关心底层数据源的变化与实现细节,极大提升了数据分析的效率和体验。
akshare 的安装、使用方法、涵盖的主要数据库、指标定义,以及各类数据接口的详细说明。一个开源项目的可靠性与生命力,很大程度上取决于其社区的活跃度与认可度。在这方面,akshare 表现尤为突出,其 GitHub 仓库的相关数据充分印证了这一点:
rate_interbank 等接口的修复,显示出维护团队对社区反馈和 bug 修复的高度响应。这些数据不仅反映了 akshare 的技术实力,也展现了其背后强大的社区支持和持续发展的潜力。
akshare 的安装过程非常简便,只需在命令行中通过 pip 执行如下指令即可:
pip install akshare但在正式使用前,用户需特别注意其数据使用声明。akshare 明确强调,所提供的数据“仅限于学术研究用途”,不构成任何投资建议。同时,由于底层数据源等“不可控因素”,部分接口未来可能会发生变动或下线。理解这一定位,有助于用户合理预期和规范使用行为。
此外,部分用户可能会发现,虽然项目的 GitHub 仓库维护活跃、响应及时,但官方文档网站(akshare.akfamily.xyz)偶尔会出现访问不稳定的情况。这在开源项目中较为常见,通常意味着开发团队将主要精力投入在代码和社区维护上。因此,建议大家优先通过 GitHub 仓库 获取最新动态、反馈问题和寻求帮助,这样不仅能规避文档站点偶发的访问障碍,还能直接融入最活跃的用户与开发者社区。
akshare 提供了丰富的金融数据接口,涵盖了股票、期货、外汇、宏观经济等多个领域。以下是一些主要的接口分类:
详情参见 asshare 数据字典。下面,我们将重点介绍如何使用 akshare 获取中国 A 股市场的核心数据。
akshare 在中国 A 股市场的数据获取方面表现尤为出色,能够满足从实时行情到深度历史数据的多层次需求,并内置了量化分析所需的核心功能。
对于希望全面掌握市场最新动态的分析师来说,akshare 提供了极为便捷的接口。只需调用 ak.stock_zh_a_spot_em() 函数,即可一键获取沪深京 A 股所有上市公司的实时行情数据。
代码示例:获取 A 股实时行情
import akshare as ak# 获取沪深京 A 股实时行情数据stock_zh_a_spot_em_df = ak.stock_zh_a_spot_em()# 显示数据框的前几行print(stock_zh_a_spot_em_df.head()) 序号 代码 名称 最新价 涨跌幅 涨跌额 成交量 成交额 振幅 最高 最低 今开 昨收 量比 换手率 市盈率-动态 市净率 总市值 流通 市值 涨速 5分钟涨跌 60日涨跌幅 年初至今涨跌幅01300993 玉马科技 14.6820.032.45327918.04.336300e+0821.1014.6812.1012.2012.232.8713.5937.463.134.523366e+093.541780e+090.00.036.0531.1912300650 太龙股份 17.0320.012.84385574.06.193797e+0819.2417.0314.3014.4914.194.9425.24144.602.983.717583e+092.601650e+090.00.025.8748.4723300991 创益通 28.9720.014.83175393.04.763418e+0821.5828.9723.7624.2624.144.7819.51166.356.494.171680e+092.604171e+090.00.053.2840.2234301024 霍普股份 47.8820.007.9854306.02.491418e+0822.5147.8838.9039.0039.900.949.02-86.247.213.044450e+092.882855e+090.00.086.30101.1845688062 迈威生物-U 28.6220.004.77296333.08.274653e+089.7328.6226.3026.5023.852.3014.51-9.808.951.143655e+105.843345e+090.00.040.2341.68该函数返回的 DataFrame 不仅包含基础的价格信息,还集成了诸如动态市盈率、市净率、总市值、流通市值、换手率等多项经过计算的高价值指标。分析师仅需一次 API 调用,即可获取构建复杂筛选策略所需的绝大部分核心数据,大幅提升了研究与分析的效率。
表 2.1: stock_zh_a_spot_em() 关键输出字段
代码 | ||
名称 | ||
最新价 | ||
涨跌幅 | ||
成交量 | ||
成交额 | ||
换手率 | ||
市盈率-动态 | ||
市净率 | ||
总市值 | ||
流通市值 |
历史 K 线数据是所有回测和时间序列分析的基础。akshare 通过 stock_zh_a_hist() 接口为用户提供了强大的历史数据获取能力,而其对数据复权(Adjustment)的深度支持,正是体现其专业水准的关键所在。
在金融市场中,股票由于分红、送股、配股等行为,股价会出现“断层”。如果直接使用未复权的价格序列进行分析,容易导致收益率计算和技术指标出现严重偏差。akshare 的设计者深刻理解这一量化分析的核心痛点,因此在接口中专门设置了 adjust 参数,支持不复权、前复权(qfq)和后复权(hfq)三种模式:
qfq):保持当前价格不变,向前调整历史价格。优点是便于看盘,和行情软件默认显示一致,但历史价格会随每次除权而变化,甚至可能出现负值。hfq):保持上市首日价格不变,向后调整价格。优点是能真实反映投资者的累计财富增长,是计算真实历史回报率的唯一可靠方法。因此,在严谨的量化投资研究中,后复权数据是首选标准。akshare 对复权概念的清晰阐释和功能支持,表明它不仅仅是一个数据抓取工具,更是一个由实践者为实践者打造、深刻理解金融分析需求的专业库。
代码示例:获取某只股票的后复权日 K 线数据
import akshare as ak# 获取平安银行(000001)从 2017-03-01 到 2024-05-28 的后复权(hfq)日 K 线数据stock_zh_a_hist_hfq_df = ak.stock_zh_a_hist( symbol="000001", period="daily", start_date="20170301", end_date="20240528", adjust="hfq")# 显示后复权数据print(stock_zh_a_hist_hfq_df.tail()) 日期 股票代码 开盘 收盘 最高 最低 成交量 成交额 振幅 涨跌幅 涨跌额 换手率17552024-05-220000011639.331639.331661.841626.8321155312.458449e+092.140.081.251.0917562024-05-230000011635.581619.331643.081615.5818416232.110799e+091.68-1.22-20.000.9517572024-05-240000011615.581608.081630.581606.8313982761.593330e+091.47-0.69-11.250.7217582024-05-270000011608.081633.081635.581608.0814543611.663272e+091.711.5525.000.7517592024-05-280000011631.831619.331641.831614.3312043231.377107e+091.68-0.84-13.750.62表 2.2:stock_zh_a_hist 输入参数
symbol | '000001' | ||
period | 'daily''weekly', 'monthly' | ||
start_date | '20170301' | ||
end_date | '20240528' | ||
adjust | """qfq", "hfq" |
表 2.3:stock_zh_a_hist 输出字段
日期 | ||
开盘 | ||
收盘 | ||
最高 | ||
最低 | ||
成交量 | ||
成交额 | ||
换手率 |
我们将补全缺失的 Section 3 部分,使其与现有结构一致。标题采用与前文相同的风格,结构包括:段落说明 + 示例代码 + 输出结果 + 字段说明表格,主题为 期货数据接口。
除股票市场外,中国期货市场的数据获取对于量化交易、套期保值与商品研究也至关重要。akshare 提供了对主力合约、连续合约、持仓量、结算价等关键字段的便捷接口,覆盖多个交易所(如大商所、上期所、郑商所),使用户能以统一方式访问结构清晰、格式标准的商品期货数据。
在实际应用中,主力合约数据可用于构建趋势策略、预测波动率、监控价格极值等。akshare 提供了 futures_zh_daily_sina() 接口,用于从新浪财经抓取国内期货主力合约的日线行情,包括开盘价、收盘价、最高价、最低价、成交量、持仓量和结算价等关键字段。
import akshare as ak# 获取大连商品交易所豆粕主力合约的历史数据(M0)futures_soybean_meal_df = ak.futures_zh_daily_sina(symbol="M0")# 展示最近 5 行数据print(futures_soybean_meal_df.tail()) date open high low close volume hold settle4980 2025-06-23 3074.0 3076.0 3021.0 3037.0 1158175 2341727 3042.04981 2025-06-24 3033.0 3040.0 3013.0 3037.0 904147 2330396 3029.04982 2025-06-25 3031.0 3037.0 2988.0 2993.0 1342168 2270410 3009.04983 2025-06-26 2986.0 2988.0 2921.0 2936.0 1851366 2252700 2951.04984 2025-06-27 2940.0 2949.0 2926.0 2946.0 987064 2221758 2938.0字段说明表:
futures_zh_daily_sina()输出字段
date | ||
open | ||
high | ||
low | ||
close | ||
volume | ||
hold | ||
settle |
在实证研究与策略开发中,结算价常用于构造收益率序列,而持仓量则反映市场情绪和资金博弈状况,是判断趋势强度的重要依据。
宏观经济数据是理解市场大环境、进行自上而下分析的基础。akshare 提供了一系列接口来获取关键的宏观经济指标。
通过 macro_china_gdp 接口,可以获取中国的季度国内生产总值数据。该函数返回包含 GDP 绝对值、同比增长率,以及按第一、二、三产业划分的详细数据的 DataFrame,为宏观经济研究提供了高质量的数据基础。
代码示例:获取中国季度 GDP 数据
import akshare as ak# 获取中国季度 GDP 数据macro_china_gdp_df = ak.macro_china_gdp()print(macro_china_gdp_df.head())| 季度 | 国内生产总值-绝对值 | 国内生产总值-同比增长 | 第一产业-绝对值 | 第一产业-同比增长 | 第二产业-绝对值 | 第二产业-同比增长 | 第三产业-绝对值 | 第三产业-同比增长 ||------------------|--------------------|----------------------|----------------|------------------|----------------|------------------|----------------|------------------|| 2025年第1季度 | 318758.0 | 5.4 | 11712.8 | 3.5 | 111902.9 | 5.9 | 195142.3 | 5.3 || 2024年第1-4季度 | 1349083.5 | 5.0 | 91413.9 | 3.5 | 492087.1 | 5.3 | 765582.5 | 5.0 || 2024年第1-3季度 | 975357.4 | 4.8 | 57363.6 | 3.4 | 356492.0 | 5.4 | 561501.8 | 4.7 || 2024年第1-2季度 | 633599.4 | 5.0 | 30468.8 | 3.5 | 233253.0 | 5.8 | 369877.5 | 4.6 || 2024年第1季度 | 304761.8 | 5.3 | 11458.8 | 3.3 | 108277.4 | 6.0 | 185025.6 | 5.0 |利率是金融市场的核心定价基准。akshare 提供了 rate_interbank 接口,方便用户获取银行间同业拆借利率(如上海银行间同业拆放利率 Shibor)。该接口设计灵活,用户只需通过设置 market、symbol 和 indicator 三个参数,即可按需获取不同市场、不同品种、不同期限的利率数据,满足多样化的分析需求。
代码示例:获取 3 个月 Shibor 利率
import akshare as ak# 获取上海银行间同业拆借市场、Shibor人民币、3个月期限的利率数据shibor_3m_df = ak.rate_interbank(market="上海银行同业拆借市场", symbol="Shibor人民币", indicator="3月")print(shibor_3m_df.tail()) 报告日 利率 涨跌4672 2025-06-23 1.629 0.04673 2025-06-24 1.629 0.04674 2025-06-25 1.630 0.14675 2025-06-26 1.630 0.04676 2025-06-27 1.630 0.0表 3.2: rate_interbank 关键输入参数
market | "上海银行同业拆借市场" | ||
symbol | "Shibor人民币" | ||
indicator | "隔夜""1周", "3月", "1年" |
获取数据只是量化分析的起点。akshare 的真正价值在于它能够与 Python 强大的数据科学生态系统无缝衔接,将原始数据高效转化为有洞察力的分析结果。本节将以一个完整的实战流程为例,展示如何从数据获取、技术指标计算,到最终的可视化呈现,逐步挖掘数据背后的价值。
本流程将基于第 2.2 节获取的后复权历史股价数据。首先,需要对数据进行预处理——将日期列转换为索引,这一步对于后续的时间序列分析至关重要。随后,将计算两条常用的技术指标:20 日简单移动平均线(SMA20)和 50 日简单移动平均线(SMA50),为后续趋势分析和策略开发打下基础。
代码示例:计算移动平均线
import pandas as pdimport akshare as ak# 获取平安银行 (000001) 从 2017-03-01 到 2024-05-28 的后复权 (hfq) 日 K 线数据stock_zh_a_hist_hfq_df = ak.stock_zh_a_hist(symbol="000001", period="daily", start_date="20170301", end_date='20240528', adjust="hfq")# 1. 将日期列转换为 datetime 对象并设为索引stock_zh_a_hist_hfq_df['日期'] = pd.to_datetime(stock_zh_a_hist_hfq_df['日期'])stock_zh_a_hist_hfq_df.set_index('日期', inplace=True)# 2. 计算 20 日和 50 日简单移动平均线stock_zh_a_hist_hfq_df['SMA_20'] = stock_zh_a_hist_hfq_df['收盘'].rolling(window=20).mean()stock_zh_a_hist_hfq_df['SMA_50'] = stock_zh_a_hist_hfq_df['收盘'].rolling(window=50).mean()# 显示包含 SMA 的数据print(stock_zh_a_hist_hfq_df.tail())日期 股票代码 开盘 收盘 最高 最低 成交量 成交额 振幅 涨跌幅 涨跌额 换手率 SMA_20 SMA_502024-05-220000011639.331639.331661.841626.8321155312.458449e+092.140.081.251.091559.13201523.88862024-05-230000011635.581619.331643.081615.5818416232.110799e+091.68-1.22-20.000.951564.75801526.43902024-05-240000011615.581608.081630.581606.8313982761.593330e+091.47-0.69-11.250.721569.57151528.76442024-05-270000011608.081633.081635.581608.0814543611.663272e+091.711.5525.000.751575.69751531.36482024-05-280000011631.831619.331641.831614.3312043231.377107e+091.68-0.84-13.750.621580.63601533.4652数据可视化是洞察市场趋势和识别交易信号最直观、有效的方法。借助 matplotlib 库,我们可以将股价与计算得到的移动平均线同时绘制在一张图表上,直观展现价格变动及均线交叉等关键特征,帮助分析师更好地把握行情脉络和潜在买卖时机。
代码示例:绘制股价与移动平均线
import matplotlib.pyplot as pltimport matplotlib.dates as mdatesimport numpy as npimport pandas as pd# 设置中文字体,以防乱码plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False# 生成示例数据np.random.seed(0)dates = pd.date_range('2023-01-01', periods=100)close_prices = np.cumsum(np.random.randn(100)) + 50stock_zh_a_hist_hfq_df = pd.DataFrame({'收盘': close_prices}, index=dates)stock_zh_a_hist_hfq_df['SMA20'] = stock_zh_a_hist_hfq_df['收盘'].rolling(window=20).mean()stock_zh_a_hist_hfq_df['SMA50'] = stock_zh_a_hist_hfq_df['收盘'].rolling(window=50).mean()# 创建图表fig, ax = plt.subplots(figsize=(14, 7))# 绘制后复权收盘价、SMA20 和 SMA50ax.plot(stock_zh_a_hist_hfq_df.index, stock_zh_a_hist_hfq_df['收盘'], label='后复权收盘价', color='blue', alpha=0.7)ax.plot(stock_zh_a_hist_hfq_df.index, stock_zh_a_hist_hfq_df['SMA20'], label='20日移动平均线', color='orange', linestyle='--')ax.plot(stock_zh_a_hist_hfq_df.index, stock_zh_a_hist_hfq_df['SMA50'], label='50日移动平均线', color='red', linestyle='--')# 设置图表标题和标签ax.set_title('平安银行 (000001) - 股价与移动平均线', fontsize=16)ax.set_xlabel('日期', fontsize=12)ax.set_ylabel('后复权价格 (元)', fontsize=12)ax.legend()ax.grid(True)# 格式化日期显示ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))fig.autofmt_xdate()# 显示图表plt.show()
这张图表不仅直观展示了股价的长期走势,还清晰刻画了短期(SMA20)与中期(SMA50)均线的动态关系。在技术分析中,短期均线上穿长期均线(如 SMA20 上穿 SMA50)通常被称为“金叉”,被视为市场可能转强的信号;反之,短期均线下穿长期均线则称为“死叉”,往往预示着下跌风险。通过这样的可视化,分析师能够快速识别潜在的趋势反转点,为交易决策提供有力的数据支持。
akshare 已成为现代 Python 量化分析师和数据科学家工具箱中不可或缺的重要工具。其核心优势体现在以下几个方面:
akshare 能够便捷获取股票、期货、宏观经济、利率等多类金融数据,满足跨市场、多资产的分析需求。hfq)、期货持仓量(hold)等量化分析必需的关键功能,充分体现了对实际业务场景的深刻理解。pandas、matplotlib 等)无缝集成,既易上手又具备强大扩展性。总体来看,akshare 极大降低了金融数据获取的门槛,让研究者和开发者能够将更多精力投入到策略开发和数据分析本身。对于用户而言,建议充分利用其带来的便利,同时要认识到其本质是高效的数据聚合工具,而非具备服务等级协议(SLA)的商业数据源。如遇问题或需获取最新信息,建议优先通过其活跃的 GitHub 社区寻求支持。
综上,凭借广泛的数据覆盖、专业的功能设计和强大的社区支持,akshare 已成为中国金融市场数据分析领域极具影响力的开源库,值得广大量化分析师和数据科学家长期关注和使用。
推荐资源:
Note:产生如下推文列表的 Stata 命令为:
lianxh Python + 数据 , nocat md安装最新版lianxh命令:ssc install lianxh, replace
连享会:2026五一论文班 · 线上
时间:5月2-4日
嘉宾:郭士祺 (上海交通大学)、戚树森 (厦门大学)、李学恒 (中山大学)
咨询:王老师 18903405450(微信)

Note:扫一扫进入“连享会微信小店”,你想学的课程在这里······


New! Stata 搜索神器:
lianxh和songblGIF 动图介绍搜: 推文、数据分享、期刊论文、重现代码 ……👉 安装:. ssc install lianxh. ssc install songbl👉 使用:. lianxh DID 倍分法. songbl all

🍏 关于我们
