楼主: Charlenefan3
1332 1

[问答] 优化求每周最大回撤的for循环代码 [推广有奖]

  • 0关注
  • 0粉丝

已卖:2份资源

本科生

63%

还不是VIP/贵宾

-

威望
0
论坛币
3093 个
通用积分
3.1394
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
484 点
帖子
45
精华
0
在线时间
124 小时
注册时间
2018-11-2
最后登录
2024-12-20

楼主
Charlenefan3 发表于 2019-12-10 13:12:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我利用了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循环算呢?
二维码

扫码加我 拉你入群

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

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

关键词:for循环 For performance Performan Analytics

沙发
skyfx 发表于 2019-12-10 14:17:49
你这个太麻烦了,上dplyr包,按周group_by,用maxDrawdown。
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 08:28