关于如何在 xts 对象中获取特定元素的简单问题

问题描述

我有一个相对较大的 xts 对象。它包含欧洲 STOXX 600 指数中每家公司 2012 年至 2021 年的每日调整后收盘价。我想计算每家公司每年股票的年度波动率。例如,我想计算从 01.01.2012 - 31.12.2012 到 2021 年的每一年“Covestro AG”公司股票的波动率,因此“Covestro AG”公司从 2012 年到 2021 年的年度股票波动率以及这是在欧洲斯托克 600 指数中上市的 600 家公司中的每一家。

所以首先我开始计算对数差异:

XTS.LOGDIFFS <- diff(log(XTS.ADJCLOSE))

因此,下一步是计算每家公司 1 年特定期间(例如 01.01.2012-31.12.2021)的对数差异的标准差。但我真的不知道该怎么做。

所以我的数据看起来像这样:我有 600 家公司,平均交易日为 252 个(不是每年都有 252 个,因为假期等),2012 年我有 8 个月,2012 年我有 5 个月而不是 12 . 这导致了 1.395.000 个元素的样本。

这是我的数据集外观的链接

https://imgur.com/a/oS7ROCL

有没有办法考虑每年有不同的交易日?

一个大问题是我的数据集中有一些“NA”,这是由于雅虎财经中的数据缺失,或者仅仅是因为该公司目前不存在。我该如何处理?

解决方法

您可以使用 apply.yearly 作为助手。由于您没有提供示例数据,我创建了一些。

library(xts)

dates <- seq.Date(as.Date("2012-01-01"),as.Date("2021-07-07"),"days")

sampledat <- xts(matrix(rnorm(600 * length(dates)),ncol = 600),order.by = dates)

result_list <- lapply(sampledat,FUN = apply.yearly,sd)

result_xts <- do.call(merge,result_list)

> head(result_xts[,1:5])
                 x.1       x.2       x.3       x.4       x.5
2012-12-31 0.9928683 0.9863453 0.9656742 0.9924881 1.0086642
2013-12-31 0.9837968 0.9378844 1.0512200 1.0327317 0.9610698
2014-12-31 0.9911269 1.0304369 1.0329215 1.0193346 0.9715923
2015-12-31 1.0323760 1.0279656 1.0091391 0.9229457 0.9800465
2016-12-31 1.0258107 0.9320686 1.0288169 0.9994578 0.9424084
2017-12-31 1.0492600 0.9816240 0.9578318 1.0166213 1.0042377

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...