WIP 条件に合致する連続する月次データの抽出
目的
設定した条件に合致した月次データのシーケンスを見つける。
例:月間収益率x%以上がyカ月続いたデータを抽出する。
抽出条件数固定バージョンコード
str <- c('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')
i <- 4
l <- length(monthlyReturn(GSPC))
for(j in seq(0,i-1,1)){
if(j==0){
data <- monthlyReturn(GSPC)
l <- length(data)
}else{
data <- monthlyReturn(GSPC)[-1*seq(0,j,1)]
l <- length(data)
}
if((l %% i) == 0){
s <- l
}else{
s <- floor(l/i)*i
}
# print(l)
print(s)
w <- data %>% head(.,s) %>% matrix(.,nrow=i) %>% t() %>% as.data.frame()
colnames(w) <- str[1:i]
# print(head(w))
print(dplyr::filter(w,a>0.05 & b>0.05 & c>0.05 & d > 0.05))
}
抽出条件可変化バージョン
str <- c('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')
i <- 2
l <- length(monthlyReturn(GSPC))
for(j in seq(0,i-1,1)){
if(j==0){
data <- monthlyReturn(GSPC)
l <- length(data)
}else{
data <- monthlyReturn(GSPC)[-1*seq(0,j,1)]
l <- length(data)
}
if((l %% i) == 0){
s <- l
}else{
s <- floor(l/i)*i
}
# print(l)
print(s)
w <- data %>% head(.,s) %>% matrix(.,nrow=i) %>% t() %>% as.data.frame()
colnames(w) <- str[1:i]
# print(head(w))
# print(dplyr::filter(w,a>0.05 & b>0.05 & c>0.05 & d > 0.05))
capture.output(tmp <- w)
for(k in seq(1,i,1)){
# tmp <- print(dplyr::filter(w,str[i] >0.05))
print("for")
capture.output(tmp <- eval(parse(text= paste0("print(dplyr::filter(tmp,",str[k]," >0.05))"))))
}
print("####")
print(tmp)
}
課題
filter 抽出条件の可変化の方法を探すこと
付録 古いコード
w <- monthlyReturn(GSPC) %>% last(.,s) %>% matrix(.,nrow=i) %>% t() %>% as.data.frame()
colnames(w) <- str[1:i]
dplyr::filter(w,one>0.05 & two>0.05 & three>0.05 & four > 0.05)
w <- monthlyReturn(GSPC)[-1] %>% head(.,872) %>% matrix(.,nrow=4) %>% t() %>% as.data.frame()
colnames(w) <- c('one','two','three','four')
dplyr::filter(w,one>0.05 & two>0.05 & three>0.05 & four > 0.05)
w <- monthlyReturn(GSPC)[seq(-1,-2,-1)] %>% head(.,872) %>% matrix(.,nrow=4) %>% t() %>% as.data.frame()
colnames(w) <- c('one','two','three','four')
dplyr::filter(w,one>0.05 & two>0.05 & three>0.05 & four > 0.05)
w <- monthlyReturn(GSPC)[seq(-1,-3,-1)] %>% head(.,872) %>% matrix(.,nrow=4) %>% t() %>% as.data.frame()
colnames(w) <- c('one','two','three','four')
dplyr::filter(w,one>0.05 & two>0.05 & three>0.05 & four > 0.05)