Error in retrieving custom ingested minute data
Dear Zipline Maintainers,
Before I tell you about my issue, let me describe my environment:
Environment
- Operating System: Windows10 64bit
- Python Version: 3.5.6
- Python Bitness: 64
- How did you install Zipline: conda
- Python packages:
Name Version Build Channel
alembic 0.7.7 py35_0 Quantopian asn1crypto 0.24.0 py35_0 attrs 19.3.0 pypi_0 pypi backcall 0.1.0 pypi_0 pypi bcolz 0.12.1 np114py35_0 Quantopian beautifulsoup4 4.9.0 pypi_0 pypi blas 1.0 mkl bleach 3.1.1 pypi_0 pypi blosc 1.16.3 h7bd577a_0 bottleneck 1.2.1 py35h452e1ab_1 bzip2 1.0.8 he774522_0 ca-certificates 2020.1.1 0 certifi 2018.8.24 py35_1 cffi 1.11.5 py35h74b6da3_1 chardet 3.0.4 py35_1 click 7.0 py_0 colorama 0.4.3 pypi_0 pypi contextlib2 0.6.0.post1 py_0 cryptography 2.3.1 py35h74b6da3_0 cycler 0.10.0 pypi_0 pypi cyordereddict 0.2.2 py35_0 Quantopian cython 0.28.5 py35h6538335_0 decorator 4.4.1 py_0 defusedxml 0.6.0 pypi_0 pypi empyrical 0.5.0 py35_0 Quantopian entrypoints 0.3 pypi_0 pypi hdf5 1.10.2 hac2f561_1 icc_rt 2019.0.0 h0cc432a_1 idna 2.7 py35_0 importlib-metadata 1.5.0 pypi_0 pypi intel-openmp 2019.4 245 intervaltree 2.1.0 py35_0 Quantopian ipykernel 5.1.4 pypi_0 pypi ipython 7.9.0 pypi_0 pypi ipython-genutils 0.2.0 pypi_0 pypi ipywidgets 7.5.1 pypi_0 pypi jedi 0.16.0 pypi_0 pypi jinja2 2.11.1 pypi_0 pypi jsonschema 3.2.0 pypi_0 pypi jupyter 1.0.0 pypi_0 pypi jupyter-client 5.3.4 pypi_0 pypi jupyter-console 6.1.0 pypi_0 pypi jupyter-core 4.6.3 pypi_0 pypi kiwisolver 1.1.0 pypi_0 pypi libiconv 1.15 h1df5818_7 libxml2 2.9.9 h464c3ec_0 libxslt 1.1.33 h579f668_0 logbook 0.12.5 py35_0 Quantopian lru-dict 1.1.4 py35_0 Quantopian lxml 4.2.5 py35hef2cd61_0 lz4-c 1.8.1.2 h2fa13f4_0 lzo 2.10 h6df0209_2 mako 1.1.1 py_0 markupsafe 1.0 py35hfa6e2cd_1 matplotlib 3.0.3 pypi_0 pypi mistune 0.8.4 pypi_0 pypi mkl 2018.0.3 1 multipledispatch 0.6.0 py35_0 nbconvert 5.6.1 pypi_0 pypi nbformat 5.0.4 pypi_0 pypi networkx 1.11 py35_1 notebook 6.0.3 pypi_0 pypi numexpr 2.6.1 np114py35_0 Quantopian numpy 1.14.2 py35h5c71026_0 openssl 1.0.2u he774522_0 pandas 0.22.0 py35h6538335_0 pandas-datareader 0.8.1 py_0 pandocfilters 1.4.2 pypi_0 pypi parso 0.6.1 pypi_0 pypi patsy 0.5.0 py35_0 pickleshare 0.7.5 pypi_0 pypi pip 20.0.2 pypi_0 pypi prometheus-client 0.7.1 pypi_0 pypi prompt-toolkit 2.0.10 pypi_0 pypi pycparser 2.19 py35_0 pygments 2.5.2 pypi_0 pypi pyopenssl 18.0.0 py35_0 pyparsing 2.4.6 pypi_0 pypi pyrsistent 0.15.7 pypi_0 pypi pysocks 1.6.8 py35_0 pytables 3.4.4 py35he6f6034_0 python 3.5.6 he025d50_0 python-dateutil 2.8.1 py_0 pytz 2019.3 py_0 pywin32 227 pypi_0 pypi pywinpty 0.5.7 pypi_0 pypi pyzmq 18.1.1 pypi_0 pypi qtconsole 4.6.0 pypi_0 pypi requests 2.20.1 py35_0 Quantopian requests-file 1.4.3 py35_0 scipy 1.1.0 py35hc28095f_0 send2trash 1.5.0 pypi_0 pypi setuptools 40.2.0 py35_0 simplejson 3.17.0 pypi_0 pypi six 1.11.0 py35_1 snappy 1.1.7 h777316e_3 sortedcontainers 1.4.4 py35_0 Quantopian soupsieve 2.0 pypi_0 pypi sqlalchemy 1.2.11 py35hfa6e2cd_0 statsmodels 0.9.0 py35h452e1ab_0 terminado 0.8.3 pypi_0 pypi testpath 0.4.4 pypi_0 pypi toolz 0.10.0 py_0 tornado 6.0.3 pypi_0 pypi trading-calendars 1.11.1 py35_0 Quantopian traitlets 4.3.3 pypi_0 pypi urllib3 1.23 py35_0 vc 14.1 h0510ff6_4 vs2015_runtime 14.16.27012 hf0eaf9b_1 wcwidth 0.1.8 pypi_0 pypi webencodings 0.5.1 pypi_0 pypi wheel 0.31.1 py35_0 widgetsnbextension 3.5.1 pypi_0 pypi win-unicode-console 0.5 pypi_0 pypi win_inet_pton 1.0.1 py35_1 wincertstore 0.2 py35hfebbdb8_0 xz 5.2.4 h2fa13f4_4 yahoo-finance 1.4.0 pypi_0 pypi yahoofinancials 1.5 pypi_0 pypi zipline 1.3.0 np114py35_0 Quantopian zipp 1.2.0 pypi_0 pypi zlib 1.2.11 h62dcd97_3 zstd 1.3.7 h508b16e_0
Now that you know a little about me, let me tell you about the issue I am having:
Description of Issue
-
What did you expect to happen? I expected to get minute by minute historical price of selected stock
-
What happened instead? Following error thrown on jupyter notebook
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-36-94654fcbe4e5> in <module>
----> 1 get_ipython().run_cell_magic('zipline', '--start 2019-1-2 --end 2019-1-3 --bundle nse_stocks --trading-calendar XBOM --data-frequency minute', "\nfrom zipline.api import symbol\n\ndef initialize(context):\n context.asset = symbol('INFY')\n\ndef handle_data(context,data):\n hist_prices = data.history(context.asset, ['price','open','high'], bar_count=1, frequency='1m')\n print (hist_prices)\n")
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\IPython\core\interactiveshell.py in run_cell_magic(self, magic_name, line, cell)
2357 with self.builtin_trap:
2358 args = (magic_arg_s, cell)
-> 2359 result = fn(*args, **kwargs)
2360 return result
2361
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\__main__.py in zipline_magic(line, cell)
309 '%s%%zipline' % ((cell or '') and '%'),
310 # don't use system exit and propogate errors to the caller
--> 311 standalone_mode=False,
312 )
313 except SystemExit as e:
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\click\core.py in main(self, args, prog_name, complete_var, standalone_mode, **extra)
715 try:
716 with self.make_context(prog_name, args, **extra) as ctx:
--> 717 rv = self.invoke(ctx)
718 if not standalone_mode:
719 return rv
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\click\core.py in invoke(self, ctx)
954 _maybe_show_deprecated_notice(self)
955 if self.callback is not None:
--> 956 return ctx.invoke(self.callback, **ctx.params)
957
958
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\click\core.py in invoke(*args, **kwargs)
553 with augment_usage_errors(self):
554 with ctx:
--> 555 return callback(*args, **kwargs)
556
557 def forward(*args, **kwargs):
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\click\decorators.py in new_func(*args, **kwargs)
15 """
16 def new_func(*args, **kwargs):
---> 17 return f(get_current_context(), *args, **kwargs)
18 return update_wrapper(new_func, f)
19
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\__main__.py in run(ctx, algofile, algotext, define, data_frequency, capital_base, bundle, bundle_timestamp, start, end, output, trading_calendar, print_algo, metrics_set, local_namespace, blotter)
274 local_namespace=local_namespace,
275 environ=os.environ,
--> 276 blotter=blotter,
277 )
278
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\utils\run_algo.py in _run(handle_data, initialize, before_trading_start, analyze, algofile, algotext, defines, data_frequency, capital_base, data, bundle, bundle_timestamp, start, end, output, trading_calendar, print_algo, metrics_set, local_namespace, environ, blotter)
227 ).run(
228 data,
--> 229 overwrite_sim_params=False,
230 )
231
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\algorithm.py in run(self, data, overwrite_sim_params)
754 try:
755 perfs = []
--> 756 for perf in self.get_generator():
757 perfs.append(perf)
758
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\gens\tradesimulation.py in transform(self)
204 for dt, action in self.clock:
205 if action == BAR:
--> 206 for capital_change_packet in every_bar(dt):
207 yield capital_change_packet
208 elif action == SESSION_START:
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\gens\tradesimulation.py in every_bar(dt_to_use, current_data, handle_data)
132 metrics_tracker.process_commission(commission)
133
--> 134 handle_data(algo, current_data, dt_to_use)
135
136 # grab any new orders from the blotter, then clear the list.
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\utils\events.py in handle_data(self, context, data, dt)
214 context,
215 data,
--> 216 dt,
217 )
218
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\utils\events.py in handle_data(self, context, data, dt)
233 """
234 if self.rule.should_trigger(dt):
--> 235 self.callback(context, data)
236
237
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\algorithm.py in handle_data(self, data)
467 def handle_data(self, data):
468 if self._handle_data:
--> 469 self._handle_data(self, data)
470
471 def analyze(self, perf):
<algorithm> in handle_data(context, data)
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\_protocol.pyx in zipline._protocol.check_parameters.__call__.assert_keywords_and_call (zipline\_protocol.c:3747)()
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\_protocol.pyx in zipline._protocol.BarData.history (zipline\_protocol.c:9544)()
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\data_portal.py in get_history_window(self, assets, end_dt, bar_count, frequency, field, data_frequency, ffill)
969 if field == "price":
970 df = self._get_history_minute_window(assets, end_dt, bar_count,
--> 971 "close")
972 else:
973 df = self._get_history_minute_window(assets, end_dt, bar_count,
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\data_portal.py in _get_history_minute_window(self, assets, end_dt, bar_count, field_to_use)
904 assets,
905 field_to_use,
--> 906 minutes_for_window,
907 )
908
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\data_portal.py in _get_minute_window_data(self, assets, field, minutes_for_window)
1061 minutes_for_window,
1062 field,
-> 1063 False)
1064
1065 def _get_daily_window_data(self,
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\history_loader.py in history(self, assets, dts, field, is_perspective_after)
547 dts,
548 field,
--> 549 is_perspective_after)
550 end_ix = self._calendar.searchsorted(dts[-1])
551
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\history_loader.py in _ensure_sliding_windows(self, assets, dts, field, is_perspective_after)
448 if adj_reader is not None:
449 adjs = adj_reader.load_adjustments(
--> 450 [field], adj_dts, [asset])[0]
451 else:
452 adjs = {}
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\history_loader.py in load_adjustments(self, columns, dts, assets)
59 for asset in assets:
60 adjs.update(self._get_adjustments_in_range(
---> 61 asset, dts, column))
62 out[i] = adjs
63 return out
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\history_loader.py in _get_adjustments_in_range(self, asset, dts, field)
144 0,
145 0,
--> 146 ratio)
147 try:
148 adjs[adj_loc].append(mult)
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\lib\adjustment.pyx in zipline.lib.adjustment.Float64Adjustment.__init__ (zipline/lib\adjustment.c:7357)()
c:\users\user.name\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\lib\adjustment.pyx in zipline.lib.adjustment.Adjustment.__init__ (zipline/lib\adjustment.c:6443)()
ValueError: first_row must be in the range [0, last_row], got: first_row=0 last_row=-1
Here is how you can reproduce this issue on your machine:
Reproduction Steps
1.Ingest minute data
a.Remove 2019-03-02 as holiday in XBOM trading calendar as it wasn't a holiday b. Ingest minute data infy.txt
My code below
start_session = pd.Timestamp('2019-01-01', tz='utc')
end_session = pd.Timestamp('2019-01-03', tz='utc')
register(
'nse_stocks', # name we select for the bundle
csvdir_equities(
# name of the directory as specified above (named after data frequency)
['minute'],
# path to directory containing the
'C:\\Users\\user.name\\.zipline\\data\\folder_name',
),
calendar_name='XBOM', # Euronext Amsterdam
start_session=start_session,
end_session=end_session
)
3.Code to run on notebook
%load_ext zipline
%%zipline --start 2019-1-2 --end 2019-1-3 --bundle nse_stocks --trading-calendar XBOM --data-frequency minute
from zipline.api import symbol
def initialize(context):
context.asset = symbol('INFY')
def handle_data(context,data):
hist_prices = data.history(context.asset, ['price','open','high'], bar_count=1, frequency='1d')
print (hist_prices)
What steps have you taken to resolve this already?
a. Tried changing the timezone in extension file start_session = pd.Timestamp('2019-01-01', tz='Asia/Calcutta')
b.Tried changing the time to utc in source data. I mean tried using
2019-01-01 3:45:00+0000,660.95,661.5,659.25,660.15,14323,0,0 instead of 2019-01-01 9:15:00+0530,660.95,661.5,659.25,660.15,14323,0,0
Anything else?
1.When I use 1d frequency while calling history api, code executes.
%%zipline --start 2019-1-2 --end 2019-1-3 --bundle nse_stocks --trading-calendar XBOM --data-frequency minute
from zipline.api import symbol
def initialize(context):
context.asset = symbol('INFY')
def handle_data(context,data):
hist_prices = data.history(context.asset, ['price','open','high'], bar_count=1, frequency='1d')
print (hist_prices)
This prints the data like
high open price
2019-01-02 00:00:00+00:00 664.65 663.0 664.5
high open price
2019-01-02 00:00:00+00:00 666.5 663.0 666.4
high open price
2019-01-02 00:00:00+00:00 668.8 663.0 668.8
high open price
2019-01-02 00:00:00+00:00 669.0 663.0 668.25
high open price
2019-01-02 00:00:00+00:00 669.0 663.0 667.4
2.When I invoke the algorithm with daily frequency, it throws key error
%%zipline --start 2019-1-2 --end 2019-1-3 --bundle nse_stocks --trading-calendar XBOM --data-frequency daily
from zipline.api import symbol
def initialize(context):
context.asset = symbol('INFY')
def handle_data(context,data):
hist_prices = data.history(context.asset, ['price','open','high'], bar_count=1, frequency='1d')
print (hist_prices)
Output
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-40-50bcf36c61f1> in <module>
----> 1 get_ipython().run_cell_magic('zipline', '--start 2019-1-2 --end 2019-1-3 --bundle nse_stocks --trading-calendar XBOM --data-frequency daily', "\nfrom zipline.api import symbol\n\ndef initialize(context):\n context.asset = symbol('INFY')\n\ndef handle_data(context,data):\n hist_prices = data.history(context.asset, ['price','open','high'], bar_count=1, frequency='1d')\n print (hist_prices)\n")
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\IPython\core\interactiveshell.py in run_cell_magic(self, magic_name, line, cell)
2357 with self.builtin_trap:
2358 args = (magic_arg_s, cell)
-> 2359 result = fn(*args, **kwargs)
2360 return result
2361
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\__main__.py in zipline_magic(line, cell)
309 '%s%%zipline' % ((cell or '') and '%'),
310 # don't use system exit and propogate errors to the caller
--> 311 standalone_mode=False,
312 )
313 except SystemExit as e:
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\click\core.py in main(self, args, prog_name, complete_var, standalone_mode, **extra)
715 try:
716 with self.make_context(prog_name, args, **extra) as ctx:
--> 717 rv = self.invoke(ctx)
718 if not standalone_mode:
719 return rv
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\click\core.py in invoke(self, ctx)
954 _maybe_show_deprecated_notice(self)
955 if self.callback is not None:
--> 956 return ctx.invoke(self.callback, **ctx.params)
957
958
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\click\core.py in invoke(*args, **kwargs)
553 with augment_usage_errors(self):
554 with ctx:
--> 555 return callback(*args, **kwargs)
556
557 def forward(*args, **kwargs):
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\click\decorators.py in new_func(*args, **kwargs)
15 """
16 def new_func(*args, **kwargs):
---> 17 return f(get_current_context(), *args, **kwargs)
18 return update_wrapper(new_func, f)
19
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\__main__.py in run(ctx, algofile, algotext, define, data_frequency, capital_base, bundle, bundle_timestamp, start, end, output, trading_calendar, print_algo, metrics_set, local_namespace, blotter)
274 local_namespace=local_namespace,
275 environ=os.environ,
--> 276 blotter=blotter,
277 )
278
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\utils\run_algo.py in _run(handle_data, initialize, before_trading_start, analyze, algofile, algotext, defines, data_frequency, capital_base, data, bundle, bundle_timestamp, start, end, output, trading_calendar, print_algo, metrics_set, local_namespace, environ, blotter)
227 ).run(
228 data,
--> 229 overwrite_sim_params=False,
230 )
231
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\algorithm.py in run(self, data, overwrite_sim_params)
754 try:
755 perfs = []
--> 756 for perf in self.get_generator():
757 perfs.append(perf)
758
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\gens\tradesimulation.py in transform(self)
204 for dt, action in self.clock:
205 if action == BAR:
--> 206 for capital_change_packet in every_bar(dt):
207 yield capital_change_packet
208 elif action == SESSION_START:
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\gens\tradesimulation.py in every_bar(dt_to_use, current_data, handle_data)
132 metrics_tracker.process_commission(commission)
133
--> 134 handle_data(algo, current_data, dt_to_use)
135
136 # grab any new orders from the blotter, then clear the list.
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\utils\events.py in handle_data(self, context, data, dt)
214 context,
215 data,
--> 216 dt,
217 )
218
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\utils\events.py in handle_data(self, context, data, dt)
233 """
234 if self.rule.should_trigger(dt):
--> 235 self.callback(context, data)
236
237
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\algorithm.py in handle_data(self, data)
467 def handle_data(self, data):
468 if self._handle_data:
--> 469 self._handle_data(self, data)
470
471 def analyze(self, perf):
<algorithm> in handle_data(context, data)
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\_protocol.pyx in zipline._protocol.check_parameters.__call__.assert_keywords_and_call (zipline\_protocol.c:3747)()
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\_protocol.pyx in zipline._protocol.BarData.history (zipline\_protocol.c:9544)()
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\data_portal.py in get_history_window(self, assets, end_dt, bar_count, frequency, field, data_frequency, ffill)
962 if field == "price":
963 df = self._get_history_daily_window(assets, end_dt, bar_count,
--> 964 "close", data_frequency)
965 else:
966 df = self._get_history_daily_window(assets, end_dt, bar_count,
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\data_portal.py in _get_history_daily_window(self, assets, end_dt, bar_count, field_to_use, data_frequency)
804
805 data = self._get_history_daily_window_data(
--> 806 assets, days_for_window, end_dt, field_to_use, data_frequency
807 )
808 return pd.DataFrame(
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\data_portal.py in _get_history_daily_window_data(self, assets, days_for_window, end_dt, field_to_use, data_frequency)
827 field_to_use,
828 days_for_window,
--> 829 extra_slot=False
830 )
831 else:
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\data_portal.py in _get_daily_window_data(self, assets, field, days_in_window, extra_slot)
1115 days_in_window,
1116 field,
-> 1117 extra_slot)
1118 if extra_slot:
1119 return_array[:len(return_array) - 1, :] = data
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\history_loader.py in history(self, assets, dts, field, is_perspective_after)
547 dts,
548 field,
--> 549 is_perspective_after)
550 end_ix = self._calendar.searchsorted(dts[-1])
551
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\history_loader.py in _ensure_sliding_windows(self, assets, dts, field, is_perspective_after)
429 adj_dts = prefetch_dts
430 prefetch_len = len(prefetch_dts)
--> 431 array = self._array(prefetch_dts, needed_assets, field)
432
433 if field == 'sid':
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\history_loader.py in _array(self, dts, assets, field)
571 dts[0],
572 dts[-1],
--> 573 assets,
574 )[0]
575
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\dispatch_bar_reader.py in load_raw_arrays(self, fields, start_dt, end_dt, sids)
118 end_dt,
119 sid_groups[t])
--> 120 for t in asset_types if sid_groups[t]}
121
122 results = []
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\dispatch_bar_reader.py in <dictcomp>(.0)
118 end_dt,
119 sid_groups[t])
--> 120 for t in asset_types if sid_groups[t]}
121
122 results = []
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\us_equity_pricing.py in load_raw_arrays(self, columns, start_date, end_date, assets)
627 start_idx,
628 end_idx,
--> 629 assets,
630 )
631 read_all = len(assets) > self._read_all_threshold
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\us_equity_pricing.py in _compute_slices(self, start_idx, end_idx, assets)
617 start_idx,
618 end_idx,
--> 619 assets,
620 )
621
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\_equities.pyx in zipline.data._equities._compute_row_slices (zipline/data\_equities.c:2829)()
c:\users\pratik.bhopal\appdata\local\continuum\miniconda3\envs\env_zipline\lib\site-packages\zipline\data\_equities.pyx in zipline.data._equities._compute_row_slices (zipline/data\_equities.c:2527)()
KeyError: 0
...
Sincerely,
$ whoami
I've been trying to run minute-level backtests with some issues that appear similar to yours. I've got it to work now but my output has a strange quality. Even though I have minute level data like you do:
2020-05-08 09:44:00+00:00 2020-05-08 09:45:00+00:00 2020-05-08 09:46:00+00:00
My output zeros out everything but the day, tossing the hour and minute detail out (again, same as yours). So, for a given trading day, I've got a series of +400 lines of results that all share the same timestamp (that day's date). Did you figure out a way to pull through the hour/minute level detail through to the output level? Output:
2020-05-08 00:00:00+00:00 2020-05-08 00:00:00+00:00 2020-05-08 00:00:00+00:00
Hi @tstevens02127, how were you able to avoid the KeyError: 0 error when running data.history?
If I recall correctly, yes, I was able to avoid that KeyError
I am attempting to use zipline locally again with minute data. I've only gotten daily data to work. Could someone provide a link to a minute data .csv file with the correct formatting?