Resampling data, list index out of range (despite same index)
-
I have two sets of 5 minute data that I am working with, both having the same length and identical index. I originally tried to work with the 5 minute data by adding
timeframe = bt.TimeFrame.Minutes, compression = 5
to the initialization of each data feed (in the GenericCSVData field). I was able to work with the 5 minute data, but had no luck when trying to change the compression to 30, 60, 240 as it would keep sampling the 5 minute data. I then looked into using the resampling feature as follows, in place of where cerebro.adddata() would be:
cerebro.resampledata(data, timeframe=bt.TimeFrame.Minutes, compression = 5)
I am now met by the following error:
--------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-8-4abde8512761> in <module>() 180 print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue()) 181 --> 182 cerebro.plot() 183 ~\Anaconda3\lib\site-packages\backtrader\cerebro.py in plot(self, plotter, numfigs, iplot, start, end, width, height, dpi, tight, use, **kwargs) 989 rfig = plotter.plot(strat, figid=si * 100, 990 numfigs=numfigs, iplot=iplot, --> 991 start=start, end=end, use=use) 992 # pfillers=pfillers2) 993 ~\Anaconda3\lib\site-packages\backtrader\plot\plot.py in plot(self, strategy, figid, numfigs, iplot, start, end, **kwargs) 207 xtemp.append(dt) 208 --> 209 self.pinf.xstart = bisect.bisect_left(dts, xtemp[0]) 210 self.pinf.xend = bisect.bisect_right(dts, xtemp[-1]) 211 IndexError: list index out of range
I'm not quite sure where it's going sour since the two data sets have an identical index and I'm not changing the start/end parameters. I would really appreciate any advice. Thank you for your time.
-
@guwop said in Resampling data, list index out of range (despite same index):
to the initialization of each data feed (in the GenericCSVData field). I was able to work with the 5 minute data, but had no luck when trying to change the compression to 30, 60, 240 as it would keep sampling the 5 minute dat
The platform doesn't know what your data is. You tell the platform the timeframe. There is no magic AI in the background looking over your data and activating resampling for you.
@guwop said in Resampling data, list index out of range (despite same index):
in place of where cerebro.adddata() would be:
cerebro.resampledata(data, timeframe=bt.TimeFrame.Minutes, compression = 5)Yes, this is in the documentation: Docs - Resampling
@guwop said in Resampling data, list index out of range (despite same index):
I'm not quite sure where it's going sour since the two data sets have an identical index and I'm not changing the start/end parameters. I would really appreciate any advice. Thank you for your time.
The problem is with plotting. backtesting is finished and has worked, but the data cannot be synchronized for plotting. There are some cases that produce that behavior.
-
@backtrader, thank you for the explanation, I'll turn on analytics for these cases.
-
@backtrader, it actually seems as though there might be issues with the backtest when using resampledata(). As a basic form of analytics I am using the output of initial portfolio value and final portfolio value as taken from the quickstart page. When using adddata(), I get an output of 16% change in portfolio value, however, when I use resampledata() there is a 0% change in value...
-
@guwop, Apologies, I was using resampledata() when I should have been using replaydata()