首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用1年窗口计算月末收益的波动率

使用1年窗口计算月末收益的波动率
EN

Stack Overflow用户
提问于 2019-01-16 07:12:29
回答 1查看 520关注 0票数 1

我正在处理股票回报的时间序列。这些数据包括数千只股票以及每只股票从1985年到2010年的每日回报。由于停牌而遗漏了一些回报。对于每只股票,我试图使用之前的一年回报来计算每个月末(数据集中每个月的最后一个交易日)回报的移动波动率。我有一些数据:

代码语言:javascript
运行
复制
         date name   return
   1985-01-01    A   -0.044
   1985-01-01    C    0.038
   1985-01-02    A    0.041
   1985-01-02    B   -0.005
   1985-01-02    C   -0.052
   1985-01-03    B    0.018
   1985-01-03    C   -0.034

请注意,公司B在1985-01-01没有交易,因此当天没有回报数据。我已经查找了一些有用的包,如TTR、zoo、xts。但是,所有的功能都需要输入每年的期数,这在每种股票中是不同的。我的模糊想法是首先在xts中使用split来按公司名称拆分数据,然后应用端点函数来查找每个月的最后一天。我被困在那里了。由于我有一个很大的数据集,我更喜欢一些快速的方法。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-16 07:25:15

假设在结尾处的Note中重复显示的数据,还假设每个日期至少出现在一种股票中(但不需要出现在任何特定的股票中)。252通常用于一年,这对于大多数用途来说可能足够接近;然而,考虑到问题中的数据长度,我们在本例中使用2:

代码语言:javascript
运行
复制
library(zoo)

z <- read.zoo(DF, split = "name")
r <- rollapplyr(z, 2, sd, na.rm = TRUE)
aggregate(r, as.yearmon, tail, 1)
##           A          B          C
## Jan 1985 NA 0.01626346 0.01272792

备注

代码语言:javascript
运行
复制
Lines <- "
         date name   return
   1985-01-01    A   -0.044
   1985-01-01    C    0.038
   1985-01-02    A    0.041
   1985-01-02    B   -0.005
   1985-01-02    C   -0.052
   1985-01-03    B    0.018
   1985-01-03    C   -0.034"

library(zoo)
DF <- read.table(text = Lines, header = TRUE)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54208178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档