GARCH prediction function
methods-predict.Rd
Predicts a time series from a fitted GARCH object.
Usage
# S4 method for fGARCH
predict(object, n.ahead = 10, trace = FALSE, mse = c("cond","uncond"),
plot=FALSE, nx=NULL, crit_val=NULL, conf=NULL, ...)
Arguments
- n.ahead
an integer value, denoting the number of steps to be forecasted, by default 10.
- object
an object of class
"fGARCH"
as returned by the functiongarchFit
.- trace
a logical flag. Should the prediction process be traced? By default
trace=FALSE
.- mse
If set to
"cond"
,meanError
is defined as the conditional mean errors \(\sqrt{E_t[x_{t+h}-E_t(x_{t+h})]^2}\). If set to"uncond"
, it is defined as \(\sqrt{E[x_{t+h}-E_t(x_{t+h})]^2}\).- plot
If set to
TRUE
, the confidence intervals are computed and plotted- nx
The number of observations to be plotted along with the predictions. The default is
round(n*0.25)
, where n is the sample size.- crit_val
The critical values for the confidence intervals when
plot
is set toTRUE
. The intervals are defined as \(\hat{x}_{t+h}\) +crit_val[2] * meanError
and \(\hat{x}_{t+h}\) +crit_val[1] * meanError
if two critical values are provided and \(\hat{x}_{t+h} \pm\)crit_val * meanError
if only one is given. If you do not provide critical values, they will be computed automatically.- conf
The confidence level for the confidence intervals if
crit_val
is not provided. By default it is set to 0.95. The critical values are then computed using the conditional distribution that was chosen to create theobject
withgarchFit
using the sameshape
andskew
parameters. If the conditionnal distribution was set to"QMLE"
, the critical values are computed using the empirical distribution of the standardized residuals.- ...
additional arguments to be passed.
Details
The predictions are returned as a data frame with with columns
"meanForecast"
, "meanError"
, and
"standardDeviation"
. Row h
contains the predictions for
horizon h
.
The number of records equals the number of forecasting steps n.ahead
.
Examples
## garchFit -
# Parameter Estimation of Default GARCH(1,1) Model:
set.seed(123)
fit = garchFit(~ garch(1, 1), data = garchSim(), trace = FALSE)
fit
#>
#> Title:
#> GARCH Modelling
#>
#> Call:
#> garchFit(formula = ~garch(1, 1), data = garchSim(), trace = FALSE)
#>
#> Mean and Variance Equation:
#> data ~ garch(1, 1)
#> <environment: 0x559fb1dfb3c0>
#> [data = garchSim()]
#>
#> Conditional Distribution:
#> norm
#>
#> Coefficient(s):
#> mu omega alpha1 beta1
#> -1.5658e-05 3.1101e-06 2.8879e-01 4.0817e-01
#>
#> Std. Errors:
#> based on Hessian
#>
#> Error Analysis:
#> Estimate Std. Error t value Pr(>|t|)
#> mu -1.566e-05 2.637e-04 -0.059 0.953
#> omega 3.110e-06 1.874e-06 1.660 0.097 .
#> alpha1 2.888e-01 1.808e-01 1.597 0.110
#> beta1 4.082e-01 2.777e-01 1.470 0.142
#> ---
#> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#>
#> Log Likelihood:
#> 440.3751 normalized: 4.403751
#>
#> Description:
#> Tue Jun 6 21:51:51 2023 by user: georgi
#>
## predict -
predict(fit, n.ahead = 10)
#> meanForecast meanError standardDeviation
#> 1 -1.565763e-05 0.004533622 0.004533622
#> 2 -1.565763e-05 0.004175561 0.004175561
#> 3 -1.565763e-05 0.003906646 0.003906646
#> 4 -1.565763e-05 0.003707706 0.003707706
#> 5 -1.565763e-05 0.003562489 0.003562489
#> 6 -1.565763e-05 0.003457674 0.003457674
#> 7 -1.565763e-05 0.003382701 0.003382701
#> 8 -1.565763e-05 0.003329450 0.003329450
#> 9 -1.565763e-05 0.003291827 0.003291827
#> 10 -1.565763e-05 0.003265348 0.003265348
predict(fit, n.ahead = 10, mse="uncond")
#> meanForecast meanError standardDeviation
#> 1 -1.565763e-05 0.00305647 0.004533622
#> 2 -1.565763e-05 0.00305647 0.004175561
#> 3 -1.565763e-05 0.00305647 0.003906646
#> 4 -1.565763e-05 0.00305647 0.003707706
#> 5 -1.565763e-05 0.00305647 0.003562489
#> 6 -1.565763e-05 0.00305647 0.003457674
#> 7 -1.565763e-05 0.00305647 0.003382701
#> 8 -1.565763e-05 0.00305647 0.003329450
#> 9 -1.565763e-05 0.00305647 0.003291827
#> 10 -1.565763e-05 0.00305647 0.003265348
## predict with plotting: critical values = +/- 2
predict(fit, n.ahead = 10, plot=TRUE, crit_val = 2)
#> meanForecast meanError standardDeviation lowerInterval upperInterval
#> 1 -1.565763e-05 0.004533622 0.004533622 -0.009082903 0.009051587
#> 2 -1.565763e-05 0.004175561 0.004175561 -0.008366779 0.008335464
#> 3 -1.565763e-05 0.003906646 0.003906646 -0.007828949 0.007797634
#> 4 -1.565763e-05 0.003707706 0.003707706 -0.007431070 0.007399755
#> 5 -1.565763e-05 0.003562489 0.003562489 -0.007140636 0.007109321
#> 6 -1.565763e-05 0.003457674 0.003457674 -0.006931005 0.006899690
#> 7 -1.565763e-05 0.003382701 0.003382701 -0.006781060 0.006749745
#> 8 -1.565763e-05 0.003329450 0.003329450 -0.006674558 0.006643242
#> 9 -1.565763e-05 0.003291827 0.003291827 -0.006599311 0.006567995
#> 10 -1.565763e-05 0.003265348 0.003265348 -0.006546354 0.006515038
## predict with plotting: automatic critical values
## for different conditional distributions
set.seed(321)
fit2 = garchFit(~ garch(1, 1), data = garchSim(), trace=FALSE, cond.dist="sged")
## 95% confidence level
predict(fit2, n.ahead=20, plot=TRUE)
#> meanForecast meanError standardDeviation lowerInterval upperInterval
#> 1 -0.0001011749 0.002792102 0.002792102 -0.005672091 0.005183726
#> 2 -0.0001011749 0.002697756 0.002697756 -0.005483848 0.005005147
#> 3 -0.0001011749 0.002657046 0.002657046 -0.005402621 0.004928091
#> 4 -0.0001011749 0.002639724 0.002639724 -0.005368060 0.004895304
#> 5 -0.0001011749 0.002632399 0.002632399 -0.005353446 0.004881440
#> 6 -0.0001011749 0.002629310 0.002629310 -0.005347283 0.004875594
#> 7 -0.0001011749 0.002628009 0.002628009 -0.005344687 0.004873131
#> 8 -0.0001011749 0.002627462 0.002627462 -0.005343594 0.004872094
#> 9 -0.0001011749 0.002627231 0.002627231 -0.005343134 0.004871658
#> 10 -0.0001011749 0.002627134 0.002627134 -0.005342940 0.004871474
#> 11 -0.0001011749 0.002627093 0.002627093 -0.005342858 0.004871397
#> 12 -0.0001011749 0.002627076 0.002627076 -0.005342824 0.004871364
#> 13 -0.0001011749 0.002627069 0.002627069 -0.005342810 0.004871350
#> 14 -0.0001011749 0.002627066 0.002627066 -0.005342804 0.004871345
#> 15 -0.0001011749 0.002627064 0.002627064 -0.005342801 0.004871342
#> 16 -0.0001011749 0.002627064 0.002627064 -0.005342800 0.004871341
#> 17 -0.0001011749 0.002627063 0.002627063 -0.005342799 0.004871341
#> 18 -0.0001011749 0.002627063 0.002627063 -0.005342799 0.004871340
#> 19 -0.0001011749 0.002627063 0.002627063 -0.005342799 0.004871340
#> 20 -0.0001011749 0.002627063 0.002627063 -0.005342799 0.004871340
set.seed(444)
fit3 = garchFit(~ garch(1, 1), data = garchSim(), trace=FALSE, cond.dist="QMLE")
## 90% confidence level and nx=100 :
predict(fit3, n.ahead=20, plot=TRUE, conf=.9, nx=100)
#> meanForecast meanError standardDeviation lowerInterval upperInterval
#> 1 0.0001058131 0.003189535 0.003189535 -0.005507703 0.005293788
#> 2 0.0001058131 0.003272780 0.003272780 -0.005654212 0.005429191
#> 3 0.0001058131 0.003345421 0.003345421 -0.005782059 0.005547347
#> 4 0.0001058131 0.003409029 0.003409029 -0.005894007 0.005650808
#> 5 0.0001058131 0.003464885 0.003464885 -0.005992313 0.005741661
#> 6 0.0001058131 0.003514051 0.003514051 -0.006078843 0.005821632
#> 7 0.0001058131 0.003557413 0.003557413 -0.006155161 0.005892165
#> 8 0.0001058131 0.003595723 0.003595723 -0.006222585 0.005954477
#> 9 0.0001058131 0.003629617 0.003629617 -0.006282237 0.006009608
#> 10 0.0001058131 0.003659641 0.003659641 -0.006335079 0.006058444
#> 11 0.0001058131 0.003686266 0.003686266 -0.006381938 0.006101751
#> 12 0.0001058131 0.003709898 0.003709898 -0.006423530 0.006140190
#> 13 0.0001058131 0.003730891 0.003730891 -0.006460477 0.006174336
#> 14 0.0001058131 0.003749551 0.003749551 -0.006493320 0.006204689
#> 15 0.0001058131 0.003766150 0.003766150 -0.006522533 0.006231687
#> 16 0.0001058131 0.003780922 0.003780922 -0.006548531 0.006255714
#> 17 0.0001058131 0.003794074 0.003794074 -0.006571679 0.006277108
#> 18 0.0001058131 0.003805790 0.003805790 -0.006592298 0.006296164
#> 19 0.0001058131 0.003816229 0.003816229 -0.006610671 0.006313144
#> 20 0.0001058131 0.003825534 0.003825534 -0.006627048 0.006328279