Yahoo! finance has decommissioned their historical data API, causing many programs that relied on it to stop working.
fix-yahoo-finance offers a temporary fix to the problem
by scraping the data from Yahoo! finance using and return a Pandas
DataFrame/Panel in the same format as pandas_datareader's get_data_yahoo()
.
By basically "hijacking" pandas_datareader.data.get_data_yahoo()
method,
fix-yahoo-finance's implantation is easy and only requires to import
fix_yahoo_finance
into your code.
from pandas_datareader import data as pdr
import fix_yahoo_finance as yf
yf.pdr_override() # <== that's all it takes :-)
# download dataframe
data = pdr.get_data_yahoo("SPY", start="2017-01-01", end="2017-04-30")
# download Panel
data = pdr.get_data_yahoo(["SPY", "IWM"], start="2017-01-01", end="2017-04-30")
I've also added some options to make life easier :)
Below is the full list of acceptable parameters:
data = pdr.get_data_yahoo(
# tickers list (single tickers accepts a string as well)
tickers = ["SPY", "IWM", "..."],
# start date (YYYY-MM-DD / datetime.datetime object)
# (optional, defaults is 1950-01-01)
start = "2017-01-01",
# end date (YYYY-MM-DD / datetime.datetime object)
# (optional, defaults is Today)
end = "2017-04-30",
# return a multi-index dataframe
# (optional, default is Panel, which is deprecated)
as_panel = False,
# 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 dividend + stock splits data
# (optional, default is None)
# options are:
# - True (returns history + actions)
# - 'only' (actions only)
actions = True,
# How may threads to use?
threads = 10
# modify historical data's interval to fetch
# (optional, default is 1d)
# Options: 1d (daily), 1wk (weekly), 1mo (monthly data)
interval = "1d"
)
It can also be used as a stand-alone library (without pandas_datareader
) if you want:
import fix_yahoo_finance as yf
data = yf.download("SPY", start="2017-01-01", end="2017-04-30")
Install fix_yahoo_finance
using pip
:
$ pip install fix_yahoo_finance --upgrade --no-cache-dir
- Python >=3.4
- Pandas (tested to work with >=0.18.1)
- Numpy >= 1.11.1
- requests >= 2.14.2
- multitasking >= 0.0.3
- pandas_datareader >= 0.4.0
fix-yahoo-finance is distributed under the GNU Lesser General Public License v3.0. See the LICENSE.txt file in the release for details.
Please drop me an note with any feedback you have.
Ran Aroussi