2020-04-11 Yahoo! Finance金融市场数据下载器

自从雅虎财经停止了他们的历史数据API,许多依赖它的程序停止工作。yfinance旨在通过提供一种可靠的、线程化的(threaded)、Pythonic的方式从Yahoo! finance下载历史市场数据来解决这个问题。

注:该库最初命名为fix-yahoo-finance,但后来作者将其重命名为yfinance,因为作者不再认为它只是一个“修复”器。出于竞争力落后的原因,fix-yahoo-finance现在导入并使用yfinance,但您应该直接安装并使用yfinance

可以通过查阅 Blog post 获取更多代码教程。

Ticker模块

Ticker()模块可以使我们能以一种更安全更Pythonic的方式获取金融市场数据:

import yfinance as yf
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
msft = yf.Ticker("MSFT")
print(msft)

# get stock info
msft.info

# get historical market data
msft.history(period="max")

# show actions (dividends, splits)
msft.actions

# show dividends
msft.dividends

# show splits
msft.splits
yfinance.Ticker object <MSFT>
Date
1987-09-21    2.0
1990-04-16    2.0
1991-06-27    1.5
1992-06-15    1.5
1994-05-23    2.0
1996-12-09    2.0
1998-02-23    2.0
1999-03-29    2.0
2003-02-18    2.0
Name: Stock Splits, dtype: float64

Available paramaters for the history() method are:

period: data period to download (Either Use period parameter or use start and end) Valid periods are: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max
interval: data interval (intraday data cannot extend last 60 days) Valid intervals are: 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo
start: If not using period - Download start date string (YYYY-MM-DD) or datetime.
end: If not using period - Download end date string (YYYY-MM-DD) or datetime.
prepost: Include Pre and Post market data in results? (Default is False)
auto_adjust: Adjust all OHLC automatically? (Default is True)
actions: Download stock dividends and stock splits events? (Default is True)

批量下载市场数据:

您也可以像以前一样一次下载多个股票的数据。

import yfinance as yf
data = yf.download("SPY AAPL", start="2017-01-01", end="2017-04-30")

[*********************100%***********************] 2 of 2 completed

例如想要获取股票 SPY收盘价格, 你可以使用: data['Close']['SPY'].
如果你想通过Symbol对数据进行分组可以使用:

import yfinance as yf
data = yf.download("SPY AAPL", start="2017-01-01", end="2017-04-30",
 group_by="ticker")

[*********************100%***********************] 2 of 2 completed

要获取SPY的收盘价数据,请使用:data['SPY']['Close']

当一次下载大量symbols时,download()方法接受一个额外的参数-threads以加快完成速度。

注意:为保持与旧版本的兼容性,批量下载时,auto_adjust默认为False

使用pandas_datareader:

如果使用的是历史遗留代码并且用的是pandas_datareader,如果你希望将代码更改保持在最小,则只需调用override方法并保持代码原样即可:

from pandas_datareader import data as pdr
from pandas.util.testing import assert_frame_equal
import yfinance as yf
yf.pdr_override() # <== 就像这样用 :-)
# download dataframe using pandas_datareader
data = pdr.get_data_yahoo("SPY", start="2017-01-01", end="2017-04-30")

[*********************100%***********************] 1 of 1 completed

安装或升级该库使用:

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

需要注意的是:

可选项(if you want to use pandas_datareader)

参考学习资料:
https://github.com/ranaroussi/yfinance
https://github.com/ranaroussi/yfinance/blob/master/CHANGELOG.rst
总算是找到了之前为什么不能完全复现别人的代码了,没有使用大招yf.pdr_override(),软件更新提高性能是好事,但是老改参数或语法学习过程还是要查更新说明书才行。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容