or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

economic-data.mdfinancial-instruments.mdfundamental-analysis.mdindex.mdmarket-indices.mdstock-data.md

fundamental-analysis.mddocs/

0

# Fundamental Analysis

1

2

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.

3

4

## Financial Statement Data

5

6

### Income Statement Analysis

7

8

#### Comprehensive Financial Indicators

9

```python { .api }

10

import akshare as ak

11

12

def stock_financial_analysis_indicator_em(symbol: str) -> pd.DataFrame:

13

"""

14

Comprehensive financial analysis indicators from East Money

15

16

Parameters:

17

symbol: Stock code (e.g., "000001")

18

19

Returns:

20

pd.DataFrame: Financial indicators with columns:

21

- 指标名称 (Indicator): Financial metric name

22

- 报告期 (Period): Reporting period

23

- 指标值 (Value): Metric value

24

- 同比增长率 (YoY_growth): Year-over-year growth rate

25

- 行业平均 (Industry_avg): Industry average

26

- 行业排名 (Industry_rank): Industry ranking

27

"""

28

29

# Get comprehensive financial analysis for Ping An Bank

30

financial_indicators = ak.stock_financial_analysis_indicator_em(symbol="000001")

31

print(financial_indicators.head())

32

# 指标名称 报告期 指标值 同比增长率 行业平均 行业排名

33

# 0 营业收入 2024Q3 1234.56 12.34 987.65 5

34

# 1 净利润 2024Q3 456.78 8.76 321.09 3

35

# 2 ROE 2024Q3 15.67 1.23 12.45 2

36

# 3 ROA 2024Q3 1.89 0.34 1.45 4

37

```

38

39

#### Financial Abstract Data

40

```python { .api }

41

import akshare as ak

42

43

def stock_financial_abstract(symbol: str = "000001") -> pd.DataFrame:

44

"""

45

Financial statement abstract and key metrics

46

47

Parameters:

48

symbol: Stock code

49

50

Returns:

51

pd.DataFrame: Financial abstract with columns:

52

- 报告期 (Period): Reporting period

53

- 营业收入 (Revenue): Operating revenue

54

- 营业收入同比增长 (Revenue_growth): Revenue YoY growth

55

- 净利润 (Net_profit): Net profit

56

- 净利润同比增长 (Profit_growth): Net profit YoY growth

57

- 每股收益 (EPS): Earnings per share

58

- 净资产收益率 (ROE): Return on equity

59

- 每股净资产 (BVPS): Book value per share

60

- 每股经营现金流 (CFPS): Cash flow per share

61

"""

62

63

# Get financial abstract

64

financial_abstract = ak.stock_financial_abstract(symbol="000001")

65

print(financial_abstract.head())

66

# 报告期 营业收入 营业收入同比增长 净利润 净利润同比增长 每股收益 净资产收益率 每股净资产 每股经营现金流

67

# 0 2024Q3 1567.89 12.34 234.56 8.76 0.89 15.67 5.67 1.23

68

# 1 2024Q2 1456.78 10.23 212.34 7.89 0.81 14.89 5.45 1.15

69

```

70

71

### Balance Sheet Data

72

73

#### Balance Sheet by Report Period

74

```python { .api }

75

import akshare as ak

76

77

def stock_balance_sheet_by_report_em(symbol: str = "000001") -> pd.DataFrame:

78

"""

79

Balance sheet data by reporting period

80

81

Parameters:

82

symbol: Stock code

83

84

Returns:

85

pd.DataFrame: Balance sheet items with columns:

86

- 报告期 (Period): Reporting period

87

- 货币资金 (Cash): Cash and equivalents

88

- 总资产 (Total_assets): Total assets

89

- 总负债 (Total_liabilities): Total liabilities

90

- 股东权益合计 (Total_equity): Total shareholders' equity

91

- 资产负债率 (Debt_ratio): Debt-to-assets ratio

92

- 流动比率 (Current_ratio): Current ratio

93

- 速动比率 (Quick_ratio): Quick ratio

94

"""

95

96

def stock_balance_sheet_by_yearly_em(symbol: str = "000001") -> pd.DataFrame:

97

"""

98

Annual balance sheet data

99

100

Parameters:

101

symbol: Stock code

102

103

Returns:

104

pd.DataFrame: Annual balance sheet data

105

"""

106

107

# Get quarterly balance sheet data

108

balance_sheet_q = ak.stock_balance_sheet_by_report_em(symbol="000001")

109

110

# Get annual balance sheet data

111

balance_sheet_y = ak.stock_balance_sheet_by_yearly_em(symbol="000001")

112

```

