共计 2338 个字符,预计需要花费 6 分钟才能阅读完成。
原文链接: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(!Num
0;
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 s
s(cpp11)\]\]
// \[\[Rcpp::depends(R
to read from
const RMatrix<double> mat;
// internal variables
const double ratio
t;
// initialize from Rcpp input and output matrixes
run\_esd\_helper(const Nume
all operator that work for th
in, 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('Dai
s,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 交易策略