quantopian / zipline

Zipline, a Pythonic Algorithmic Trading Library
https://www.zipline.io
Apache License 2.0
17.26k stars 4.67k forks source link

Error in retrieving custom ingested minute data #2716

Open pratiksgith opened 4 years ago

pratiksgith commented 4 years ago

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

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):

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](https://github.com/quantopian/zipline/files/4673188/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) in ----> 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): 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 (.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`
tstevens02127 commented 4 years ago

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

vinceperkins commented 3 years ago

Hi @tstevens02127, how were you able to avoid the KeyError: 0 error when running data.history?

tstevens02127 commented 3 years ago

If I recall correctly, yes, I was able to avoid that KeyError

vinceperkins commented 1 year ago

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?