运行 zipline 导致 urlopen 错误 [Errno 11001] getaddrinfo 失败
Running zipline causes urlopen error [Errno 11001] getaddrinfo failed
我正在尝试 运行 zipline
buyapple.py
通过终端 here 描述的示例:
zipline run -f ../../zipline/examples/buyapple.py --start 2000-1-1 --end 2014-1-1 -o buyapple_out.pickle
但它会导致以下错误:
request.py", line 1320, in do_open raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed>
有人知道怎么回事吗?
好像跟雅虎的财务有关系API。
我使用以下方法解决了这个问题:
pip 安装pandas-datareader
pip 安装 fix-yahoo-finance-0.0.18.tar from here
然后使用用户提供的以下代码修补 zipline Benchmarks.py:
import pandas as pd
from six.moves.urllib_parse import urlencode
import pandas_datareader as pdr #NEW
import fix_yahoo_finance as yf #NEW
yf.pdr_override()#NEW
def get_benchmark_returns(symbol, start_date, end_date):
print('NEW')
df = pdr.data.get_data_yahoo(symbol, start=start_date, end=end_date)
df.to_csv('{}_D1.csv'.format(symbol))
return pd.read_csv('{}_D1.csv'.format(symbol),
parse_dates=['Date'],
index_col='Date',
usecols=["Adj Close", "Date"],
squeeze=True, # squeeze tells pandas to make this a Series
# instead of a 1-column DataFrame
).sort_index().tz_localize('UTC').pct_change(1).iloc[1:]
我正在尝试 运行 zipline
buyapple.py
通过终端 here 描述的示例:
zipline run -f ../../zipline/examples/buyapple.py --start 2000-1-1 --end 2014-1-1 -o buyapple_out.pickle
但它会导致以下错误:
request.py", line 1320, in do_open raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed>
有人知道怎么回事吗?
好像跟雅虎的财务有关系API。 我使用以下方法解决了这个问题:
pip 安装pandas-datareader
pip 安装 fix-yahoo-finance-0.0.18.tar from here
然后使用用户提供的以下代码修补 zipline Benchmarks.py:
import pandas as pd
from six.moves.urllib_parse import urlencode
import pandas_datareader as pdr #NEW
import fix_yahoo_finance as yf #NEW
yf.pdr_override()#NEW
def get_benchmark_returns(symbol, start_date, end_date):
print('NEW')
df = pdr.data.get_data_yahoo(symbol, start=start_date, end=end_date)
df.to_csv('{}_D1.csv'.format(symbol))
return pd.read_csv('{}_D1.csv'.format(symbol),
parse_dates=['Date'],
index_col='Date',
usecols=["Adj Close", "Date"],
squeeze=True, # squeeze tells pandas to make this a Series
# instead of a 1-column DataFrame
).sort_index().tz_localize('UTC').pct_change(1).iloc[1:]