\n | <\/td>\n | ewma.func<\/span> <-<\/span> function<\/span>(rets<\/span>, lambda<\/span>) {<\/td>\n <\/tr>\n \n | <\/td>\n | sig.p<\/span> <-<\/span> 0<\/span><\/td>\n <\/tr>\n \n | <\/td>\n | sig.s<\/span> <-<\/span> vapply(rets<\/span>, function<\/span>(r<\/span>) sig.p<\/span> <<-<\/span> sig.p<\/span>*<\/span>lambda<\/span> +<\/span> (r<\/span>^<\/span>2<\/span>)*<\/span>(1<\/span> -<\/span> lambda<\/span>), 0<\/span>)<\/td>\n <\/tr>\n \n | <\/td>\n | return<\/span>(sqrt(sig.s<\/span>))<\/td>\n <\/tr>\n \n | <\/td>\n | }<\/td>\n <\/tr>\n | \n | <\/td>\n | \n<\/td>\n <\/tr>\n | \n | <\/td>\n | ewma.loop<\/span> <-<\/span> function<\/span>(rets<\/span>, lambda<\/span>) {<\/td>\n <\/tr>\n \n | <\/td>\n | n<\/span> <-<\/span> length(rets<\/span>)+<\/span>1<\/span><\/td>\n <\/tr>\n \n | <\/td>\n | sig.s<\/span> <-<\/span> rep(0<\/span>, n<\/span>)<\/td>\n <\/tr>\n \n | <\/td>\n | for<\/span> (i<\/span> in<\/span> 2<\/span>:<\/span>n<\/span>) {<\/td>\n <\/tr>\n \n | <\/td>\n | sig.s<\/span>[i<\/span>] <-<\/span> sig.s<\/span>[i<\/span>-<\/span>1<\/span>]*<\/span>lambda<\/span> +<\/span> (rets<\/span>[i<\/span>-<\/span>1<\/span>]^<\/span>2<\/span>)*<\/span>(1<\/span> -<\/span> lambda<\/span>)<\/td>\n <\/tr>\n \n | <\/td>\n | }<\/td>\n <\/tr>\n | \n | <\/td>\n | return<\/span>(sqrt(tail(sig.s<\/span>, n<\/span>-<\/span>1<\/span>)))<\/td>\n <\/tr>\n \n | <\/td>\n | }<\/td>\n <\/tr>\n | \n | <\/td>\n | \n<\/td>\n <\/tr>\n | \n | <\/td>\n | \n<\/td>\n <\/tr>\n | \n | <\/td>\n | lambda<\/span> <-<\/span> 0.94<\/span><\/td>\n <\/tr>\n \n | <\/td>\n | rets<\/span> <-<\/span> 0.02<\/span>*<\/span>rnorm(100<\/span>)<\/td>\n <\/tr>\n \n | <\/td>\n | system.time( replicate(10000<\/span>, ewma.loop(rets<\/span>, lambda<\/span>)) )<\/td>\n <\/tr>\n \n | <\/td>\n | system.time( replicate(10000<\/span>, ewma.func(rets<\/span>, lambda<\/span>)) )<\/td>\n <\/tr>\n <\/table>\n<\/div>\n\n\n <\/div>\n\n <\/div>\n\n<\/div>\n\n <\/div>\n | | | | | | | | | | | | | |