113

114

### Cash Flow Statement

115

116

#### Cash Flow Analysis

117

```python { .api }

118

import akshare as ak

119

120

def stock_cash_flow_sheet_by_report_em(symbol: str = "000001") -> pd.DataFrame:

121

"""

122

Cash flow statement by reporting period

123

124

Parameters:

125

symbol: Stock code

126

127

Returns:

128

pd.DataFrame: Cash flow data with columns:

129

- 报告期 (Period): Reporting period

130

- 经营活动现金流量净额 (Operating_cf): Operating cash flow

131

- 投资活动现金流量净额 (Investing_cf): Investing cash flow

132

- 筹资活动现金流量净额 (Financing_cf): Financing cash flow

133

- 现金及现金等价物净增加额 (Net_cf): Net change in cash

134

- 自由现金流 (Free_cf): Free cash flow

135

"""

136

137

def stock_cash_flow_sheet_by_yearly_em(symbol: str = "000001") -> pd.DataFrame:

138

"""

139

Annual cash flow statement data

140

141

Parameters:

142

symbol: Stock code

143

144

Returns:

145

pd.DataFrame: Annual cash flow data

146

"""

147

148

# Get cash flow data

149

cash_flow_q = ak.stock_cash_flow_sheet_by_report_em(symbol="000001")

150

cash_flow_y = ak.stock_cash_flow_sheet_by_yearly_em(symbol="000001")

151

```

152

153

## Financial Ratio Analysis

154

155

### Profitability Ratios

156

157

#### Detailed Financial Ratios

158

```python { .api }

159

import akshare as ak

160

161

def stock_financial_hk_report_em(symbol: str) -> pd.DataFrame:

162

"""

163

Hong Kong listed stock financial ratios

164

165

Parameters:

166

symbol: HK stock code

167

168

Returns:

169

pd.DataFrame: Financial ratios and metrics

170

"""

171

172

def stock_roe_em(symbol: str = "000001") -> pd.DataFrame:

173

"""

174

Return on Equity (ROE) analysis and components

175

176

Parameters:

177

symbol: Stock code

178

179

Returns:

180

pd.DataFrame: ROE decomposition with columns:

181

- 报告期 (Period): Reporting period

182

- 净资产收益率 (ROE): Return on equity

183

- 净利润率 (Net_margin): Net profit margin

184

- 资产周转率 (Asset_turnover): Asset turnover ratio

185

- 权益乘数 (Equity_multiplier): Equity multiplier

186

- 杜邦分析 (DuPont): DuPont analysis components

187

"""

188

189

# Get ROE analysis

190

roe_analysis = ak.stock_roe_em(symbol="000001")

191

print(roe_analysis.head())

192

# 报告期 净资产收益率 净利润率 资产周转率 权益乘数

193

# 0 2024Q3 15.67 8.45 0.89 2.08

194

# 1 2024Q2 14.89 8.12 0.87 2.11

195

```

196

197

### Valuation Metrics

198

199

#### Market Valuation Indicators

200

```python { .api }

201

import akshare as ak

202

203

def stock_a_pe_lg() -> pd.DataFrame:

204

"""

205

A-share market PE ratio distribution

206

207

Returns:

208

pd.DataFrame: Market PE statistics and distribution

209

"""

210

211

def stock_a_indicator_lg() -> pd.DataFrame:

212

"""

213

A-share market valuation indicators

214

215

Returns:

216

pd.DataFrame: Market-wide valuation metrics including:

217

- 平均市盈率 (Avg_PE): Average P/E ratio

218

- 平均市净率 (Avg_PB): Average P/B ratio

219

- 平均股息率 (Avg_dividend): Average dividend yield

220

- 总市值 (Total_mv): Total market cap

221

- 流通市值 (Float_mv): Floating market cap

222

"""

223

224

# Get market PE distribution

225

market_pe = ak.stock_a_pe_lg()

226

227

# Get market valuation indicators

228

market_valuation = ak.stock_a_indicator_lg()

229

```

230

231

## Earnings and Forecasts

232

233

### Earnings Forecast Data

234

235

#### Analyst Earnings Forecasts

236

