wtorek, 12 marca 2024
Tuskowy efekt flagi to kiepska taktyka
poniedziałek, 19 lutego 2024
Dlaczego oddzielne badanie autokorelacji jest błędem?
W wielu naukach, szczególnie w finansach, dużą wagę przywiązuje się do autokorelacji. Jeżeli stopy zmian jakoś autokorelują, oznacza to możliwość lepszej prognozy dalszego kierunku. Niewielu jednak wie, że proste badanie autokorelacji jest błędem. Nawet jeżeli testy sugerują istotność statystyczną autokorelacji, to w rzeczywistości może być ona pomylona z innym efektem, jeśli jest sprawdzana osobno.
W poniższych przykładach używam języka R, w tym dwa pakiety: forecast oraz rugarch:
if (require("forecast")==FALSE) {
install.packages("forecast")
library("forecast")
}
if (require("rugarch")==FALSE) {
install.packages("rugarch")
library("rugarch")
}
Przykład 1.
Najbardziej oczywisty - może się zmienić średnia. Budujemy dwie próbki o rozkładzie normalnym z różnymi średnimi, i łączymy w jedną próbkę. Aby mieć właściwe porównanie wszędzie będę stosował to samo ziarno nr 44.
set.seed(44)
rnorm_test1 <- rnorm(n=500, mean=1)
rnorm_test2 <- rnorm(n=500, mean=4)
rnorm_test <- c(rnorm_test1, rnorm_test2)
Pacf(rnorm_test)
plot(x=rnorm_test[-length(rnorm_test)], y=rnorm_test[-1])
abline(lsfit(x=rnorm_test[-length(rnorm_test)], y=rnorm_test[-1]), lwd=2, col="blue")
Pozorna autokorelacja cząstkowa sięga 8 rzędów. Poniższy wykres wskazuje czarno na białym, z czego to wynika.
Przykład 2.
A) Mniej oczywisty przykład dotyczy efektu ARCH. Problem ten analizował m.in. A. Bera [1]. Zrobię symulację procesu w pakiecie rugarch - najpierw wskazuję o jaki model mi chodzi oraz ustalam mu parametry.
Specyfikację modelu robimy za pomocą funkcji ugarchspec(). Po pierwsze wybieram rodzaj modelu. Będzie to standardowy GARCH, oznaczony tu "sGARCH". Po drugie ustawiam liczbę rzędów procesu. Ponieważ interesuje mnie tylko ARCH(1) ustawiam garchOrder = c(1, 0), co oznacza tworzenie efektu ARCH pierwszego rzędu - warunkowa wariancja zależy tylko od składnika losowego modelu. Części warunkowej średniej, tj. ARMA, nie trzeba już ustawiać, ale można - czyli armaOrder = c(0, 0), aby nie mieć żadnych autokorelacji w szeregu czasowym. Można też dodać distribution.model = "norm", aby zaznaczyć rozkład normalny. Nie jest to konieczne, ale dodam też include.mean = FALSE, czyli nie zawieraj wyrazu wolnego dla części średniej warunkowej, bo nie jest potrzebny. Ostatnią sprawą do wpisania są parametry modelu za pomocą fixed.pars. Ponieważ mamy tylko ARCH(1) w rozkładzie normalnym wystarczy ustawić wyraz wolny w równaniu wariancji (oznaczony jako omega, np. na poziomie 0.1) oraz współczynnik kierunkowy ARCH(1) (tj. efekt MA(1) w równaniu wariancji, oznaczony jako alpha1, np. równy 0.9).
Po tym etapie wykonujemy symulację przy pomocy funkcji ugarchpath(). Musi zawierać co najmniej 2 argumenty - rodzaj modelu, który utworzyliśmy za pomocą ugarchspec() oraz liczbę obserwacji (oznaczona n.sim). Tak zbudowana symulacja jest obiektem, który zostanie nazwany simArchModel. Żeby wyciągnąć sam szereg czasowy możemy wtedy użyć komendy simArchModel@path$seriesSim.
set.seed(44)
myGarch1 <- ugarchspec(variance.model = list(model = "sGARCH",
garchOrder = c(1, 0)),
distribution.model = "norm", mean.model = list(armaOrder = c(0, 0), include.mean = FALSE),
fixed.pars=list(omega=0.1, alpha1=0.9))
simArchModel = ugarchpath(myGarch1, n.sim = 1000)
simArch1 <- simArchModel@path$seriesSim
Pacf(simArch1, plot=F)
Pacf(simArch)
simArchLm <- lm(tail(simArch1, -2) ~ head(simArch1, -2))
plot(x=head(simArch1, -2), y=tail(simArch1, -2))
abline(simArchLm)
PACF sugeruje 2 pierwsze rzędy ujemnej korelacji. Statystyki:
summary(simArchLm)Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.00932 0.02310 -0.40 0.68672
head(simArch1, -2) -0.10622 0.03153 -3.37 0.00078 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.73 on 996 degrees of freedom
Multiple R-squared: 0.0113, Adjusted R-squared: 0.0103
F-statistic: 11.3 on 1 and 996 DF, p-value: 0.000784
Box-Pierce test
data: simArch1
X-squared = 20, df = 2, p-value = 0.00004
Box-Ljung test
data: simArch1
X-squared = 20, df = 2, p-value = 0.00004
ARIMA(0,0,2) with zero mean
Coefficients:
ma1 ma2
-0.111 -0.110
s.e. 0.031 0.031
sigma^2 = 0.525: log likelihood = -1096
AIC=2198 AICc=2198 BIC=2212
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.0373 0.0571 -0.65 0.51
head(simArch2, -2) -0.2853 0.0304 -9.38 <0.0000000000000002 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.8 on 996 degrees of freedom
Multiple R-squared: 0.0812, Adjusted R-squared: 0.0803
F-statistic: 88.1 on 1 and 996 DF, p-value: <0.0000000000000002
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.00818 0.01002 -0.82 0.41
head(simArch3, -2) 0.01541 0.03179 0.48 0.63
Residual standard error: 0.316 on 996 degrees of freedom
Multiple R-squared: 0.000236, Adjusted R-squared: -0.000768
F-statistic: 0.235 on 1 and 996 DF, p-value: 0.628
ARIMA(0,0,0) with zero mean
sigma^2 = 0.0999: log likelihood = -267.1
AIC=536.3 AICc=536.3 BIC=541.2
*----------------------------------*
* ARFIMA Model Fit *
*----------------------------------*
Mean Model : ARFIMA(1,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
ar1 -0.053005 0.031698 -1.6722 0.094481
sigma 0.315631 0.007058 44.7214 0.000000
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
ar1 -0.053005 0.031006 -1.7095 0.08736
sigma 0.315631 0.007138 44.2202 0.00000
LogLikelihood : -265.8
Information Criteria
------------------------------------
Akaike 0.53551
Bayes 0.54533
Shibata 0.53551
Hannan-Quinn 0.53924
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 0.000001256 0.9991
Lag[2*(p+q)+(p+q)-1][2] 0.082771917 1.0000
Lag[4*(p+q)+(p+q)-1][5] 0.882737349 0.9628
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 0.3014 0.5830
Lag[2*(p+q)+(p+q)-1][2] 0.4997 0.6937
Lag[4*(p+q)+(p+q)-1][5] 1.5118 0.7370
ARCH LM Tests
------------------------------------
Statistic DoF P-Value
ARCH Lag[2] 0.7098 2 0.7012
ARCH Lag[5] 2.3098 5 0.8048
ARCH Lag[10] 6.9816 10 0.7272
Nyblom stability test
------------------------------------
Joint Statistic: 0.3984
Individual Statistics:
ar1 0.1721
sigma 0.2294
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 0.61 0.749 1.07
Individual Statistic: 0.35 0.47 0.75
$rank.matrix
AR MA Mean ARFIMA HQIC converged
1 1 0 0 0 0.5392 1
*----------------------------------*
* ARFIMA Model Fit *
*----------------------------------*
Mean Model : ARFIMA(4,0,3)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu 1.664246 0.000848 1961.68 0
ar1 -0.895300 0.000021 -43261.14 0
ar2 0.748268 0.000017 43452.27 0
ar3 1.032321 0.000024 42584.16 0
ar4 0.074309 0.000022 3395.11 0
ma1 0.956703 0.000017 56730.59 0
ma2 -0.612226 0.000006 -100923.73 0
ma3 -0.896438 0.000023 -39376.32 0
sigma 1.043292 0.004795 217.58 0
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu 1.664246 0.001353 1229.637 0
ar1 -0.895300 0.000033 -26992.452 0
ar2 0.748268 0.000038 19613.716 0
ar3 1.032321 0.000059 17386.314 0
ar4 0.074309 0.000041 1829.927 0
ma1 0.956703 0.000027 34910.145 0
ma2 -0.612226 0.000006 -103777.853 0
ma3 -0.896438 0.000054 -16747.143 0
sigma 1.043292 0.027597 37.805 0
LogLikelihood : -1462
Information Criteria
------------------------------------
Akaike 2.9427
Bayes 2.9869
Shibata 2.9425
Hannan-Quinn 2.9595
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 0.6171 0.4321
Lag[2*(p+q)+(p+q)-1][20] 7.2453 1.0000
Lag[4*(p+q)+(p+q)-1][34] 15.9922 0.6699
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 2.513 0.11294
Lag[2*(p+q)+(p+q)-1][2] 3.476 0.10432
Lag[4*(p+q)+(p+q)-1][5] 6.116 0.08444
ARCH LM Tests
------------------------------------
Statistic DoF P-Value
ARCH Lag[2] 4.208 2 0.12197
ARCH Lag[5] 8.450 5 0.13313
ARCH Lag[10] 16.301 10 0.09133
Nyblom stability test
------------------------------------
Joint Statistic: 9.36
Individual Statistics:
mu 0.07491
ar1 0.01170
ar2 0.01451
ar3 0.04257
ar4 0.06617
ma1 0.07728
ma2 0.07368
ma3 0.05045
sigma 0.24675
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 2.1 2.32 2.82
Individual Statistic: 0.35 0.47 0.75
Elapsed time : 1.476
$rank.matrix
AR MA Mean ARFIMA HQIC converged
1 4 3 1 0 2.959 1
*----------------------------------*
* ARFIMA Model Fit *
*----------------------------------*
Mean Model : ARFIMA(1,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu 2.46629 0.131594 18.742 0
ar1 0.68144 0.023154 29.430 0
sigma 1.33144 0.029772 44.721 0
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu 2.46629 0.170801 14.440 0
ar1 0.68144 0.015803 43.121 0
sigma 1.33144 0.029462 45.191 0
LogLikelihood : -1705
Information Criteria
------------------------------------
Akaike 3.4164
Bayes 3.4311
Shibata 3.4164
Hannan-Quinn 3.4220
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 90.5 0
Lag[2*(p+q)+(p+q)-1][2] 104.1 0
Lag[4*(p+q)+(p+q)-1][5] 132.9 0
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 4.450 0.03489
Lag[2*(p+q)+(p+q)-1][2] 4.473 0.05628
Lag[4*(p+q)+(p+q)-1][5] 5.004 0.15278
ARCH LM Tests
------------------------------------
Statistic DoF P-Value
ARCH Lag[2] 4.540 2 0.1033
ARCH Lag[5] 5.816 5 0.3246
ARCH Lag[10] 13.804 10 0.1821
Nyblom stability test
------------------------------------
Joint Statistic: 11.13
Individual Statistics:
mu 10.89280
ar1 0.09111
sigma 0.14545
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 0.846 1.01 1.35
Individual Statistic: 0.35 0.47 0.75
Elapsed time : 0.02069
$rank.matrix
AR MA Mean ARFIMA HQIC converged
1 1 0 1 0 3.422 1
Ad 2A) W drugim przykładzie mieliśmy wprowadzony ARCH do wariancji. Ponownie możemy sprawdzić go za pomocą autoarfima
autoarfima(data=simArch, criterion = "HQIC", ar.max=5, ma.max=5, method = "partial", distribution.model="norm")
*----------------------------------*
* ARFIMA Model Fit *
*----------------------------------*
Mean Model : ARFIMA(0,0,2)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
ma1 -0.11131 0.031434 -3.5412 0.000398
ma2 -0.10991 0.031448 -3.4950 0.000474
sigma 0.72384 0.016184 44.7245 0.000000
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
ma1 -0.11131 0.080460 -1.3835 0.16653
ma2 -0.10991 0.107543 -1.0220 0.30677
sigma 0.72384 0.083658 8.6524 0.00000
LogLikelihood : -1096
Information Criteria
------------------------------------
Akaike 2.1976
Bayes 2.2123
Shibata 2.1976
Hannan-Quinn 2.2032
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 0.001732 0.9668
Lag[2*(p+q)+(p+q)-1][5] 0.273995 1.0000
Lag[4*(p+q)+(p+q)-1][9] 2.276878 0.9695
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 311.0 0
Lag[2*(p+q)+(p+q)-1][2] 423.5 0
Lag[4*(p+q)+(p+q)-1][5] 585.5 0
ARCH LM Tests
------------------------------------
Statistic DoF P-Value
ARCH Lag[2] 348.1 2 0
ARCH Lag[5] 373.2 5 0
ARCH Lag[10] 380.7 10 0
Nyblom stability test
------------------------------------
Joint Statistic: 1.714
Individual Statistics:
ma1 0.1458
ma2 0.9028
sigma 1.1342
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 0.846 1.01 1.35
Individual Statistic: 0.35 0.47 0.75
$rank.matrix
AR MA Mean ARFIMA HQIC converged
1 0 2 0 0 2.203 1
Algorytm wybrał MA(2), co koresponduje z ujemną autokorelacją cząstkową dwóch rzędów. Ale znowu jak spojrzymy na test Nybloma, okaże się, że jest to niestabilny model. W dodatku test ARCH LM informuje o występowaniu efektu ARCH w składnikach losowych, tak samo test Weighted Ljung-Boxa dla wariancji reszt ma p-value = 0. Natomiast test Weighted Ljung-Boxa dla samych reszt daje p-value dużo powyżej 0.05, co wynika z faktu, że wszystkie autokorelacje zostały uwzględnione w modelu MA(2).
Mamy więc podstawy do stworzenia modelu ARCH. Robimy to dwóch krokach.
Krok 1. Budujemy najprostszy model teoretyczny, ale tym razem bez fixed.pars:
myGarch1 <- ugarchspec(variance.model = list(model = "sGARCH",
garchOrder = c(1, 0)),
distribution.model = "norm", mean.model = list(armaOrder = c(0, 0)))
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : sGARCH(1,0)
Mean Model : ARFIMA(0,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu -0.006221 0.011653 -0.53384 0.59345
omega 0.109187 0.008094 13.49034 0.00000
alpha1 0.803593 0.071384 11.25730 0.00000
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu -0.006221 0.011105 -0.56021 0.57534
omega 0.109187 0.008383 13.02461 0.00000
alpha1 0.803593 0.073067 10.99798 0.00000
LogLikelihood : -735.2
Information Criteria
------------------------------------
Akaike 1.4765
Bayes 1.4912
Shibata 1.4764
Hannan-Quinn 1.4820
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 3.057 0.08039
Lag[2*(p+q)+(p+q)-1][2] 3.169 0.12628
Lag[4*(p+q)+(p+q)-1][5] 3.974 0.25734
d.o.f=0
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 0.2462 0.6197
Lag[2*(p+q)+(p+q)-1][2] 0.9056 0.5299
Lag[4*(p+q)+(p+q)-1][5] 1.9559 0.6289
d.o.f=1
Weighted ARCH LM Tests
------------------------------------
Statistic Shape Scale P-Value
ARCH Lag[2] 1.313 0.500 2.000 0.2518
ARCH Lag[4] 2.120 1.397 1.611 0.4142
ARCH Lag[6] 2.382 2.222 1.500 0.5961
Nyblom stability test
------------------------------------
Joint Statistic: 0.4109
Individual Statistics:
mu 0.06427
omega 0.14734
alpha1 0.27249
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 0.846 1.01 1.35
Individual Statistic: 0.35 0.47 0.75
Sign Bias Test
------------------------------------
t-value prob sig
Sign Bias 1.1690 0.2427
Negative Sign Bias 0.2163 0.8288
Positive Sign Bias 0.6087 0.5429
Joint Effect 1.4816 0.6865
Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
group statistic p-value(g-1)
1 20 11.28 0.9141
2 30 15.32 0.9824
3 40 23.12 0.9796
4 50 32.20 0.9695
- autokorelacje w resztach modelu: nie występują (Ljung-Box Test on Standardized Residuals, p-value>0.05),
- autokorelacje w wariancji reszt modelu (Ljung-Box Test on Standardized Squared Residuals): nie występują, co oznacza, że efekt GARCH nie występuje w szeregu czasowym,
- stabilność (Nyblom stability test): model jest stabilny, ponieważ żadna statystyka nie przekracza wartości krytycznych,
- czy występują szoki nieuwzględnione przez model: nie występują (Sign Bias Test, p-value > 0.05)
- czy przyjęty rozkład reszt jest odpowiedni: rozkład normalny jest odpowiedni (Goodness-of-Fit Test, p>0.05 dla wszystkich kwantyli).
Powyższa diagnostyka dowodzi, że model jest poprawny.
Została ostatnia sprawa do sprawdzenia. Na samym początku robiliśmy test, z którego wynikało, że parametr AR(1) jest istotny statystycznie, choć wiedzieliśmy od początku, że żadnej autokorelacji nie ma. Ale teraz, kiedy mamy testy uwzględniające efekt ARCH, możemy sprawdzić jaka będzie ocena modelu, który zakładałby, że istnieje nie tylko ARCH(1), ale i AR(1). Wpisujemy więc armaOrder = c(1, 0):
myGarch1 <- ugarchspec(variance.model = list(model = "sGARCH",
garchOrder = c(1, 0),
submodel = NULL),
distribution.model = "norm", mean.model = list(armaOrder = c(1, 0)))
ugarchfit(spec = myGarch1, data = simArch1)
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : sGARCH(1,0)
Mean Model : ARFIMA(1,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu -0.006138 0.011482 -0.53458 0.59294
ar1 -0.024017 0.028336 -0.84758 0.39667
omega 0.109324 0.008095 13.50565 0.00000
alpha1 0.804331 0.071556 11.24056 0.00000
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu -0.006138 0.011090 -0.55346 0.57995
ar1 -0.024017 0.031426 -0.76424 0.44472
omega 0.109324 0.008389 13.03140 0.00000
alpha1 0.804331 0.072694 11.06468 0.00000
LogLikelihood : -734.9
Information Criteria
------------------------------------
Akaike 1.4777
Bayes 1.4974
Shibata 1.4777
Hannan-Quinn 1.4852
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 1.457 0.2273
Lag[2*(p+q)+(p+q)-1][2] 1.552 0.4090
Lag[4*(p+q)+(p+q)-1][5] 2.389 0.5982
d.o.f=1
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 0.1987 0.6558
Lag[2*(p+q)+(p+q)-1][2] 1.0633 0.4781
Lag[4*(p+q)+(p+q)-1][5] 2.1068 0.5934
d.o.f=1
Weighted ARCH LM Tests
------------------------------------
Statistic Shape Scale P-Value
ARCH Lag[2] 1.722 0.500 2.000 0.1894
ARCH Lag[4] 2.373 1.397 1.611 0.3640
ARCH Lag[6] 2.579 2.222 1.500 0.5545
Nyblom stability test
------------------------------------
Joint Statistic: 0.7708
Individual Statistics:
mu 0.06371
ar1 0.40036
omega 0.15814
alpha1 0.27546
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 1.07 1.24 1.6
Individual Statistic: 0.35 0.47 0.75
Sign Bias Test
------------------------------------
t-value prob sig
Sign Bias 1.1068 0.2687
Negative Sign Bias 0.1919 0.8478
Positive Sign Bias 0.5713 0.5680
Joint Effect 1.3374 0.7203
Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
group statistic p-value(g-1)
1 20 9.28 0.9685
2 30 22.70 0.7901
3 40 21.44 0.9899
4 50 26.40 0.9966
Skąd wiadomo, że ten drugi model jest gorszy? Po pierwsze widzimy, że ar1 jest nieistotny stat., ale po drugie wartości wszystkich kryteriów (AIC, BIC, HQC, SIC) zwiększyły się, co oznacza, że model się pogorszył. W sumie więc dostajemy informację, że dodanie autokorelacji obserwacji pogarsza jedynie model, a to znaczy, że autokorelacje faktycznie nie występują.
Ad 2B) W przykładzie 2B robiłem symulację ARCH dwóch rzędów. Co by się stało, gdybym użył jednak do dopasowania modelu dla jednego rzędu, czyli z przykładu 2A? Do funkcji ugarchfit wstawię więc myGarch1, ale symulację simArch2:
ugarchfit(spec = myGarch1, data = simArch2)
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : sGARCH(1,0)
Mean Model : ARFIMA(0,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
omega 0.35066 0.023680 14.8085 0
alpha1 0.80988 0.091434 8.8575 0
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
omega 0.35066 0.11587 3.0264 0.002475
alpha1 0.80988 0.19997 4.0500 0.000051
LogLikelihood : -1204
Information Criteria
------------------------------------
Akaike 2.4114
Bayes 2.4212
Shibata 2.4114
Hannan-Quinn 2.4151
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 0.06781 0.7945595
Lag[2*(p+q)+(p+q)-1][2] 6.96722 0.0121615
Lag[4*(p+q)+(p+q)-1][5] 15.92422 0.0002506
d.o.f=0
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 0.01798 0.8933177180472207
Lag[2*(p+q)+(p+q)-1][2] 48.79191 0.0000000000001286
Lag[4*(p+q)+(p+q)-1][5] 79.48513 0.0000000000000000
d.o.f=1
Weighted ARCH LM Tests
------------------------------------
Statistic Shape Scale P-Value
ARCH Lag[2] 97.16 0.500 2.000 0
ARCH Lag[4] 98.80 1.397 1.611 0
ARCH Lag[6] 99.68 2.222 1.500 0
Nyblom stability test
------------------------------------
Joint Statistic: 0.4387
Individual Statistics:
omega 0.2553
alpha1 0.2381
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 0.61 0.749 1.07
Individual Statistic: 0.35 0.47 0.75
Sign Bias Test
------------------------------------
t-value prob sig
Sign Bias 0.3514 0.7254
Negative Sign Bias 0.1107 0.9118
Positive Sign Bias 0.3619 0.7175
Joint Effect 0.3531 0.9497
Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
group statistic p-value(g-1)
1 20 97.32 0.000000000001632
2 30 98.24 0.000000001867482
3 40 114.00 0.000000002827673
4 50 105.30 0.000005407768343
Ocena modelu rzeczywiście jest zła: występują autokorelacje w resztach i wariancji, efekt ARCH nadal się pojawia, a rozkład reszt nie pasuje. Musismy więc rzeczywiście poprawić model do ARCH dwóch rzędów:
myGarch2 <- ugarchspec(variance.model = list(model = "sGARCH",
garchOrder = c(2, 0)),
distribution.model = "norm", mean.model = list(armaOrder = c(0, 0)))
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : sGARCH(2,0)
Mean Model : ARFIMA(0,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu -0.001293 0.013566 -0.0953 0.92408
omega 0.110512 0.011278 9.7993 0.00000
alpha1 0.384594 0.055023 6.9897 0.00000
alpha2 0.541667 0.062540 8.6611 0.00000
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu -0.001293 0.012938 -0.099924 0.92041
omega 0.110512 0.010805 10.227909 0.00000
alpha1 0.384594 0.044567 8.629512 0.00000
alpha2 0.541667 0.074556 7.265275 0.00000
LogLikelihood : -963
Information Criteria
------------------------------------
Akaike 1.9340
Bayes 1.9536
Shibata 1.9339
Hannan-Quinn 1.9414
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 3.253 0.0713
Lag[2*(p+q)+(p+q)-1][2] 3.341 0.1134
Lag[4*(p+q)+(p+q)-1][5] 4.082 0.2440
d.o.f=0
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 1.329 0.2491
Lag[2*(p+q)+(p+q)-1][5] 2.025 0.6126
Lag[4*(p+q)+(p+q)-1][9] 3.470 0.6795
d.o.f=2
Weighted ARCH LM Tests
------------------------------------
Statistic Shape Scale P-Value
ARCH Lag[3] 0.4403 0.500 2.000 0.5070
ARCH Lag[5] 0.9204 1.440 1.667 0.7567
ARCH Lag[7] 2.2697 2.315 1.543 0.6603
Nyblom stability test
------------------------------------
Joint Statistic: 0.4937
Individual Statistics:
mu 0.1045
omega 0.2665
alpha1 0.1167
alpha2 0.1563
Asymptotic Critical Values (10% 5% 1%)
Joint Statistic: 1.07 1.24 1.6
Individual Statistic: 0.35 0.47 0.75
Sign Bias Test
------------------------------------
t-value prob sig
Sign Bias 0.6479 0.5172
Negative Sign Bias 0.5606 0.5752
Positive Sign Bias 0.1738 0.8621
Joint Effect 1.0146 0.7977
Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
group statistic p-value(g-1)
1 20 11.72 0.8972
2 30 22.46 0.8007
3 40 25.68 0.9502
4 50 36.60 0.9046
Nastąpiła pełna poprawa. Podobnie jak poprzednio można porównać model dopisując ar1. Zobaczymy wtedy, że wszystkie kryteria wskazują na pogorszenie, a więc że pierwotna autokorelacja okazała się fałszem (już tego nie pokazuję).
Podsumowanie
Literatura: