全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1283 1
2019-12-10
我利用了PerformanceAnalytics 包里面的maxDrawdown函数求最大回撤

但现在需要求沪深300等指数的每周的最大回撤,在数据量稍微大一些的时候,由于循环计算,代码计算效率就比较低,代码数据如下:
pcg.xt 为xts格式的时间序列,里面有四个指数的交易日涨跌幅数据(2002-01-04 to 2019-11-30)该data 为4345*4 matrix
我是写了for循环来计算的,我先找到了每周周一与周五的日期索引,然后计算该区间内的最大回撤、

yd <- index(pcg.xt[xts::: endof(pcg.xt,"weeks")]) # get year/month/week end date index in data pcg.xt
dd <- data.frame(matrix(NA,nrow = (length(yd)+1),ncol = l)) # maxDrawdown dataframe
dd[,1] <- c(as.character(yd),"total") # week end date
is <- 1 # get monday index
for (i in 1:ncol(pcg.xt)) {
  for (j in 1:(nrow(dd)-1)) {
    ie <- which(index(pcg.xt) == yd[j]) # get friday index
    dd[j,(i+1)] <- round(maxDrawdown(pcg.xt[is:ie,i]/100,invert = FALSE)*100,2)
    is <- ie+1 #get next week mondy index
  }
  is  <- 1 #restart
}


最后dd是最大回撤的表格,代码是可以运行的,但是会运行一段时间,问一下论坛里的大神,如何不用for循环算呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-12-10 14:17:49
你这个太麻烦了,上dplyr包,按周group_by,用maxDrawdown。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群