原文链接:http://tecdat.cn/?p=17829

原文出处:拓端数据部落公众号

指数加权稳定率是一种稳定率的度量,它使最近的察看后果有更高权重。咱们将应用以下公式计算指数加权稳定率:

S [t] ^ 2 = SUM(1-a) a ^ i (r [t-1-i]-rhat [t])^ 2,i = 0…inf

其中rhat [t]是对应的指数加权平均值

rhat [t] = SUM(1-a) a ^ i r [t-1-i],i = 0…inf

下面的公式取决于每个工夫点的残缺价格历史记录,并花了一些工夫进行计算。因而,我想分享Rcpp和RcppParallel如何帮忙咱们缩小计算工夫。

我将应用汇率的历史数据集  作为测试数据。

首先,咱们计算均匀滚动稳定率

#*****************************************************************# 计算对数收益率#*****************************************************************ret = diff(log(data$prices)) tic(5)hist.vol = sqrt(252) * bt.apply.matrix(ret, runSD, n = 200)toc(5)

通过工夫为0.17秒

接下来,让咱们编写指数加权代码逻辑

# 建设 RCPP 函数计算指数加权稳定率  load.packages('Rcpp')sourceCpp(code='#include <Rcpp.h>using namespace Rcpp;using namespace std; // \[\[Rcpp::plugins(cpp11)\]\] //ema\[1\] = 0//ema\[t\] = (1-a)\*r\[t-1\] + (1-a)\*a*ema\[t-1\]// \[\[Rcpp::exp {        if(!NumericVector::is_na(x\[t\])) break;        res\[t\] = NA_REAL;    }    int start_t = t;    -a) * a^i * (r\[t-1-i\] - rhat\[t\])^2, i=0 ... inf// \[\[Rcpp::export\]\]NumericVector run\_esd\_cpp(NumericVector x, double ratio) {    auto sz = x.siz    // find start index; first non NA item    for(t = 0; t < sz; t++) {        if(!Num0;        for(t = start_t + 1; t < sz; t++) {        ema = (1-ratio) * ( x\[t-1\] + ratio * ema);        double sigma = 0;            for(int i = 0; i < (t - start_t); i++) {            sigma += pow(ratio,i) * pow(x\[t-1-i\] - ema, 2);        }        res\[t\] = (1-ratio) * sigma;    }    , n, ratio = n/(n+1)) run\_ema\_cpp(x, ratio)run.esd = funct

 通过工夫为106.16秒。

执行此代码花了一段时间。然而,代码能够并行运行。以下是RcppParallel版本。

# 建设 RCPP 并行函数计算指数加权稳定率  load.packages('RcppParallel')sourceCpp(code='using namespace Rcpp;using namespace ss(cpp11)\]\]// \[\[Rcpp::depends(Rto read from    const RMatrix<double> mat;    // internal variables    const double ratiot;    // initialize from Rcpp input and output matrixes    run\_esd\_helper(const Numeall operator that work for thin, size_t end) {        for (size_t c1 = begin; c1 < end; c1++) {                    int t;            // find start index; fir

通过工夫为14.65秒

运行工夫更短。接下来,让咱们直观地理解应用指数加权稳定率的影响

dates = '2007::2010'layout(1:2)e='h', col='black', plotX=F)    plota.legend(paste('Dais,1\],type='l',col='black')

 

不出所料,指数加权稳定率在最近的察看后果中占了更大的比重,是一种更具反馈性的危险度量。


最受欢迎的见解

1.HAR-RV-J与递归神经网络(RNN)混合模型预测和交易大型股票指数的高频稳定率

2.WinBUGS对多元随机稳定率模型:贝叶斯预计与模型比拟

3.稳定率的实现:ARCH模型与HAR-RV模型

4.R语言ARMA-EGARCH模型、集成预测算法对SPX理论稳定率进行预测

5.应用R语言随机稳定模型SV解决工夫序列中的随机稳定率

6.R语言多元COPULA GARCH 模型工夫序列预测

7.R语言基于ARMA-GARCH过程的VAR拟合和预测

8.R语言随机搜寻变量抉择SSVS预计贝叶斯向量自回归(BVAR)模型

9.R语言对S&P500股票指数进行ARIMA + GARCH交易策略