在 R 中对时间序列进行回测
Backtesting in R for time series
我对回溯测试方法不熟悉 - 算法是为了根据历史评估某些东西是否有效 data.Since 我是新手,我试图让事情变得简单以便理解 it.So 到目前为止我已经明白,如果假设我有一个时间序列数据集:
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)
我将保留前 365 天作为采样周期,以便对它们进行处理,然后我将在下一次观察时更新它们 month.Am 我在这里更正?
所以如果我是正确的,我定义了样本内和样本外周期。
T = dim(data)[1];T
outofsampleperiod = 31
initialsample = T-outofsampleperiod
例如,我想找到经验数据的 alpha =0.01 的分位数。
pre = data[1:initialsample,]
ypre = pre$y
quantile(ypre,0.01)
1%
-2.50478
现在对我来说最困难的部分是在 R 中的 for 循环中更新它们。
我想每次都添加一个观察值,然后再次找到 alpha = 0 的经验分位数。01.To 打印它们并检查条件是否大于先前结果的样本分位数。
for (i in 1:outofsampleperiod){
qnew = quantile(1:(initialsample+i-1),0.01)
print(qnew)
}
您可以创建一个小函数来获取帧 df
的第 1 行到 i
列 y
的分位数,如下所示:
func <- function(i,df) quantile(df[1:i,"y"],.01)
然后将此函数应用于data
的每一行
data$qnew = lapply(1:nrow(data),func,df=data)
输出(最后六行)
> 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
我对回溯测试方法不熟悉 - 算法是为了根据历史评估某些东西是否有效 data.Since 我是新手,我试图让事情变得简单以便理解 it.So 到目前为止我已经明白,如果假设我有一个时间序列数据集:
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)
我将保留前 365 天作为采样周期,以便对它们进行处理,然后我将在下一次观察时更新它们 month.Am 我在这里更正?
所以如果我是正确的,我定义了样本内和样本外周期。
T = dim(data)[1];T
outofsampleperiod = 31
initialsample = T-outofsampleperiod
例如,我想找到经验数据的 alpha =0.01 的分位数。
pre = data[1:initialsample,]
ypre = pre$y
quantile(ypre,0.01)
1%
-2.50478
现在对我来说最困难的部分是在 R 中的 for 循环中更新它们。
我想每次都添加一个观察值,然后再次找到 alpha = 0 的经验分位数。01.To 打印它们并检查条件是否大于先前结果的样本分位数。
for (i in 1:outofsampleperiod){
qnew = quantile(1:(initialsample+i-1),0.01)
print(qnew)
}
您可以创建一个小函数来获取帧 df
的第 1 行到 i
列 y
的分位数,如下所示:
func <- function(i,df) quantile(df[1:i,"y"],.01)
然后将此函数应用于data
data$qnew = lapply(1:nrow(data),func,df=data)
输出(最后六行)
> 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