R语言的aggregate函数是数据处理中常用到的函数,功能非常强大,可以按照要求将数据分组聚合,然后对聚合数据进行函数统计操作。用法如下:
## Default S3 method: aggregate(x, ...) ## S3 method for class 'data.frame' aggregate(x, by, FUN, ..., simplify = TRUE, drop = TRUE) ## S3 method for class 'formula' aggregate(formula, data, FUN, ...,subset, na.action = na.omit) ## S3 method for class 'ts' aggregate(x, nfrequency = 1, FUN = sum, ndeltat = 1,ts.eps = getOption("ts.eps"), ...)
利用aggregate来计算一个时间序列的波动率十分方便。例如,计算上证指数每年的年化波动率可以用下面一行代码轻松完成
sseVol = aggregate(sseClose, as.numeric(format(index(sseClose), "%Y")), function(ss) coredata(tail(TTR:::volatility( ss, n=NROW(ss), calc="close"), 1)))
其中,sseClose为一个xts(Extensible Time Series)对象,储存上证指数的日收盘价。
运行上面的代码,得到上证指数的每年的年化波动率如下:
2000 0.21219212 2001 0.21401575 2002 0.23728070 2003 0.17639924 2004 0.20401043 2005 0.21318651 2006 0.21764349 2007 0.35934995 2008 0.46109998 2009 0.30659040 2010 0.23002558 2011 0.18642647 2012 0.17607391 2013 0.18766433 2014 0.17470314 2015 0.39787744 2016 0.22626145 2017 0.08773395 2018 0.20021664
采用此方法,可以将上证指数与美国S&P500指数的波动率显示如下:
评论