使用 Python 从 Yahoo Finance 获取财务数据

pythonserver side programmingprogramming更新于 2024/1/21 17:51:00

交易、投资和其他金融专业人士需要访问财务数据,因为投资研究依赖于它。Yahoo Finance 提供最新的市场统计数据、新闻和分析,是最著名的财务信息来源之一。Python 是一种强大而灵活的编程语言,可用于从 Yahoo Finance 提取财务数据,因此在这篇文章中,我们将使用 yfinance 包来实现这一点。

安装和语法

在开始之前,我们需要安装 yfinance 库,它允许我们从 Python 访问 Yahoo Finance 数据。我们可以使用 Python 包安装程序 pip 安装 yfinance。

pip install yfinance

安装 yfinance 后,我们就可以开始在 Python 脚本中使用它了。导入 yfinance 的语法很简单 −

import yfinance as yf

算法

  • 要从 Yahoo Finance 检索财务数据,我们首先需要创建 yfinance Ticker 类的实例,该类代表特定的股票或其他金融工具。

  • 我们可以通过将股票代码传递给 yf.Ticker() 构造函数来创建 Ticker 实例,如下所示:msft = yf.Ticker("MSFT")

  • 一旦我们有了 Ticker 实例,我们就可以使用其方法来检索财务数据。例如,我们可以使用 history() 方法检索股票的历史价格数据:

    hist = msft.history(period="max")

  • period 参数指定我们要检索数据的时间段。在本例中,我们检索股票的整个历史数据。

  • 我们还可以使用 Ticker 类的其他方法来检索其他类型的财务数据,例如股息、拆分和财务报表。

常用函数

  • yf.Ticker(symbol) − 此方法用于为特定股票代码创建 Ticker 对象。它返回 Ticker 类的一个实例,可用于检索给定股票代码的各种财务数据。

  • ticker.info − 此方法返回一个字典,其中包含有关股票代码的详细信息,例如其名称、行业、部门、交易所和其他财务指标,如市值、股息收益率、市盈率等。

  • ticker.history() − 此方法返回一个 pandas DataFrame,其中包含指定股票代码在指定时间段内的历史 OHLC(开盘价、最高价、最低价、收盘价)价格、交易量和其他财务数据。

  • ticker.recommendations() − 此方法返回一个 pandas DataFrame,其中包含金融分析师对给定股票代码提出的最新建议,包括目标价格、推荐评级和推荐日期。

  • ticker.calendar() − 此方法返回一个 pandas DataFrame,其中包含给定股票代码的即将到来的收益、股息和其他重要事件。

  • ticker.sustainability() − 此方法返回一个 pandas DataFrame,其中包含给定股票代码的可持续性值,例如环境、社会和治理 (ESG) 分数。

  • ticker.options − 此方法返回一个字典,其中包含给定股票代码可用的期权的到期日期和其他详细信息。

更改股票代码以获取特定股票的财务数据。

一些流行的股票代码是 −

股票代码

股票名称

AAPL

Apple Inc.

MSFT

Microsoft Corporation

AMZN

Amazon.com, Inc.

TSLA

Tesla, Inc.

GOOGL

Alphabet Inc. (Google)

示例

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# 为特定股票代码创建 Ticker 对象
ticker = yf.Ticker("AAPL")

# 获取有关股票代码的详细信息
info = ticker.info
print("详细信息:")
for key, value in info.items():
    # 格式化并缩进打印输出
    print(f"{key}: {value}")
    print("-" * 10)

# 获取历史 OHLC 价格和其他财务数据
history = ticker.history(period="1mo")
print("\nHistorical Data:")
print(history)

# 绘制历史价格
plt.plot(history.index, history["Close"])
plt.title(f"{info['shortName']} ({info['symbol']})")
plt.xlabel("Date")
plt.ylabel("Price")
plt.show()

输出