```python { .api }

237

import akshare as ak

238

239

def stock_profit_forecast() -> pd.DataFrame:

240

"""

241

Earnings forecast summary across all stocks

242

243

Returns:

244

pd.DataFrame: Earnings forecasts with columns:

245

- 代码 (Code): Stock code

246

- 名称 (Name): Stock name

247

- 2024预测每股收益 (EPS_2024F): 2024 forecast EPS

248

- 2025预测每股收益 (EPS_2025F): 2025 forecast EPS

249

- 2026预测每股收益 (EPS_2026F): 2026 forecast EPS

250

- 预测PE (Forecast_PE): Forward P/E ratio

251

- 预测收益增长率 (Growth_rate): Forecast earnings growth

252

"""

253

254

def stock_profit_forecast_ths(symbol: str) -> pd.DataFrame:

255

"""

256

Individual stock earnings forecast from Tonghuashun

257

258

Parameters:

259

symbol: Stock code

260

261

Returns:

262

pd.DataFrame: Detailed earnings forecasts for individual stock

263

"""

264

265

# Get overall earnings forecasts

266

earnings_forecasts = ak.stock_profit_forecast()

267

print(earnings_forecasts.head())

268

# 代码 名称 2024预测每股收益 2025预测每股收益 2026预测每股收益 预测PE 预测收益增长率

269

# 0 000001 平安银行 1.45 1.67 1.89 7.2 15.2

270

# 1 000002 万科A 0.89 1.02 1.15 8.7 14.6

271

272

# Get individual stock forecast

273

individual_forecast = ak.stock_profit_forecast_ths(symbol="000001")

274

```

275

276

#### Earnings Surprise Analysis

277

```python { .api }

278

import akshare as ak

279

280

def stock_profit_forecast_em(symbol: str) -> pd.DataFrame:

281

"""

282

East Money earnings forecast and consensus

283

284

Parameters:

285

symbol: Stock code

286

287

Returns:

288

pd.DataFrame: Consensus earnings forecasts with:

289

- 机构数量 (Num_analysts): Number of analysts

290

- 预测均值 (Consensus): Consensus estimate

291

- 预测最高 (High_estimate): Highest estimate

292

- 预测最低 (Low_estimate): Lowest estimate

293

- 标准差 (Std_dev): Standard deviation

294

"""

295

296

# Get consensus earnings data

297

consensus_earnings = ak.stock_profit_forecast_em(symbol="000001")

298

```

299

300

### Revenue Forecasts

301

302

#### Revenue Growth Projections

303

```python { .api }

304

import akshare as ak

305

306

def stock_revenue_forecast_em(symbol: str) -> pd.DataFrame:

307

"""

308

Revenue forecast data from East Money

309

310

Parameters:

311

symbol: Stock code

312

313

Returns:

314

pd.DataFrame: Revenue projections and growth rates

315

"""

316

317

# Get revenue forecasts

318

revenue_forecasts = ak.stock_revenue_forecast_em(symbol="000001")

319

```

320

321

## Analyst Coverage and Recommendations

322

323

### Analyst Recommendations

324

325

#### Stock Recommendations

326

```python { .api }

327

import akshare as ak

328

329

def stock_recommend() -> pd.DataFrame:

330

"""

331

Stock analyst recommendations summary

332

333

Returns:

334

pd.DataFrame: Recommendation data with columns:

335

- 代码 (Code): Stock code

336

- 名称 (Name): Stock name

337

- 最新评级 (Latest_rating): Latest rating

338

- 上次评级 (Previous_rating): Previous rating

339

- 目标价 (Target_price): Price target

340

- 机构名称 (Institution): Research institution

341

- 分析师 (Analyst): Analyst name

342

- 评级日期 (Rating_date): Rating date

343

"""

344

345

def stock_recommend_detail(symbol: str) -> pd.DataFrame:

346

"""

347

Detailed analyst recommendations for individual stock

348

349

Parameters:

350

symbol: Stock code

351

352

Returns:

353

pd.DataFrame: Detailed recommendation history

354

"""

355

356

# Get overall recommendations

357

recommendations = ak.stock_recommend()

358

print(recommendations.head())

359

# 代码 名称 最新评级 上次评级 目标价 机构名称 分析师 评级日期

360

# 0 000001 平安银行 买入 增持 12.50 中金公司 张三 2024-12-01

361

# 1 000002 万科A 增持 买入 9.80 国泰君安 李四 2024-11-30

362

363

# Get individual stock recommendations

364

stock_recommendations = ak.stock_recommend_detail(symbol="000001")

365

```

366

367

#### Rating Distribution Analysis

368

