SuperAPI AI Directory

akshare-docs

Data & analytics

View repository

Updated 10-16 00:03

About this skill

AKShare Financial Data Retrieval API

Quick Start

# 安装依赖
pip install akshare pandas --upgrade

# 测试安装
python -c "import akshare; print(akshare.__version__)"

Requires Python 3.9+

Basic Usage

import akshare as ak
Retrieve Ping An Bank daily K-line data

df = ak.stock_zh_a_hist(symbol="000001", period="daily", start_date="20240101", end_date="20240630") print(df)


### 函数命名规则

{asset_type}{market}{data_type}_{data_source}


- **Asset type**: `stock` (stocks), `futures` (futures), `fund` (funds), `bond` (bonds), `forex` (foreign exchange), `option` (options), `macro` (macroeconomics), `index` (indices)
- **Market**: `zh` (China), `us` (United States), `hk` (Hong Kong), or exchange codes
- **Data type**: `spot` (real-time), `hist` (historical), `daily` (daily bars), `minute` (minute bars)
- **Data source**: `em` (East Money), `sina` (Sina Finance), exchange abbreviations

### 输出格式

默认返回Pandas DataFrame,可直接处理:

```python
df = ak.stock_zh_a_spot_em()
print(df.head())  # 查看前5行
print(df.columns)  # 查看列名
df.to_csv("data.csv")  # 保存CSV

Stock Data (A-shares)

Real-time Quotes — All A-shares

import akshare as ak

# 获取全部A股实时行情
df = ak.stock_zh_a_spot_em()
# 返回字段: 序号、代码、名称、最新价、涨跌幅、涨跌额、成交量、成交额、振幅、最高、最低、今开、昨收、量比、换手率、市盈率、市净率 ...

Historical K-line Data

# 获取指定股票历史日K线数据
df = ak.stock_zh_a_hist(
    symbol="000001",       # 股票代码(不带前缀)
    period="daily",        # 周期: "daily"(日), "weekly"(周), "monthly"(月)
    start_date="20240101", # 开始日期,格式YYYYMMDD
    end_date="20240630",   # 结束日期
    adjust=""              # 复权: ""(不复权), "qfq"(前复权), "hfq"(后复权)
)
# 返回字段: 日期、开盘、收盘、最高、最低、成交量、成交额、振幅、涨跌幅、涨跌额、换手率

Minute-level K-line Data

# 获取分钟级K线数据
df = ak.stock_zh_a_hist_min_em(
    symbol="000001",
    period="5",            # 分钟间隔: "1", "5", "15", "30", "60"
    start_date="2024-01-02 09:30:00",
    end_date="2024-01-02 15:00:00",
    adjust=""              # 复权类型
)

Individual Stock Basic Information

# 获取个股基本信息
df = ak.stock_individual_info_em(symbol="000001")
# 返回字段: 总市值、流通市值、行业、上市时间、股票代码、股票简称、总股本、流通股 ...

Hong Kong Stock Data

# 港股实时行情
df = ak.stock_hk_spot_em()

# 港股历史K线数据
df = ak.stock_hk_hist(
    symbol="00700",        # 腾讯控股
    period="daily",        # 日线
    start_date="20240101",
    end_date="20240630",
    adjust="qfq"           # 前复权
)

US Stock Data

# 美股日线数据
df = ak.stock_us_daily(symbol="AAPL", adjust="qfq")

# 美股实时行情
df = ak.stock_us_spot_em()

Index Data

# A股指数历史数据 (e.g., Shanghai Composite Index 000001)
df = ak.stock_zh_index_daily_em(symbol="sh000001")

# 指数成分股 (e.g., CSI 300)
df = ak.index_stock_cons_csindex(symbol="000300")

Fund Data

# ETF实时行情
df = ak.fund_etf_spot_em()

# ETF历史K线数据
df = ak.fund_etf_hist_em(
    symbol="510300",       # 沪深300ETF
    period="daily",
    start_date="20240101",
    end_date="20240630",
    adjust="qfq"
)

# 开放式基金每日净值
df = ak.fund_open_fund_daily_em(symbol="000001")

# 基金评级
df = ak.fund_rating_all()

Futures Data

# 期货日线数据(按交易所汇总)
from akshare import get_futures_daily
df = get_futures_daily(start_date="20240101", end_date="20240102", market="CFFEX")
# 交易所选项: "CFFEX"(中金所), "SHFE"(上期所), "DCE"(大商所), "CZCE"(郑商所), "INE"(上海国际能源交易中心), "GFEX"(广期所)

# 期货实时行情
df = ak.futures_zh_spot()

# 期货库存数据
df = ak.futures_inventory_99(symbol="豆一")

Options Data

# 交易所期权历史数据
df = ak.option_hist_dce(symbol="豆粕期权")

# 上证50ETF期权
df = ak.option_sse_spot_price(symbol="510050")

Bond Data

# 可转债列表
df = ak.bond_zh_cov()

# 可转债历史K线数据
df = ak.bond_zh_hs_cov_daily(symbol="sz123456")

# 中国债券现货报价
df = ak.bond_spot_quote()

Foreign Exchange and Precious Metals

# 外汇实时行情(东方财富)
df = ak.forex_spot_em()

# 外汇即期报价(中国外汇交易中心)
df = ak.fx_spot_quote()

# 外汇掉期报价
df = ak.fx_swap_quote()

# 外汇汇率
df = ak.forex_usd_cny()  # 美元兑人民币

# 贵金属
df = ak.metals_shibor()  # 上海银行间拆借利率

# 金银价格
df = ak.metals_gold()  # 国际金价

Financial Data

# 股票基本面
ak.stock_fundamental(symbol="000001")  # 基本面数据

# 估值指标
ak.stock_valuation(symbol="000001")  # PE、PB等

# 盈利能力
ak.stock_profit_em(symbol="000001")

Cryptocurrency

# 币种列表
ak.crypto_binance_symbols()  # 币安交易对

# 实时价格
ak.crypto_binance_btc_usdt_spot()  # BTC/USDT

# K线数据
ak.crypto_binance_btc_usdt_kline(period="daily")

Macroeconomics

# 中国CPI年度数据
df = ak.macro_china_cpi_yearly()

# 中国GDP
df = ak.macro_china_gdp()
# 中国GDP年度数据
df = ak.macro_china_gdp_yearly()

# 中国PMI数据
df = ak.macro_china_pmi()

# 美国非农就业数据
df = ak.macro_usa_non_farm()

# 美国CPI月度数据
df = ak.macro_usa_cpi_monthly()

News and Public Sentiment

# 个股财经新闻(东方财富)
df = ak.stock_news_em(symbol="000001")

# 央视新闻
df = ak.news_cctv(date="20240101")

Complete Example: Download Data and Plot K-line Chart

import akshare as ak
import pandas as pd
import mplfinance as mpf  # pip install mplfinance

# 获取贵州茅台前复权日K线数据
df = ak.stock_zh_a_hist(
    symbol="600519",
    period="daily",
    start_date="20240101",
    end_date="20240630",
    adjust="qfq"
)

# 设置日期索引并重命名列为英文(mplfinance要求)
df.index = pd.to_datetime(df["日期"])  # 设置日期为索引
df.rename(columns={
    "开盘": "Open",    # 开盘价
    "收盘": "Close",   # 收盘价
    "最高": "High",    # 最高价
    "最低": "Low",     # 最低价
    "成交量": "Volume" # 成交量
}, inplace=True)

# 绘制K线图(含5/10/20日均线和成交量)
mpf.plot(df, type="candle", mav=(5, 10, 20), volume=True)

Usage Tips

  • All functions return pandas DataFrame — can be used directly for analysis, export, and visualization.
  • A-share data column names are inChinese; US stock/Hong Kong stock data column names are in English.
  • Use --upgrade to keep akshare up to date — due to changes in upstream data sources, interfaces are updated frequently.
  • Non-Python users can use AKTools HTTP API wrapper.
  • Data is foracademic researchuse only — does not constitute investment advice.
  • Complete API reference:https://akshare.akfamily.xyz/data/index.html

Advanced Examples

Market Overview

# A股大盘
index_zh_a_spot()  # 大盘指数

# 涨跌幅排行
stock_zh_a_spot_em()[['代码', '名称', '涨跌幅']].sort_values('涨跌幅', ascending=False)

Batch Download Multiple Stocks

import akshare as ak
import pandas as pd

# 定义要下载的股票列表
stock_list = ["000001", "600519", "300750", "601318", "000858"]

all_data = {}
for symbol in stock_list:
    # 下载每只股票的前复权日K线数据
    df = ak.stock_zh_a_hist(
        symbol=symbol,
        period="daily",
        start_date="20240101",
        end_date="20240630",
        adjust="qfq"
    )
    df["股票代码"] = symbol  # 添加股票代码列,便于后续合并
    all_data[symbol] = df
    print(f"已下载 {symbol},共 {len(df)} 条记录")

# 合并所有股票数据为一个大的DataFrame
combined = pd.concat(all_data.values(), ignore_index=True)
combined.to_csv("multi_stock_data.csv", index=False)
print(f"合并总计: {len(combined)} 条记录")

Calculate Technical Indicators (Moving Averages, MACD, RSI)

import akshare as ak
import pandas as pd
import numpy as np

# 获取贵州茅台前复权日K线数据
df = ak.stock_zh_a_hist(symbol="600519", period="daily",
                         start_date="20240101", end_date="20241231", adjust="qfq")

# 将收盘价转换为浮点数 (收盘 = close price)
df["收盘"] = df["收盘"].astype(float)

# 计算均线
df["MA5"] = df["收盘"].rolling(window=5).mean()    # 5日均线
df["MA10"] = df["收盘"].rolling(window=10).mean()   # 10日均线
df["MA20"] = df["收盘"].rolling(window=20).mean()   # 20日均线
df["MA60"] = df["收盘"].rolling(window=60).mean()   # 60日均线

# 计算MACD指标
ema12 = df["收盘"].ewm(span=12, adjust=False).mean()  # 12日指数移动平均
ema26 = df["收盘"].ewm(span=26, adjust=False).mean()  # 26日指数移动平均
df["DIF"] = ema12 - ema26                              # 快线(DIF)
df["DEA"] = df["DIF"].ewm(span=9, adjust=False).mean() # 慢线(DEA)
df["MACD"] = 2 * (df["DIF"] - df["DEA"])               # MACD柱

# 计算RSI指标(14日)
delta = df["收盘"].diff()
gain = delta.where(delta > 0, 0)       # 上涨幅度
loss = -delta.where(delta < 0, 0)      # 下跌幅度
avg_gain = gain.rolling(window=14).mean()
avg_loss = loss.rolling(window=14).mean()
rs = avg_gain / avg_loss
df["RSI14"] = 100 - (100 / (1 + rs))   # RSI值

# 计算布林带(20日)
df["BOLL_MID"] = df["收盘"].rolling(window=20).mean()           # 中轨
df["BOLL_UP"] = df["BOLL_MID"] + 2 * df["收盘"].rolling(window=20).std()  # 上轨
df["BOLL_DN"] = df["BOLL_MID"] - 2 * df["收盘"].rolling(window=20).std()  # 下轨

# 展示:日期、收盘价及各技术指标
print(df[["日期", "收盘", "MA5", "MA20", "DIF", "DEA", "MACD", "RSI14"]].tail(10))

Screen Limit-up Stocks

import akshare as ak

# 获取全部A股实时行情
df = ak.stock_zh_a_spot_em()

# 筛选涨幅>9.5%的股票(接近涨停)
df["涨跌幅"] = df["涨跌幅"].astype(float)  # 涨跌幅 = change percentage
limit_up = df[df["涨跌幅"] >= 9.5].sort_values("涨跌幅", ascending=False)
print(f"今日涨停/接近涨停股票: 共 {len(limit_up)} 只")
# 展示:代码、名称、最新价、涨跌幅、成交额、换手率
print(limit_up[["代码", "名称", "最新价", "涨跌幅", "成交额", "换手率"]].head(20))

Retrieve Dragon-Tiger List Data

import akshare as ak

# 获取龙虎榜详细数据
df = ak.stock_lhb_detail_em(start_date="20240101", end_date="20240131")
print(df.head())

# 获取龙虎榜营业部排名
df_dept = ak.stock_lhb_hyyyb_em(start_date="20240101", end_date="20240131")
print(df_dept.head())

Retrieve Margin Trading and Securities Lending Data

import akshare as ak

# 获取沪深融资融券汇总数据
df = ak.stock_margin_sse(start_date="20240101", end_date="20240630")
print(df.head())

# 获取个股融资融券明细
df_detail = ak.stock_margin_detail_sse(date="20240102")
print(df_detail.head())

Retrieve Northbound Capital (Stock Connect) Data

import akshare as ak

# 获取北向资金历史数据
df = ak.stock_hsgt_hist_em(symbol="北向资金")  # 北向资金 = Northbound capital
print(df.tail(10))

# 获取北向资金持股明细
df_hold = ak.stock_hsgt_hold_stock_em(market="北向", indicator="今日排行")  # 北向 = Northbound, 今日排行 = Today's ranking
print(df_hold.head(20))

Retrieve Shareholder Data

import akshare as ak

# 获取前十大股东
df = ak.stock_gdfx_top_10_em(symbol="600519", date="20231231")
print(df)

# 获取前十大流通股东
df_float = ak.stock_gdfx_free_top_10_em(symbol="600519", date="20231231")
print(df_float)

Retrieve Sector Quote Data

import akshare as ak

# 获取行业板块行情
df_industry = ak.stock_board_industry_name_em()
print(df_industry.head(20))

# 获取概念板块行情
df_concept = ak.stock_board_concept_name_em()
print(df_concept.head(20))

# 获取特定板块成分股
df_stocks = ak.stock_board_industry_cons_em(symbol="银行")  # 银行 = Banking
print(df_stocks)

Retrieve Restricted Share Unlocking Data

import akshare as ak

# 获取限售解禁数据
df = ak.stock_restricted_release_queue_em(symbol="全部A股")  # 全部A股 = All A-shares
print(df.head(20))

Retrieve Market Capital Flow

import akshare as ak

# 获取大盘资金流向
df = ak.stock_market_fund_flow()
print(df.tail(10))

# 获取个股资金流向
df_stock = ak.stock_individual_fund_flow(stock="000001", market="sz")
print(df_stock.tail(10))

Complete Example: Multi-factor Stock Selection

import akshare as ak
import pandas as pd

# 步骤1:获取全部A股实时行情
df = ak.stock_zh_a_spot_em()

# 步骤2:转换数据类型
for col in ["市盈率-动态", "市净率", "换手率", "涨跌幅", "成交额"]:
    df[col] = pd.to_numeric(df[col], errors="coerce")

# 步骤3:多因子筛选
# 条件1:PE 在5-30之间(排除亏损和高估值)
# 条件2:PB 在0.5-5之间
# 条件3:换手率 > 1%(合理流动性)
# 条件4:涨跌幅在-3%到3%之间(排除异常波动)
filtered = df[
    (df["市盈率-动态"] > 5) & (df["市盈率-动态"] < 30) &
    (df["市净率"] > 0.5) & (df["市净率"] < 5) &
    (df["换手率"] > 1) &
    (df["涨跌幅"] > -3) & (df["涨跌幅"] < 3)
].copy()

# 步骤4:按PE排序,选取最低PE的前20只股票
result = filtered.sort_values("市盈率-动态").head(20)
print(f"筛选出 {len(result)} 只股票:")
print(result[["代码", "名称", "最新价", "市盈率-动态", "市净率", "换手率", "涨跌幅"]])

Other Code Reference Examples

Reference Documentation