Home > Software engineering >  Backtesting in R for time series
Backtesting in R for time series

Time:02-23

I am new to the backtesting methodology - algorithm in order to assess if something works based on the historical data.Since I am new to that I am trying to keep things simple in order to understand it.So far I have understood that if let's say I have a data set of time series : enter image description here


date = seq(as.Date("2000/1/1"),as.Date("2001/1/31"), by = "day")
n = length(date);n
class(date)
y = rnorm(n)
data = data.frame(date,y)

I will keep the first 365 days that will be the in sample period in order to do something with them and then I will update them with one observation at the time for the next month.Am I correct here ?

So if I am correct, I define the in sample and out of sample periods.

T = dim(data)[1];T
outofsampleperiod = 31
initialsample = T-outofsampleperiod

I want for example to find the quantile of alpha =0.01 of the empirical data.

pre = data[1:initialsample,]
ypre = pre$y
quantile(ypre,0.01)
      1% 
-2.50478 

Now the difficult part for me is to update them in a for loop in R.

I want to add each time one observation and find again the empirical quantile of alpha = 0.01.To print them all and check the condition if is greater than the in sample quantile as resulted previously.


for (i in 1:outofsampleperiod){

 qnew = quantile(1:(initialsample i-1),0.01)
 print(qnew)
   }

CodePudding user response:

You can create a little function that gets the quantile of column y, over rows 1 to i of a frame df like this:

func <- function(i,df) quantile(df[1:i,"y"],.01)

Then apply this function to each row of data

data$qnew = lapply(1:nrow(data),func,df=data)

Output (last six rows)

> tail(data)
          date          y      qnew
392 2001-01-26  1.3505147 -2.253655
393 2001-01-27 -0.5096840 -2.253337
394 2001-01-28 -0.6865489 -2.253019
395 2001-01-29  1.0881961 -2.252701
396 2001-01-30  0.1754646 -2.252383
397 2001-01-31  0.5929567 -2.252065
  • Related