Detailed Information:
address1: One Apple Park Way
----------
city: Cupertino
----------
state: CA
----------
zip: 95014
----------
country: United States
----------
phone: 408 996 1010
----------
website: https://www.apple.com
----------
industry: Consumer Electronics
----------
sector: Technology
----------
fullTimeEmployees: 164000
----------
maxAge: 86400
----------
priceHint: 2
----------
previousClose: 168.54
----------
open: 169.5
----------
dayLow: 167.16
----------
dayHigh: 170.92
----------
regularMarketPreviousClose: 168.54
----------
regularMarketOpen: 169.5
----------
regularMarketDayLow: 167.16
----------
regularMarketDayHigh: 170.92
----------
dividendRate: 0.92
----------
dividendYield: 0.0055
----------
exDividendDate: 1675987200
----------
payoutRatio: 0.1545
----------
fiveYearAvgDividendYield: 0.92
----------
totalRevenue: 387537010688
----------
debtToEquity: 195.868
----------
revenuePerShare: 24.084
----------
returnOnAssets: 0.19569999
----------
returnOnEquity: 1.47943
----------
grossProfits: 170782000000
----------
freeCashflow: 84729126912
----------
operatingCashflow: 109189996544
----------
earningsGrowth: -0.105
----------

Historical Data:

2023-04-21 00:00:00-04:00  165.050003  166.449997  164.490005  165.020004  58311900        0.0           0.0
2023-04-24 00:00:00-04:00  165.000000  165.600006  163.889999  165.330002  41949600        0.0           0.0
2023-04-25 00:00:00-04:00  165.190002  166.309998  163.729996  163.770004  48714100        0.0           0.0
2023-04-26 00:00:00-04:00  163.059998  165.279999  162.800003  163.759995  45498800        0.0           0.0
2023-04-27 00:00:00-04:00  165.190002  168.559998  165.190002  168.410004  64902300        0.0           0.0
2023-04-28 00:00:00-04:00  168.490005  169.850006  167.880005  169.679993  55209200        0.0           0.0
2023-05-01 00:00:00-04:00  169.279999  170.449997  168.639999  169.589996  52472900        0.0           0.0
2023-05-02 00:00:00-04:00  170.089996  170.350006  167.539993  168.539993  48425700        0.0           0.0
2023-05-03 00:00:00-04:00  169.500000  170.919998  167.160004  167.449997  64566300        0.0           0.0

解释

  • 此代码使用 Python 中的 yfinance 库检索特定股票代码(在本例中为"AAPL",代表 Apple Inc.)的财务数据。然后,它会打印有关股票代码的详细信息,检索历史 O​​HLC(开盘价、最高价、最低价、收盘价)价格,并使用 matplotlib 库绘制历史价格。

  • 导入必要的库:yfinance、pandas 和 matplotlib。然后使用 yfinance 中的 Ticker 方法创建 ticker 对象,并将股票代码"AAPL"作为参数传入。

  • 接下来,将 ticker.info 方法返回的字典分配给 info 变量,其中包含有关股票代码的详细信息,例如其名称、行业、市值、市盈率等。然后,代码使用 for 循环和字符串格式以可读格式打印此信息。

  • history 变量被分配由 ticker.history 方法返回的 DataFrame,该方法检索指定股票代码在指定时间段(在本例中为过去一个月)内的历史 OHLC 价格、交易量和其他财务数据。然后以可读格式打印此数据。

  • 最后,使用 matplotlib 绘制历史价格,x 轴表示日期,y 轴表示收盘价。在使用 show 方法显示之前,为绘图指定标题和轴标签。

应用程序

  • 金融分析师 - 可以使用 Python 和 Yahoo Finance 数据来研究公司,决定购买什么,并关注他们的投资组合。

  • 交易算法 - 利用来自 Yahoo Finance 的实时市场数据,Python 可用于构建自动买卖股票的交易算法。

  • 数据分析 - 可以使用 Python 对 Yahoo Finance 数据进行统计分析和可视化财务数据。

结论

对于金融专家、投资者和交易员来说,使用 Python 从 Yahoo Finance 获取财务数据是一种强大的工具。我们可以利用 yfinance 库和 Ticker 类快速访问 Yahoo Finance 上列出的任何股票或金融工具的财务报表、股息信息、拆分信息和历史价格数据。Python 和 Yahoo Finance 是金融行业每个工作人员的必备工具,因为有无数的机会可以评估和利用这些数据。


相关文章