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)


この記事が気に入ったらサポートをしてみませんか?