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 fundamental analysis capabilities with 47 functions in the STOCK_FUNDAMENTAL category. This covers financial statements, financial ratios, earnings forecasts, analyst recommendations, and company valuation metrics essential for equity research and investment analysis.
import akshare as ak
def stock_financial_analysis_indicator_em(symbol: str) -> pd.DataFrame:
"""
Comprehensive financial analysis indicators from East Money
Parameters:
symbol: Stock code (e.g., "000001")
Returns:
pd.DataFrame: Financial indicators with columns:
- 指标名称 (Indicator): Financial metric name
- 报告期 (Period): Reporting period
- 指标值 (Value): Metric value
- 同比增长率 (YoY_growth): Year-over-year growth rate
- 行业平均 (Industry_avg): Industry average
- 行业排名 (Industry_rank): Industry ranking
"""
# Get comprehensive financial analysis for Ping An Bank
financial_indicators = ak.stock_financial_analysis_indicator_em(symbol="000001")
print(financial_indicators.head())
# 指标名称 报告期 指标值 同比增长率 行业平均 行业排名
# 0 营业收入 2024Q3 1234.56 12.34 987.65 5
# 1 净利润 2024Q3 456.78 8.76 321.09 3
# 2 ROE 2024Q3 15.67 1.23 12.45 2
# 3 ROA 2024Q3 1.89 0.34 1.45 4import akshare as ak
def stock_financial_abstract(symbol: str = "000001") -> pd.DataFrame:
"""
Financial statement abstract and key metrics
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Financial abstract with columns:
- 报告期 (Period): Reporting period
- 营业收入 (Revenue): Operating revenue
- 营业收入同比增长 (Revenue_growth): Revenue YoY growth
- 净利润 (Net_profit): Net profit
- 净利润同比增长 (Profit_growth): Net profit YoY growth
- 每股收益 (EPS): Earnings per share
- 净资产收益率 (ROE): Return on equity
- 每股净资产 (BVPS): Book value per share
- 每股经营现金流 (CFPS): Cash flow per share
"""
# Get financial abstract
financial_abstract = ak.stock_financial_abstract(symbol="000001")
print(financial_abstract.head())
# 报告期 营业收入 营业收入同比增长 净利润 净利润同比增长 每股收益 净资产收益率 每股净资产 每股经营现金流
# 0 2024Q3 1567.89 12.34 234.56 8.76 0.89 15.67 5.67 1.23
# 1 2024Q2 1456.78 10.23 212.34 7.89 0.81 14.89 5.45 1.15import akshare as ak
def stock_balance_sheet_by_report_em(symbol: str = "000001") -> pd.DataFrame:
"""
Balance sheet data by reporting period
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Balance sheet items with columns:
- 报告期 (Period): Reporting period
- 货币资金 (Cash): Cash and equivalents
- 总资产 (Total_assets): Total assets
- 总负债 (Total_liabilities): Total liabilities
- 股东权益合计 (Total_equity): Total shareholders' equity
- 资产负债率 (Debt_ratio): Debt-to-assets ratio
- 流动比率 (Current_ratio): Current ratio
- 速动比率 (Quick_ratio): Quick ratio
"""
def stock_balance_sheet_by_yearly_em(symbol: str = "000001") -> pd.DataFrame:
"""
Annual balance sheet data
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Annual balance sheet data
"""
# Get quarterly balance sheet data
balance_sheet_q = ak.stock_balance_sheet_by_report_em(symbol="000001")
# Get annual balance sheet data
balance_sheet_y = ak.stock_balance_sheet_by_yearly_em(symbol="000001")import akshare as ak
def stock_cash_flow_sheet_by_report_em(symbol: str = "000001") -> pd.DataFrame:
"""
Cash flow statement by reporting period
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Cash flow data with columns:
- 报告期 (Period): Reporting period
- 经营活动现金流量净额 (Operating_cf): Operating cash flow
- 投资活动现金流量净额 (Investing_cf): Investing cash flow
- 筹资活动现金流量净额 (Financing_cf): Financing cash flow
- 现金及现金等价物净增加额 (Net_cf): Net change in cash
- 自由现金流 (Free_cf): Free cash flow
"""
def stock_cash_flow_sheet_by_yearly_em(symbol: str = "000001") -> pd.DataFrame:
"""
Annual cash flow statement data
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Annual cash flow data
"""
# Get cash flow data
cash_flow_q = ak.stock_cash_flow_sheet_by_report_em(symbol="000001")
cash_flow_y = ak.stock_cash_flow_sheet_by_yearly_em(symbol="000001")import akshare as ak
def stock_financial_hk_report_em(symbol: str) -> pd.DataFrame:
"""
Hong Kong listed stock financial ratios
Parameters:
symbol: HK stock code
Returns:
pd.DataFrame: Financial ratios and metrics
"""
def stock_roe_em(symbol: str = "000001") -> pd.DataFrame:
"""
Return on Equity (ROE) analysis and components
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: ROE decomposition with columns:
- 报告期 (Period): Reporting period
- 净资产收益率 (ROE): Return on equity
- 净利润率 (Net_margin): Net profit margin
- 资产周转率 (Asset_turnover): Asset turnover ratio
- 权益乘数 (Equity_multiplier): Equity multiplier
- 杜邦分析 (DuPont): DuPont analysis components
"""
# Get ROE analysis
roe_analysis = ak.stock_roe_em(symbol="000001")
print(roe_analysis.head())
# 报告期 净资产收益率 净利润率 资产周转率 权益乘数
# 0 2024Q3 15.67 8.45 0.89 2.08
# 1 2024Q2 14.89 8.12 0.87 2.11import akshare as ak
def stock_a_pe_lg() -> pd.DataFrame:
"""
A-share market PE ratio distribution
Returns:
pd.DataFrame: Market PE statistics and distribution
"""
def stock_a_indicator_lg() -> pd.DataFrame:
"""
A-share market valuation indicators
Returns:
pd.DataFrame: Market-wide valuation metrics including:
- 平均市盈率 (Avg_PE): Average P/E ratio
- 平均市净率 (Avg_PB): Average P/B ratio
- 平均股息率 (Avg_dividend): Average dividend yield
- 总市值 (Total_mv): Total market cap
- 流通市值 (Float_mv): Floating market cap
"""
# Get market PE distribution
market_pe = ak.stock_a_pe_lg()
# Get market valuation indicators
market_valuation = ak.stock_a_indicator_lg()import akshare as ak
def stock_profit_forecast() -> pd.DataFrame:
"""
Earnings forecast summary across all stocks
Returns:
pd.DataFrame: Earnings forecasts with columns:
- 代码 (Code): Stock code
- 名称 (Name): Stock name
- 2024预测每股收益 (EPS_2024F): 2024 forecast EPS
- 2025预测每股收益 (EPS_2025F): 2025 forecast EPS
- 2026预测每股收益 (EPS_2026F): 2026 forecast EPS
- 预测PE (Forecast_PE): Forward P/E ratio
- 预测收益增长率 (Growth_rate): Forecast earnings growth
"""
def stock_profit_forecast_ths(symbol: str) -> pd.DataFrame:
"""
Individual stock earnings forecast from Tonghuashun
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Detailed earnings forecasts for individual stock
"""
# Get overall earnings forecasts
earnings_forecasts = ak.stock_profit_forecast()
print(earnings_forecasts.head())
# 代码 名称 2024预测每股收益 2025预测每股收益 2026预测每股收益 预测PE 预测收益增长率
# 0 000001 平安银行 1.45 1.67 1.89 7.2 15.2
# 1 000002 万科A 0.89 1.02 1.15 8.7 14.6
# Get individual stock forecast
individual_forecast = ak.stock_profit_forecast_ths(symbol="000001")import akshare as ak
def stock_profit_forecast_em(symbol: str) -> pd.DataFrame:
"""
East Money earnings forecast and consensus
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Consensus earnings forecasts with:
- 机构数量 (Num_analysts): Number of analysts
- 预测均值 (Consensus): Consensus estimate
- 预测最高 (High_estimate): Highest estimate
- 预测最低 (Low_estimate): Lowest estimate
- 标准差 (Std_dev): Standard deviation
"""
# Get consensus earnings data
consensus_earnings = ak.stock_profit_forecast_em(symbol="000001")import akshare as ak
def stock_revenue_forecast_em(symbol: str) -> pd.DataFrame:
"""
Revenue forecast data from East Money
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Revenue projections and growth rates
"""
# Get revenue forecasts
revenue_forecasts = ak.stock_revenue_forecast_em(symbol="000001")import akshare as ak
def stock_recommend() -> pd.DataFrame:
"""
Stock analyst recommendations summary
Returns:
pd.DataFrame: Recommendation data with columns:
- 代码 (Code): Stock code
- 名称 (Name): Stock name
- 最新评级 (Latest_rating): Latest rating
- 上次评级 (Previous_rating): Previous rating
- 目标价 (Target_price): Price target
- 机构名称 (Institution): Research institution
- 分析师 (Analyst): Analyst name
- 评级日期 (Rating_date): Rating date
"""
def stock_recommend_detail(symbol: str) -> pd.DataFrame:
"""
Detailed analyst recommendations for individual stock
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Detailed recommendation history
"""
# Get overall recommendations
recommendations = ak.stock_recommend()
print(recommendations.head())
# 代码 名称 最新评级 上次评级 目标价 机构名称 分析师 评级日期
# 0 000001 平安银行 买入 增持 12.50 中金公司 张三 2024-12-01
# 1 000002 万科A 增持 买入 9.80 国泰君安 李四 2024-11-30
# Get individual stock recommendations
stock_recommendations = ak.stock_recommend_detail(symbol="000001")import akshare as ak
def stock_rating_all() -> pd.DataFrame:
"""
Comprehensive stock rating distribution
Returns:
pd.DataFrame: Rating statistics across all stocks
"""
def stock_rating_change() -> pd.DataFrame:
"""
Recent rating changes and upgrades/downgrades
Returns:
pd.DataFrame: Rating change activity
"""
# Get rating distribution
rating_distribution = ak.stock_rating_all()
# Get recent rating changes
rating_changes = ak.stock_rating_change()import akshare as ak
def stock_dividend_detail(symbol: str) -> pd.DataFrame:
"""
Detailed dividend history for individual stock
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Dividend history with columns:
- 分红年度 (Year): Dividend year
- 送股比例 (Bonus_ratio): Bonus share ratio
- 转增比例 (Conversion_ratio): Capital reserve conversion
- 派息比例 (Dividend_ratio): Cash dividend ratio
- 除权除息日 (Ex_date): Ex-dividend date
- 股息率 (Yield): Dividend yield
"""
# Get dividend history
dividend_history = ak.stock_dividend_detail(symbol="000001")import akshare as ak
def stock_holder_em(symbol: str) -> pd.DataFrame:
"""
Shareholding structure and major shareholders
Parameters:
symbol: Stock code
Returns:
pd.DataFrame: Shareholder information with columns:
- 股东名称 (Shareholder): Shareholder name
- 持股数量 (Shares): Number of shares held
- 持股比例 (Percentage): Ownership percentage
- 股东性质 (Type): Shareholder type
- 报告期 (Period): Reporting period
"""
# Get shareholding structure
shareholders = ak.stock_holder_em(symbol="000001")import akshare as ak
import pandas as pd
def comprehensive_fundamental_analysis(symbol: str) -> dict:
"""
Complete fundamental analysis for a stock
Parameters:
symbol: Stock code
Returns:
dict: Comprehensive fundamental data
"""
analysis = {}
try:
# Financial statements and ratios
analysis['financial_indicators'] = ak.stock_financial_analysis_indicator_em(symbol)
analysis['financial_abstract'] = ak.stock_financial_abstract(symbol)
analysis['balance_sheet'] = ak.stock_balance_sheet_by_report_em(symbol)
analysis['cash_flow'] = ak.stock_cash_flow_sheet_by_report_em(symbol)
analysis['roe_analysis'] = ak.stock_roe_em(symbol)
# Forward-looking data
analysis['earnings_forecast'] = ak.stock_profit_forecast_ths(symbol)
analysis['consensus_estimates'] = ak.stock_profit_forecast_em(symbol)
analysis['revenue_forecast'] = ak.stock_revenue_forecast_em(symbol)
# Analyst coverage
analysis['recommendations'] = ak.stock_recommend_detail(symbol)
# Corporate information
analysis['dividend_history'] = ak.stock_dividend_detail(symbol)
analysis['shareholders'] = ak.stock_holder_em(symbol)
except Exception as e:
print(f"Error retrieving data for {symbol}: {e}")
return analysis
def sector_fundamental_comparison(sector_stocks: list) -> pd.DataFrame:
"""
Compare fundamental metrics across sector stocks
Parameters:
sector_stocks: List of stock codes in the same sector
Returns:
pd.DataFrame: Comparative fundamental analysis
"""
comparison_data = []
for symbol in sector_stocks:
try:
# Get key metrics
indicators = ak.stock_financial_analysis_indicator_em(symbol)
abstract = ak.stock_financial_abstract(symbol)
# Extract key metrics for comparison
stock_data = {
'symbol': symbol,
'revenue_growth': None, # Extract from indicators
'profit_growth': None, # Extract from abstract
'roe': None, # Extract from indicators
'pe_ratio': None, # Calculate or extract
'debt_ratio': None # Extract from balance sheet
}
comparison_data.append(stock_data)
except Exception as e:
print(f"Error processing {symbol}: {e}")
return pd.DataFrame(comparison_data)
# Usage examples
# comprehensive_data = comprehensive_fundamental_analysis("000001")
# sector_comparison = sector_fundamental_comparison(["000001", "000002", "600036"])import akshare as ak
def fundamental_screening(criteria: dict) -> pd.DataFrame:
"""
Screen stocks based on fundamental criteria
Parameters:
criteria: Dictionary of screening criteria
Returns:
pd.DataFrame: Stocks meeting the criteria
"""
# Get overall market data
earnings_forecasts = ak.stock_profit_forecast()
recommendations = ak.stock_recommend()
# Apply screening logic
screened_stocks = []
for _, row in earnings_forecasts.iterrows():
symbol = row['代码']
# Apply criteria (example logic)
if (criteria.get('min_growth', 0) <= row.get('预测收益增长率', 0) and
criteria.get('max_pe', 100) >= row.get('预测PE', 0)):
screened_stocks.append({
'symbol': symbol,
'name': row.get('名称'),
'forecast_eps_growth': row.get('预测收益增长率'),
'forward_pe': row.get('预测PE')
})
return pd.DataFrame(screened_stocks)
def create_fundamental_dashboard(symbols: list) -> dict:
"""
Create fundamental analysis dashboard for multiple stocks
Parameters:
symbols: List of stock symbols to analyze
Returns:
dict: Dashboard data for fundamental analysis
"""
dashboard = {
'earnings_forecasts': {},
'financial_health': {},
'valuation_metrics': {},
'analyst_coverage': {}
}
for symbol in symbols:
try:
dashboard['earnings_forecasts'][symbol] = ak.stock_profit_forecast_em(symbol)
dashboard['financial_health'][symbol] = ak.stock_financial_analysis_indicator_em(symbol)
dashboard['analyst_coverage'][symbol] = ak.stock_recommend_detail(symbol)
except Exception as e:
print(f"Error creating dashboard for {symbol}: {e}")
return dashboard
# Usage examples
screening_criteria = {
'min_growth': 10, # Minimum 10% earnings growth
'max_pe': 20 # Maximum P/E ratio of 20
}
# screened_results = fundamental_screening(screening_criteria)
# dashboard = create_fundamental_dashboard(["000001", "000002", "600036"])The fundamental analysis capabilities in AKShare provide comprehensive tools for equity research, company valuation, and investment decision-making based on financial statement analysis and forward-looking estimates.
Install with Tessl CLI
npx tessl i tessl/pypi-akshare