1 votos

¿Cómo construir una función de bucle para el backtesting fuera de muestra?

Muchas bibliotecas estadísticas en R ofrecen la posibilidad de ajustar un modelo y luego utilizar los resultados de la optimización para predecir valores con algunos períodos de antelación. Sin embargo, muchas no tienen la posibilidad de hacer backtest de los resultados fuera de la muestra.

Por lo tanto, quiero construir una función de R que me permita (enfoque de avance):

  1. Definir un conjunto de entrenamiento utilizando una ventana móvil (cada vez que se realiza un bucle, se elimina la observación más antigua y se añade la más reciente)
  2. Ejecutar el optimizador para calibrar el modelo
  3. Utilizar el modelo calibrado para generar una previsión de n pasos adelante
  4. Almacenar el nuevo pronóstico en un vector de valores pronosticados fuera de la muestra (junto con la fecha del pronóstico)
  5. Bucle a través de 1-4 He probado lo siguiente (x es la longitud del conjunto fuera de muestra, n la longitud fija del conjunto de entrenamiento):

    for (j in range (0:x)){ append <- vector() forecast <- vector() set <- train [j+1:n+j,] fit <- fit(data = set, model) forecast <- predict(fit, ahead = 1) append <- cbind(lubridate::as_date(ts_date[n+j+1]), forecast) forc <- rbind(forc, append) }

Sin embargo, la matriz forc sólo contiene el primer y el último resultado del bucle.

¿Alguien puede detectar un error aquí?

2voto

Charles Chen Puntos 183

Es necesario eliminar la llamada a range . En Python es necesario pero aquí sólo devuelve el elemento más pequeño y más grande del vector.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X