r - 使用 R 将对数 yield 转换为时间序列预测的实际价格

标签 r return time-series

我有这个模拟数据,并使用 rugarch 包拟合了 ARMA-GARCH 模型。到目前为止我的代码如下,

    ar.sim<-arima.sim(model=list(ar=c(.9,-.2),ma=c(-.7,.1)),n=100)
    logr=diff(log(na.omit(ar.sim)))
require(rugarch)
    gar<-ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(2, 1)), 
                        mean.model = list(armaOrder = c(2, 1)), 
                        distribution.model = "norm");
    fitg=ugarchfit(spec = gar,data = ar.sim,solver = "hybrid");
    ugarchforecast(fitg,n.ahead =10) 

在这个模型中,我使用了日志返回。所以我的预测也是基于对数返回。但我需要的是实际价格。我在 google 上搜索找到任何可以将此日志返回值转换为实际价格的 R 函数。但我没找到。

R 中是否有任何函数可以从该日志返回中提取实际价格,我需要手动执行此操作吗?

最佳答案

价格应为[初始价格] * exp(累积对数 yield )。例如:

df <- data.frame(price = c(90, 108, 81, 105, 180))

df$log = log(df$price)
df$logr = c(NA, diff(df$log))
df$logr_na0 = ifelse(is.na(df$logr), 0, df$logr)
df$cuml_log= cumsum(df$logr_na0)
df$reconstructed_price_norm = exp(df$cuml_log)

initial_price <- 90
df$reconstructed_price = initial_price * df$reconstructed_price_norm

输出

> df
  price      log       logr   logr_na0   cuml_log reconstructed_price_norm reconstructed_price
1    90 4.499810         NA  0.0000000  0.0000000                 1.000000                  90
2   108 4.682131  0.1823216  0.1823216  0.1823216                 1.200000                 108
3    81 4.394449 -0.2876821 -0.2876821 -0.1053605                 0.900000                  81
4   105 4.653960  0.2595112  0.2595112  0.1541507                 1.166667                 105
5   180 5.192957  0.5389965  0.5389965  0.6931472                 2.000000                 180

关于r - 使用 R 将对数 yield 转换为时间序列预测的实际价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55892584/

相关文章:

r - 组合栅格堆栈

ios - 返回键的功能在 iOS swift 中不起作用

java - toString 为特定类的每个对象返回相同的字符串?

算法 - 如何计算时间序列中的事件 session 数?

r - auto.arima 使用 xreg 并一起预测多个 ts

r - 提取大矩阵的非对角切片

r - for 循环中的超前和滞后

python - 如何按 NAN 值拆分 Pandas 时间序列

r - 如何根据另一个类别对因子水平进行排序?

javascript - 为什么构造函数只能返回一个对象?