For my master thesis I am analyzing the performance of trading strategies. For this I need to avoid data snooping by utilising the FDR approach. I follow closely the procedure presented by Bajgrowicz & Scaillet (2012) in their paper Technical Trading revisited: False discoveries, persistence tests, and transaction costs. Journal of Financial Economics, Volume 106, Issue 3, December 2012, Pages 473-491 link

However I became a bit stuck. I have several different time series of returns generated with trading rules and a buy and hold portfolio. These trading rules are either on an intraday or daily basis. Now, Bajwgrowicz & Scaillet describe the following procedure (see attached picture, i hope it is fine to copy from the paper).

][Appendix A(1/2)] ][Appendix A(2\2)]

I now want to integrate this into R. For this i utilize the tsboot function and specified the parameters. Lets take for example one time series generated by the trading rules and name it ma.bt. However I am not sure if the formula and the parameters as I specified them are correct. the output I get from running the function is always somewhere around 0.4 or 0.5 - which does not make much sense for me as a p-value.

Hope everything is clear in my posted question. Excuse me if anything is posted wrong - it is my first time asking a question around here.

bootstrap.p <- function(rule, statistic = ts_function, b = 10) {
  # statistic used as per step 2: AR function
  ts_function <- function(tsb) {
    ar.fit <- ar(tsb, demean = T)
    c(ar.fit$order, mean(tsb), tsb)
  # bootstrapping sample
  ts <- tsboot(rule, statistic, R = 500, l = b, sim = "geom")

  # reshifting theta so that is meaned at 0
  ts.H0 <- ts$t - mean(ts$t)
  p.value <- (mean(abs(ts.H0) > abs(ts$t0)))




Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.