Comprehensive Python library for financial data acquisition providing access to Chinese and global market data.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
AKShare provides comprehensive stock market data coverage with 325+ functions across two main categories: core STOCK data (120 functions) and advanced STOCK_FEATURE data (205 functions). This covers Chinese A-shares, Hong Kong stocks, US stocks, and various technical indicators and analysis tools.
import akshare as ak
# Real-time A-share market data
def stock_zh_a_spot() -> pd.DataFrame:
"""
Returns real-time A-share quotes from Sina Finance
Returns:
pd.DataFrame: Real-time market data with columns:
- 代码 (Code): Stock symbol
- 名称 (Name): Stock name
- 最新价 (Latest): Current price
- 涨跌额 (Change): Price change amount
- 涨跌幅 (Pct_change): Percentage change
- 买入 (Bid): Bid price
- 卖出 (Ask): Ask price
- 成交量 (Volume): Trading volume
- 成交额 (Amount): Trading amount
"""
# Usage example
df = ak.stock_zh_a_spot()
print(df.head())
# 代码 名称 最新价 涨跌额 涨跌幅 买入 卖出 成交量 成交额
# 0 000001 平安银行 10.50 0.15 1.45 10.49 10.50 1234567 12950123456
# 1 000002 万科A 8.92 -0.08 -0.89 8.91 8.92 987654 8800765432import akshare as ak
def stock_zh_a_hist(symbol: str = "000001", period: str = "daily",
start_date: str = "19700101", end_date: str = "20500101",
adjust: str = "") -> pd.DataFrame:
"""
Returns historical daily A-share data
Parameters:
symbol: Stock code (e.g., "000001")
period: Data frequency ("daily", "weekly", "monthly")
start_date: Start date in YYYYMMDD format
end_date: End date in YYYYMMDD format
adjust: Adjustment type ("qfq": 前复权, "hfq": 后复权, "": 不复权)
Returns:
pd.DataFrame: Historical data with OHLCV columns
"""
# Get historical data for Ping An Bank
hist_df = ak.stock_zh_a_hist(symbol="000001", period="daily", start_date="20240101", end_date="20241201")
print(hist_df.head())
# 日期 开盘 收盘 最高 最低 成交量 成交额
# 0 2024-01-02 10.20 10.35 10.40 10.15 5678901 58590123456
# 1 2024-01-03 10.35 10.28 10.42 10.25 4567890 46789012345import akshare as ak
def stock_zh_a_hist_min_em(symbol: str = "000001", period: str = "5",
start_date: str = "1979-09-01 09:32:00",
end_date: str = "2222-01-01 09:32:00",
adjust: str = "") -> pd.DataFrame:
"""
Returns minute-level A-share data
Parameters:
symbol: Stock code (e.g., "000001")
period: Time period ("1", "5", "15", "30", "60")
start_date: Start datetime in "YYYY-MM-DD HH:MM:SS" format
end_date: End datetime in "YYYY-MM-DD HH:MM:SS" format
adjust: Adjustment type ("", "qfq", "hfq")
Returns:
pd.DataFrame: Minute-level OHLCV data
"""
# Get 5-minute data for recent trading
minute_df = ak.stock_zh_a_hist_min_em(symbol="000001", period="5")import akshare as ak
def stock_us_spot() -> pd.DataFrame:
"""
Returns real-time US stock quotes
Returns:
pd.DataFrame: US stock market data with columns:
- 代码 (Symbol): Stock symbol
- 名称 (Name): Company name
- 最新价 (Price): Current price
- 涨跌额 (Change): Price change
- 涨跌幅 (Pct_change): Percentage change
- 成交量 (Volume): Trading volume
"""
# Get US stock real-time data
us_df = ak.stock_us_spot()
print(us_df.head())
# 代码 名称 最新价 涨跌额 涨跌幅 成交量
# 0 AAPL Apple 150.25 2.15 1.45 12345678
# 1 MSFT Microsoft 310.80 -1.20 -0.38 8765432import akshare as ak
def stock_us_daily(symbol: str, start_date: str = "19700101",
end_date: str = "20500101") -> pd.DataFrame:
"""
Returns historical daily US stock data
Parameters:
symbol: US stock symbol (e.g., "AAPL")
start_date: Start date in YYYYMMDD format
end_date: End date in YYYYMMDD format
Returns:
pd.DataFrame: Historical OHLCV data
"""
# Get Apple historical data
aapl_df = ak.stock_us_daily(symbol="AAPL", start_date="20240101")import akshare as ak
def stock_hk_spot() -> pd.DataFrame:
"""
Returns real-time Hong Kong stock quotes
Returns:
pd.DataFrame: HK stock market data
"""
# Get Hong Kong stock data
hk_df = ak.stock_hk_spot()import akshare as ak
def stock_hk_daily(symbol: str, start_date: str = "19700101",
end_date: str = "20500101") -> pd.DataFrame:
"""
Returns historical Hong Kong stock data
Parameters:
symbol: HK stock code (e.g., "00700")
Returns:
pd.DataFrame: Historical data
"""
# Get Tencent historical data
tencent_df = ak.stock_hk_daily(symbol="00700", start_date="20240101")import akshare as ak
def stock_zh_a_spot_em() -> pd.DataFrame:
"""
East Money enhanced real-time A-share data
Returns:
pd.DataFrame: Enhanced market data with columns:
- 序号 (Index): Row number
- 代码 (Code): Stock code
- 名称 (Name): Stock name
- 最新价 (Latest): Current price
- 涨跌幅 (Pct_change): Percentage change
- 涨跌额 (Change): Price change amount
- 成交量 (Volume): Trading volume
- 成交额 (Amount): Trading amount
- 振幅 (Amplitude): Price amplitude
- 最高 (High): Highest price
- 最低 (Low): Lowest price
- 今开 (Open): Opening price
- 昨收 (Prev_close): Previous close
- 量比 (Volume_ratio): Volume ratio
- 换手率 (Turnover): Turnover rate
- 市盈率-动态 (PE_dynamic): Dynamic P/E ratio
- 市净率 (PB): Price-to-book ratio
- 总市值 (Total_mv): Total market value
- 流通市值 (Float_mv): Floating market value
- 涨速 (Rise_speed): Rising speed
- 5分钟涨跌 (Change_5min): 5-minute change
- 60日涨跌幅 (Change_60d): 60-day change
- 年初至今涨跌幅 (Change_ytd): Year-to-date change
"""
# Get enhanced real-time data
enhanced_df = ak.stock_zh_a_spot_em()
print(enhanced_df.columns.tolist())import akshare as ak
def stock_zh_a_hist(symbol: str, period: str = "daily",
start_date: str = "19700101",
end_date: str = "20500101",
adjust: str = "") -> pd.DataFrame:
"""
Enhanced historical A-share data with adjustment options
Parameters:
symbol: Stock code
period: Data frequency ("daily", "weekly", "monthly")
start_date: Start date (YYYYMMDD)
end_date: End date (YYYYMMDD)
adjust: Price adjustment ("qfq"=forward, "hfq"=backward, ""=none)
Returns:
pd.DataFrame: OHLCV data with volume and amount
"""
# Get adjusted historical data
adj_df = ak.stock_zh_a_hist(
symbol="000001",
period="daily",
start_date="20240101",
adjust="qfq" # Forward adjusted prices
)import akshare as ak
def stock_kc_a_spot_em() -> pd.DataFrame:
"""
Real-time STAR Market (Science and Technology Innovation Board) data
Returns:
pd.DataFrame: STAR Market real-time quotes
"""
# Get STAR Market data
star_df = ak.stock_kc_a_spot_em()import akshare as ak
def stock_cy_a_spot_em() -> pd.DataFrame:
"""
Real-time ChiNext Market data
Returns:
pd.DataFrame: ChiNext real-time quotes
"""
# Get ChiNext data
chinext_df = ak.stock_cy_a_spot_em()import akshare as ak
def stock_hsgt_fund_flow_summary_em() -> pd.DataFrame:
"""
Stock Connect capital flow summary
Returns:
pd.DataFrame: Capital flow data between mainland and HK
"""
def stock_hsgt_individual_em(symbol: str) -> pd.DataFrame:
"""
Individual stock data in Stock Connect
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Individual stock connect data
"""
# Get Stock Connect flow summary
flow_summary = ak.stock_hsgt_fund_flow_summary_em()
# Get individual stock connect data
individual_data = ak.stock_hsgt_individual_em(symbol="000001")import akshare as ak
def stock_fund_flow_concept() -> pd.DataFrame:
"""
Concept sector capital flow data
Returns:
pd.DataFrame: Capital flows by concept sectors
"""
def stock_fund_flow_industry() -> pd.DataFrame:
"""
Industry sector capital flow data
Returns:
pd.DataFrame: Capital flows by industry sectors
"""
# Get concept sector flows
concept_flows = ak.stock_fund_flow_concept()
# Get industry sector flows
industry_flows = ak.stock_fund_flow_industry()import akshare as ak
def stock_margin_detail_em() -> pd.DataFrame:
"""
Detailed margin trading data
Returns:
pd.DataFrame: Margin trading statistics by stock
"""
def stock_margin_summary_em() -> pd.DataFrame:
"""
Margin trading summary data
Returns:
pd.DataFrame: Overall margin trading summary
"""
# Get margin trading details
margin_detail = ak.stock_margin_detail_em()
# Get margin trading summary
margin_summary = ak.stock_margin_summary_em()import akshare as ak
def stock_lhb_detail_em(start_date: str, end_date: str) -> pd.DataFrame:
"""
Dragon-Tiger Board detailed transaction data
Parameters:
start_date: Start date (YYYY-MM-DD)
end_date: End date (YYYY-MM-DD)
Returns:
pd.DataFrame: Large transaction details
"""
# Get Dragon-Tiger Board data
lhb_data = ak.stock_lhb_detail_em(
start_date="2024-01-01",
end_date="2024-12-01"
)import akshare as ak
def stock_zh_a_gdhs_detail_em(symbol: str) -> pd.DataFrame:
"""
Stock technical analysis details
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Technical analysis indicators
"""
def stock_technology_ths(symbol: str, indicator: str) -> pd.DataFrame:
"""
Technical indicators from Tonghuashun
Parameters:
symbol: Stock code
indicator: Technical indicator type
Returns:
pd.DataFrame: Technical indicator data
"""
# Get technical analysis details
tech_detail = ak.stock_zh_a_gdhs_detail_em(symbol="000001")
# Get specific technical indicators
rsi_data = ak.stock_technology_ths(symbol="000001", indicator="RSI")import akshare as ak
def stock_board_concept_name_em() -> pd.DataFrame:
"""
Concept board names and classifications
Returns:
pd.DataFrame: Concept board information
"""
def stock_board_industry_name_em() -> pd.DataFrame:
"""
Industry board names and classifications
Returns:
pd.DataFrame: Industry classification data
"""
# Get concept boards
concept_boards = ak.stock_board_concept_name_em()
# Get industry boards
industry_boards = ak.stock_board_industry_name_em()import akshare as ak
def stock_info_a_code_name() -> pd.DataFrame:
"""
A-share stock code and name mapping
Returns:
pd.DataFrame: Stock code to name mapping
"""
def stock_info_sz_name_code() -> pd.DataFrame:
"""
Shenzhen stock exchange code-name mapping
Returns:
pd.DataFrame: SZ stock information
"""
# Get A-share stock list
stock_list = ak.stock_info_a_code_name()
# Get Shenzhen stock list
sz_stocks = ak.stock_info_sz_name_code()import akshare as ak
import pandas as pd
# Step 1: Get stock list
stock_list = ak.stock_info_a_code_name()
# Step 2: Get real-time data for all stocks
realtime_data = ak.stock_zh_a_spot_em()
# Step 3: Get historical data for specific stock
symbol = "000001"
historical_data = ak.stock_zh_a_hist(
symbol=symbol,
start_date="20240101",
end_date="20241201",
adjust="qfq"
)
# Step 4: Analyze technical indicators
tech_indicators = ak.stock_zh_a_gdhs_detail_em(symbol=symbol)
# Step 5: Check capital flows
if symbol in realtime_data['代码'].values:
flow_data = ak.stock_hsgt_individual_em(symbol=symbol)import akshare as ak
def get_stock_data_safely(symbol: str) -> pd.DataFrame:
"""Safe stock data retrieval with error handling"""
try:
df = ak.stock_zh_a_hist(symbol=symbol)
if df.empty:
print(f"No data available for symbol {symbol}")
return pd.DataFrame()
return df
except Exception as e:
print(f"Error retrieving data for {symbol}: {e}")
return pd.DataFrame()
# Usage
data = get_stock_data_safely("000001")The stock data capabilities in AKShare provide comprehensive coverage for equity market analysis, from basic price data to advanced technical indicators and market microstructure information.
Install with Tessl CLI
npx tessl i tessl/pypi-akshare