yfinance 是一个 Python 库,用于从 Yahoo Finance 获取金融数据。它可以下载历史行情、获取股票基本信息、分析趋势,操作简单高效。这篇教程会带你从安装到实际使用,把核心功能过一遍。


1. 安装

先确保系统已安装 yfinance

pip install yfinance

2. 下载历史股票数据

yfinance.download 方法获取历史股价:

import yfinance as yf

# 指定股票代码和日期范围
data = yf.download("AAPL", start="2020-01-01", end="2023-12-31")

# 显示前几行数据
print(data.head())

这段代码获取了 Apple(AAPL)在指定日期范围内的历史数据。

自定义参数
  • 同时下载多只股票数据:
data = yf.download(["AAPL", "MSFT", "GOOGL"], start="2020-01-01", end="2023-12-31")
  • 调整数据间隔(日线、周线等):
data = yf.download("AAPL", interval="1wk")

3. 获取股票信息

通过 Ticker 对象获取股票的详细信息:

# 创建 Ticker 对象
apple = yf.Ticker("AAPL")

# 获取公司信息
info = apple.info
print(info)

# 提取特定字段
print("行业:", info.get("sector"))
print("市值:", info.get("marketCap"))
其他可用信息
  • 历史分红:
print(apple.dividends)
  • 拆股记录:
print(apple.splits)
  • 分析师建议:
print(apple.recommendations)

4. 获取财务报表

可以获取利润表、资产负债表和现金流量表:

# 利润表
print(apple.financials)

# 资产负债表
print(apple.balance_sheet)

# 现金流量表
print(apple.cashflow)

5. 下载期权数据

获取股票的期权数据:

# 可用的期权到期日列表
print(apple.options)

# 获取指定日期的期权链
options_chain = apple.option_chain("2024-01-19")
print(options_chain.calls)
print(options_chain.puts)

6. 股票趋势分析

yfinance 可以和 pandasmatplotlib 配合做数据分析和可视化:

import matplotlib.pyplot as plt

data['Close'].plot(title="AAPL Stock Price")
plt.xlabel("Date")
plt.ylabel("Close Price")
plt.show()

7. 使用建议

  • 数据缓存:用 yfinance.cache_enabled() 启用缓存,减少 API 调用次数。
  • 错误处理:大批量请求时一定要加异常处理逻辑。
  • 频率限制:注意 Yahoo Finance 的 API 调用频率限制,避免被封。

yfinance 让金融数据获取变得简单直接,是量化研究和数据分析的基础工具之一。