0

I am trying to test a hypothesis on outperformance of a trading strategy over the buy and hold. I have original data's returns containing 1261 observations as a sample to be used for bootstrap.

I want to know if I have applied it correctly.

def back_test_series(x):
    df= pd.DataFrame(x, columns= ['Close'])
    return df.Close
from arch.bootstrap import CircularBlockBootstrap

bs = CircularBlockBootstrap(40, sample_return)
results = bs.apply(back_test_series, 2500)

Above, sample_return is the sample containing 2761 returns on actual data. I created 2500 bootstrapped samples containing 2761 observations each.

and then created a cummulative return to get price time series.

time_series = []
for simu in results:    
    df = pd.DataFrame(simu, columns=["Close"])
    df['Close'] =  (1+df).cumprod()
    time_series.append(df)

and finally ran my backtesting in the price series obatained from bootstrap.

final_results = []
for simulation in enumerate(time_series):
    x = Backtesting.scrip_backtest(simulation)
    final_results.append(x)

Backtesting.scrip_backtest is my trading strategy which will return stats like buy and hold cagr, strategy cagr, std dev of strategy returns.

My question is can I use bootstrap in this way? Should I use MovingBlockBootstrap or CircularBlockBootstrap?

It it correct to run trading strategy on bootstrapped time series as mentioned above?

Arun Lama
  • 23
  • 7

0 Answers0