```python { .api }

369

import akshare as ak

370

371

def stock_rating_all() -> pd.DataFrame:

372

"""

373

Comprehensive stock rating distribution

374

375

Returns:

376

pd.DataFrame: Rating statistics across all stocks

377

"""

378

379

def stock_rating_change() -> pd.DataFrame:

380

"""

381

Recent rating changes and upgrades/downgrades

382

383

Returns:

384

pd.DataFrame: Rating change activity

385

"""

386

387

# Get rating distribution

388

rating_distribution = ak.stock_rating_all()

389

390

# Get recent rating changes

391

rating_changes = ak.stock_rating_change()

392

```

393

394

## Company Quality Analysis

395

396

### Dividend Analysis

397

398

#### Dividend History and Yield

399

```python { .api }

400

import akshare as ak

401

402

def stock_dividend_detail(symbol: str) -> pd.DataFrame:

403

"""

404

Detailed dividend history for individual stock

405

406

Parameters:

407

symbol: Stock code

408

409

Returns:

410

pd.DataFrame: Dividend history with columns:

411

- 分红年度 (Year): Dividend year

412

- 送股比例 (Bonus_ratio): Bonus share ratio

413

- 转增比例 (Conversion_ratio): Capital reserve conversion

414

- 派息比例 (Dividend_ratio): Cash dividend ratio

415

- 除权除息日 (Ex_date): Ex-dividend date

416

- 股息率 (Yield): Dividend yield

417

"""

418

419

# Get dividend history

420

dividend_history = ak.stock_dividend_detail(symbol="000001")

421

```

422

423

### Corporate Governance

424

425

#### Shareholding Structure

426

```python { .api }

427

import akshare as ak

428

429

def stock_holder_em(symbol: str) -> pd.DataFrame:

430

"""

431

Shareholding structure and major shareholders

432

433

Parameters:

434

symbol: Stock code

435

436

Returns:

437

pd.DataFrame: Shareholder information with columns:

438

- 股东名称 (Shareholder): Shareholder name

439

- 持股数量 (Shares): Number of shares held

440

- 持股比例 (Percentage): Ownership percentage

441

- 股东性质 (Type): Shareholder type

442

- 报告期 (Period): Reporting period

443

"""

444

445

# Get shareholding structure

446

shareholders = ak.stock_holder_em(symbol="000001")

447

```

448

449

## Fundamental Analysis Workflows

450

451

### Comprehensive Company Analysis

452

```python { .api }

453

import akshare as ak

454

import pandas as pd

455

456

def comprehensive_fundamental_analysis(symbol: str) -> dict:

457

"""

458

Complete fundamental analysis for a stock

459

460

Parameters:

461

symbol: Stock code

462

463

Returns:

464

dict: Comprehensive fundamental data

465

"""

466

467

analysis = {}

468

469

try:

470

# Financial statements and ratios

471

analysis['financial_indicators'] = ak.stock_financial_analysis_indicator_em(symbol)

472

analysis['financial_abstract'] = ak.stock_financial_abstract(symbol)

473

analysis['balance_sheet'] = ak.stock_balance_sheet_by_report_em(symbol)

474

analysis['cash_flow'] = ak.stock_cash_flow_sheet_by_report_em(symbol)

475

analysis['roe_analysis'] = ak.stock_roe_em(symbol)

476

477

# Forward-looking data

478

analysis['earnings_forecast'] = ak.stock_profit_forecast_ths(symbol)

479

analysis['consensus_estimates'] = ak.stock_profit_forecast_em(symbol)

480

analysis['revenue_forecast'] = ak.stock_revenue_forecast_em(symbol)

481

482

# Analyst coverage

483

analysis['recommendations'] = ak.stock_recommend_detail(symbol)

484

485

# Corporate information

486

analysis['dividend_history'] = ak.stock_dividend_detail(symbol)

487

analysis['shareholders'] = ak.stock_holder_em(symbol)

488

489

except Exception as e:

490

print(f"Error retrieving data for {symbol}: {e}")

491

492

return analysis

493

494

def sector_fundamental_comparison(sector_stocks: list) -> pd.DataFrame:

495

"""

496

Compare fundamental metrics across sector stocks

497

498

Parameters:

499

sector_stocks: List of stock codes in the same sector

500

501

Returns:

502

pd.DataFrame: Comparative fundamental analysis

503

"""

504

505

comparison_data = []

506

507

for symbol in sector_stocks:

508

try:

509

# Get key metrics

510

indicators = ak.stock_financial_analysis_indicator_em(symbol)

511

abstract = ak.stock_financial_abstract(symbol)

512

513

# Extract key metrics for comparison

514

stock_data = {

515

'symbol': symbol,

516

'revenue_growth': None, # Extract from indicators

517

'profit_growth': None, # Extract from abstract

518

'roe': None, # Extract from indicators

519

'pe_ratio': None, # Calculate or extract

520

'debt_ratio': None # Extract from balance sheet

521

}

522

523

comparison_data.append(stock_data)

524

525

except Exception as e:

526

print(f"Error processing {symbol}: {e}")

527

528

return pd.DataFrame(comparison_data)

529

530

# Usage examples

531

# comprehensive_data = comprehensive_fundamental_analysis("000001")

532

# sector_comparison = sector_fundamental_comparison(["000001", "000002", "600036"])

533

```

