backtesting.py icon indicating copy to clipboard operation
backtesting.py copied to clipboard

how to get correct 15min value by using resample_apply with 1min data

Open zha0yangchen opened this issue 1 year ago • 1 comments

Expected Behavior

Expected data should same as this high = pd.DataFrame({'high': self.data.High}, index=self.data.index).resample('15min').agg('max').dropna().values[:, 0][-500:]

Actual Behavior

but when i use self.High = resample_apply('15min', None, self.data.High) and print( self.High[-1], high[-1]), the value of self.high is incorrect, but high[-1] is corrct.

Steps to Reproduce


python code goes here

Additional info

  • Backtesting version: 0.?.?
  • bokeh.__version__:
  • OS:

zha0yangchen avatar May 17 '24 08:05 zha0yangchen

I get better results by resampling the dataframe prior to using it in the backtest:

e.g

import pandas as pd import yfinance as yf

df = yf.download('AAPL', period='5y', interval='1d') # rounding=True

df1 = df.resample('2d').agg({'Open': 'first', 'High': 'max', 'Low': 'min', 'Close': 'last', 'Volume': 'sum'})

Hope it helps

BL0987 avatar Jun 08 '24 21:06 BL0987

high = pd.DataFrame({'high': self.data.High}, index=self.data.index).resample('15min').agg('max').dropna().values[:, 0][-500:]

You should have compared with label="right":

high = self.data.High.s.resample('15min', label='right').agg('max') ...

or at least that's what resample_apply() does.

kernc avatar Feb 18 '25 11:02 kernc