如何构建用于样本外回测的循环函数?

How to build a loop function for out-of-sample backtesting?

R 中的许多统计库提供了拟合模型的可能性,然后使用优化结果来预测未来一些时期的值。但是,许多人无法对样本外的结果进行回测。

因此,我想构建一个允许我(向前走方法)的 R 函数:

  1. 使用移动window定义训练集(每个循环时间,删除最旧的观察并添加最新的)
  2. 运行 优化器从而校准模型
  3. 使用校准模型生成 n 步提前预测
  4. 将新预测存储在样本外预测值的向量中(连同预测日期)
  5. 循环 1-4

我尝试了以下(x是样本外集的长度,n是训练集的固定长度):

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)
}

然而,矩阵forc只包含循环的第一个和最后一个结果。

谁能找出这里的错误?

R 中的范围 returns 只有循环的第一个和最后一个结果