534

535

### Screening and Ranking

536

```python { .api }

537

import akshare as ak

538

539

def fundamental_screening(criteria: dict) -> pd.DataFrame:

540

"""

541

Screen stocks based on fundamental criteria

542

543

Parameters:

544

criteria: Dictionary of screening criteria

545

546

Returns:

547

pd.DataFrame: Stocks meeting the criteria

548

"""

549

550

# Get overall market data

551

earnings_forecasts = ak.stock_profit_forecast()

552

recommendations = ak.stock_recommend()

553

554

# Apply screening logic

555

screened_stocks = []

556

557

for _, row in earnings_forecasts.iterrows():

558

symbol = row['代码']

559

560

# Apply criteria (example logic)

561

if (criteria.get('min_growth', 0) <= row.get('预测收益增长率', 0) and

562

criteria.get('max_pe', 100) >= row.get('预测PE', 0)):

563

564

screened_stocks.append({

565

'symbol': symbol,

566

'name': row.get('名称'),

567

'forecast_eps_growth': row.get('预测收益增长率'),

568

'forward_pe': row.get('预测PE')

569

})

570

571

return pd.DataFrame(screened_stocks)

572

573

def create_fundamental_dashboard(symbols: list) -> dict:

574

"""

575

Create fundamental analysis dashboard for multiple stocks

576

577

Parameters:

578

symbols: List of stock symbols to analyze

579

580

Returns:

581

dict: Dashboard data for fundamental analysis

582

"""

583

584

dashboard = {

585

'earnings_forecasts': {},

586

'financial_health': {},

587

'valuation_metrics': {},

588

'analyst_coverage': {}

589

}

590

591

for symbol in symbols:

592

try:

593

dashboard['earnings_forecasts'][symbol] = ak.stock_profit_forecast_em(symbol)

594

dashboard['financial_health'][symbol] = ak.stock_financial_analysis_indicator_em(symbol)

595

dashboard['analyst_coverage'][symbol] = ak.stock_recommend_detail(symbol)

596

597

except Exception as e:

598

print(f"Error creating dashboard for {symbol}: {e}")

599

600

return dashboard

601

602

# Usage examples

603

screening_criteria = {

604

'min_growth': 10, # Minimum 10% earnings growth

605

'max_pe': 20 # Maximum P/E ratio of 20

606

}

607

608

# screened_results = fundamental_screening(screening_criteria)

609

# dashboard = create_fundamental_dashboard(["000001", "000002", "600036"])

610

```

611

612

## Data Quality and Coverage

613

614

### Data Characteristics

615

- **Reporting Frequency**: Quarterly and annual financial statements

616

- **Forecast Horizon**: Typically 1-3 years forward-looking estimates

617

- **Analyst Coverage**: Major research institutions and independent analysts

618

- **Historical Depth**: Multi-year financial statement history

619

620

### Update Schedule

621

- **Financial Statements**: Updated after quarterly earnings releases

622

- **Analyst Forecasts**: Updated continuously as analysts revise estimates

623

- **Recommendations**: Updated as analysts issue new research reports

624

- **Dividend Data**: Updated after dividend announcements

625

626

### Common Applications

627

1. **Equity Valuation**: DCF modeling and relative valuation analysis

628

2. **Investment Screening**: Identifying stocks meeting specific criteria

629

3. **Risk Assessment**: Financial health and leverage analysis

630

4. **Sector Analysis**: Comparative fundamental analysis within industries

631

5. **Earnings Analysis**: Tracking earnings trends and analyst expectations

632

6. **Dividend Investing**: Identifying sustainable dividend-paying stocks

633

634

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.