zipline icon indicating copy to clipboard operation
zipline copied to clipboard

Error in retrieving custom ingested minute data

Open pratiksgith opened this issue 5 years ago • 4 comments

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

pratiksgith avatar May 24 '20 09:05 pratiksgith

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

tstevens02127 avatar Jun 10 '20 22:06 tstevens02127

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

vinceperkins avatar Jan 17 '21 07:01 vinceperkins

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

tstevens02127 avatar Jan 21 '21 20:01 tstevens02127

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?

vinceperkins avatar Jul 31 '22 05:07 vinceperkins