量化交易学习(四十五)yfinance库的安装使用

经常在一些教程里看到使用雅虎财经的数据,今天试着找了一个
yfinance库来从雅虎获取数据。因为雅虎已经不对中国大陆地区提供服务了,所以想要用yfinance库必须科学上网。

科学上网后的页面:

yfinance是什么?

yfinance是Ran Aroussi开发的一个流行的开源库,用于访问雅虎财经上提供的财务数据。

雅虎财经提供一系列优质的股票、债券、货币和加密货币市场数据。它还提供市场新闻、报告和分析以及期权和基本面数据,使其在一些竞争对手中脱颖而出。

雅虎财经曾经拥有自己的官方 API,但由于数据广泛滥用,该 API 已于 2017 年 5 月 15 日停用。

如今,存在一系列非官方 API 和库来访问相同的数据,当然包括 yfinance。

请注意,您可能知道 yfinance 的旧名称 - fix-yahoo-finance,因为它于 2019 年 5 月 26 日重新命名,同时进行了大修以修复一些可用性问题。

为了确保向后兼容性,fix-yahoo-finance 现在无论如何都会导入并使用 yfinance,但 Ran Aroussi 仍然建议直接安装并使用 yfinance。

在本文中,我们将主要关注 yfinance 库,但我们在父文章Yahoo Finance API – 完整指南中更深入地讨论了选项的整体范围和其他替代提供商。

我如何开始使用 yfinance 库?

安装

yfinance 库的入门非常简单。

它具有以下依赖关系:

  • pandas >= 0.24
  • numpy >= 1.15
  • requests >= 2.21
  • multitasking >= 0.0.7

这些都是 Anaconda 的标准配置,但如果由于某种原因您没有它们,手动安装也非常容易。

之后就很简单了:

1
$ pip install yfinance --upgrade --no-cache-dir

或者

1
$ conda install -c ranaroussi yfinance

安装 yfinance。

库的布局

布局本身也很简单,只有三个模块:

  • yf.Tickers
  • yf.download
  • yf.pandas_datareader

几乎所有的方法都在Tickers模块中。

download模块用于快速下载多个股票的历史数据。

pandas_datareader是为了向后兼容的遗留代码。

如何使用 yfinance 库下载历史数据?

首先,让我们将 yfinance 导入为 yf 并为特定股票(股票)创建一个股票对象:

1
2
3
4
import yfinance as yf

aapl= yf.Ticker("aapl")
aapl

输出:

1
yfinance.Ticker object <AAPL>

请记住,我们现在将这个 aapl 股票行情指示器对象用于几乎所有事情 - 调用它的各种方法。

为了获取历史数据,我们需要使用history()方法,这是yfinance库中最“复杂”的方法。

它采用以下参数作为输入:

  • period:要下载的数据周期(使用周期参数或使用开始和结束)有效周期为:
    • 1d”、“5d”、“1mo”、“3mo”、“6mo”、“1y”、“2y”、“5y”、“10y”、“ytd”、“max”
  • Interval:数据间隔(1m数据仅适用于最近7天,数据间隔<1d适用于最近60天)有效间隔为:
    • 1m”、“2m”、“5m”、“15m”、“30m”、“60m”、“90m”、“1h”、“1d”、“5d”、“1wk”、“1mo”、“3mo” ”
  • start:如果不使用period - 格式为 (yyyy-mm-dd) 或datetime。
  • end:如果不使用period - 格式为 (yyyy-mm-dd) 或datetime。
  • prepost:在结果中包含之前和之后的常规市场数据? (默认为 False)- 通常不需要更改
  • auto_adjust:自动调整所有 OHLC(开盘价/最高价/最低价/收盘价)? (默认为 True)- 始终将其保留为 true,不用担心
  • 行动:下载股票股息和股票分割事件? (默认为 True

这可能看起来有点复杂,但是您一般只需更改周期(或开始和结束)和间隔参数。

举个例子,要获取 Apple 在 02/06/2020 到 07/06/2020(英国格式)之间的 1 分钟历史数据,我们只需使用我们创建并运行的股票代码对象:

1
2
aapl_historical = aapl.history(start="2020-06-02", end="2020-06-07", interval="1m")
aapl_historical

就这么简单!

江达小记