The Ticker module, which allows you to access ticker data in a more Pythonic way:
Note: yahoo finance datetimes are received as UTC.
pip install yfinance
pip install yfinance --upgrade --no-cache-dir
conda install -c ranaroussi yfinance
import yfinance as yfmsft = yf.Ticker("MSFT")# get stock infomsft.info# get historical market datahist = msft.history(period="max")# show actions (dividends, splits)msft.actions# show dividendsmsft.dividends# show splitsmsft.splits# show financialsmsft.financialsmsft.quarterly_financials# show major holdersmsft.major_holders# show institutional holdersmsft.institutional_holders# show balance sheetmsft.balance_sheetmsft.quarterly_balance_sheet# show cashflowmsft.cashflowmsft.quarterly_cashflow# show earningsmsft.earningsmsft.quarterly_earnings# show sustainabilitymsft.sustainability# show analysts recommendationsmsft.recommendations# show next event (earnings, etc)msft.calendar# show ISIN code - *experimental*# ISIN = International Securities Identification Numbermsft.isin# show options expirationsmsft.options# get option chain for specific expirationopt = msft.option_chain('YYYY-MM-DD')# data available via: opt.calls, opt.puts
To initialize multiple Ticker objects, use
import yfinance as yftickers = yf.Tickers('msft aapl goog')# ^ returns a named tuple of Ticker objects# access each ticker using (example)tickers.tickers.MSFT.infotickers.tickers.AAPL.history(period="1mo")tickers.tickers.GOOG.actions
Fetching data for multiple tickers
import yfinance as yfdata = yf.download("SPY AAPL", start="2017-01-01", end="2017-04-30")
added some options to make life easier
data = yf.download( # or pdr.get_data_yahoo(...# tickers list or string as well tickers ="SPY AAPL MSFT",# use "period" instead of start/end# valid periods: 1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max# (optional, default is '1mo') period ="ytd",# fetch data by interval (including intraday if period < 60 days)# valid intervals: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo# (optional, default is '1d') interval ="1m",# group by ticker (to access via data['SPY'])# (optional, default is 'column') group_by ='ticker',# adjust all OHLC automatically# (optional, default is False) auto_adjust =True,# download pre/post regular market hours data# (optional, default is False) prepost =True,# use threads for mass downloading? (True/False/Integer)# (optional, default is True) threads =True,# proxy URL scheme use use when downloading?# (optional, default is None) proxy =None )
pandas_datareader override
If your code uses pandas_datareader and you want to download data faster, you can “hijack” pandas_datareader.data.get_data_yahoo() method to use yfinance while making sure the returned data is in the same format as pandas_datareader’s get_data_yahoo().
from pandas_datareader import data as pdrimport yfinance as yfyf.pdr_override()# <== that's all it takes :-)# download dataframedata = pdr.get_data_yahoo("SPY", start="2017-01-01", end="2017-04-30")