pybacktest icon indicating copy to clipboard operation
pybacktest copied to clipboard

load_from_yahoo raises Exception.

Open haje01 opened this issue 7 years ago • 2 comments

When running this:

import pybacktest
ohlc = pybacktest.load_from_yahoo('SPY')

Raises error:


---------------------------------------------------------------------------
OverflowError                             Traceback (most recent call last)
<ipython-input-14-09359e4057e9> in <module>()
----> 1 ohlc = pybacktest.load_from_yahoo('SPY')

~/.pyenv/versions/3.5.3/envs/acdt/lib/python3.5/site-packages/pybacktest/data.py in load_from_yahoo(ticker, start, adjust_close)
     24              for t in ticker})
     25 
---> 26     data = dr.DataReader(ticker, data_source='yahoo', start=start)
     27     r = data['Adj Close'] / data['Close']
     28     ohlc_cols = ['Open', 'High', 'Low', 'Close']

~/.pyenv/versions/3.5.3/envs/acdt/lib/python3.5/site-packages/pandas_datareader/data.py in DataReader(name, data_source, start, end, retry_count, pause, session, access_key)
    119                                 adjust_price=False, chunksize=25,
    120                                 retry_count=retry_count, pause=pause,
--> 121                                 session=session).read()
    122 
    123     elif data_source == "yahoo-actions":

~/.pyenv/versions/3.5.3/envs/acdt/lib/python3.5/site-packages/pandas_datareader/yahoo/daily.py in read(self)
    113         """ read one data from specified URL """
    114         try:
--> 115             df = super(YahooDailyReader, self).read()
    116             if self.ret_index:
    117                 df['Ret_Index'] = _calc_return_index(df['Adj Close'])

~/.pyenv/versions/3.5.3/envs/acdt/lib/python3.5/site-packages/pandas_datareader/base.py in read(self)
    179         if isinstance(self.symbols, (compat.string_types, int)):
    180             df = self._read_one_data(self.url,
--> 181                                      params=self._get_params(self.symbols))
    182         # Or multiple symbols, (e.g., ['GOOG', 'AAPL', 'MSFT'])
    183         elif isinstance(self.symbols, DataFrame):

~/.pyenv/versions/3.5.3/envs/acdt/lib/python3.5/site-packages/pandas_datareader/yahoo/daily.py in _get_params(self, symbol)
     97 
     98     def _get_params(self, symbol):
---> 99         unix_start = int(time.mktime(self.start.timetuple()))
    100         day_end = self.end.replace(hour=23, minute=59, second=59)
    101         unix_end = int(time.mktime(day_end.timetuple()))

OverflowError: mktime argument out of range

haje01 avatar Jan 12 '18 01:01 haje01

I got the same thing while running the tutorial. I think the Yahoo feed reader is no longer compatible with Yahoo's website.

To test it, just load a simple csv file to load some data.

plankconst avatar Feb 10 '19 01:02 plankconst

another option is to set the 'start' i.e. the start-time range of our query to yahoo finance. The snippet bellow queries from January 1, 2012 to present.

import pybacktest
import pandas as pd
from datetime import datetime, timedelta
ohlc = pybacktest.load_from_yahoo('SPY',start=datetime(2012, 10, 1) )
```

git-it avatar May 14 '19 04:05 git-it