在滚动窗口中将求和积应用于数据框的列上

问题描述 投票:0回答:1

我有一组定义的权重,我想在时间序列数据帧上的滚动窗口中计算收益的加权总和。我相信我们会在这里使用rollapplyr,但是我不确定如何在数据帧的每一行上执行滚动窗口功能。

在数据样本的输出以下查找:

tempVar <- structure(c(NA, -0.0081833512947922, 0.00508150903899551, -0.0072202479734873, 
0.00345258369231161, NA, 0, -0.00847462699097257, -0.00794638265247283, 
0.00445091892889238, NA, NA, NA, NA, NA, NA, 0, -0.0136462286616492, 
-0.00638979809877149, -0.00109950533341685), class = c("xts", 
"zoo"), .indexCLASS = "Date", .indexTZ = "UTC", tclass = "Date", tzone = "UTC", index = structure(c(946598400, 
946857600, 946944000, 947030400, 947116800), tzone = "UTC", tclass = "Date"), .Dim = 5:4, .Dimnames = list(
    NULL, c("TY00.USA", "CGB00.MOD", "G10L00.IFEU", "RLI00.IFEU"
    ))) 

简单,让我们考虑权重为:

tempWeights <- c(1.09,0.89,0)

注:权重表明,截至评估之日,该日期的收益没有权重。这些权重在设计上不等于1

我希望输出为:

tempRRI <- structure(c(NA, NA, NA, -0.00439731, -0.0008871759, NA, NA, NA, 
-0.00754241803, -0.0163096243, NA, NA, NA, NA, NA, NA, NA, NA, 
-0.01214514381, -0.02056130983), .Dim = 5:4, .Dimnames = list(
    NULL, c("TY00.USA", "CGB00.MOD", "G10L00.IFEU", "RLI00.IFEU"
    )), index = structure(c(946598400, 946857600, 946944000, 
947030400, 947116800), tzone = "UTC", tclass = "Date"), .indexTZ = "UTC", class = c("xts", 
"zoo"), .indexCLASS = "Date", tclass = "Date", tzone = "UTC")

[希望与weighted.mean()类似,但要求和,或者有人可以建议我如何用tempWeights取每一列的总和(滚动计算)。weighted.sum()不会做同样的事情。

tempRRI <- rollapplyr(tempVar, width = 3, function(x) {weighted.mean(x,tempWeights)}, by.column = TRUE) 
r moving-average quantitative-finance weighted-average rolling-computation
1个回答
0
投票
tempRRI <- rollapplyr(tempVar, width = 3, function(x) {weighted.mean(x,tempWeights)*sum(tempWeights)}, by.column = TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.