This note book is for the seminar in 2017/5/21
library(quantmod)
library(PerformanceAnalytics)
library(car)
library(FinTS)
library(rugarch)
Import Samsung DATA from google
samsung <- getSymbols('KRX:005930', src = "google")
samsung <- `KRX:005930`
colnames(samsung) <- c("open", "high", "low", "close", "volume")
samsung$ret <- dailyReturn(samsung$close)
samsung$var <- samsung$ret^2
samsung$abs <- abs(samsung$ret)
Plot Samsung Return Data with its unconditional mean and vairance
plot(samsung$ret)
abline(h=mean(samsung$ret),col='blue', lwd=3)
abline(h=sd(samsung$ret),col='red', lwd=3)
mean <- mean(samsung$ret)
std <- sqrt(var((samsung$ret)))
hist(samsung$ret, freq = FALSE)
curve(dnorm(x, mean=mean, sd=std),
col="darkblue", lwd=2, add=TRUE)
Plot returns with squared and abs returns
dataToplot = cbind(samsung$close, samsung$ret, samsung$var)
dataToplot = dataToplot[-1,]
plot.zoo(dataToplot, main="Samsung",col="black")
Compute the summary statistics for samsung return
table.Stats(samsung$ret)
plot autocorrelations of returns, returns^2 and abs(returns)
par(mfrow=c(2,1))
acf(samsung$ret)
acf(samsung$ret^2)
par(mfrow=c(1,1))
Simulate GARCH(1,1) process
specify GARCH(1,1) model
garch11.spec = ugarchspec(variance.model = list(garchOrder=c(1,1)),
mean.model = list(armaOrder=c(0,0)),
fixed.pars=list(mu = 0, omega=0.1, alpha1=0.1,
beta1 = 0.7))
set.seed(123)
garch11.sim1=ugarchpath(garch11.spec, n.sim=1000)
Use the plot method to plot simulated series and conditional volatility
par(mfrow=c(2,1))
plot(garch11.sim1, which=2)
plot(garch11.sim1, which=1)
par(mfrow=c(1,1))
Use qqPlot() function
qqPlot(garch11.sim1@path$seriesSim, ylab="GARCH(1,1) Returns")
par(mfrow=c(3,1))
acf(garch11.sim1@path$seriesSim, main="Returns")
acf(garch11.sim1@path$seriesSim^2, main="Returns^2")
acf(abs(garch11.sim@path$seriesSim), main="abs(Returns)")
par(mfrow=c(1,1))
Testing for ARCH/GARCH effects in returns
Use Box.text from stats package
Box.test(coredata(samsung$ret^2), type="Ljung-Box", lag = 12)
Box-Ljung test
data: coredata(samsung$ret^2)
X-squared = 408.95, df = 12, p-value < 2.2e-16
Use ArchTest() function from FinTS package fro Engle’s LM test
ArchTest(samsung$ret)
ARCH LM-test; Null hypothesis: no ARCH effects
data: samsung$ret
Chi-squared = 209.08, df = 12, p-value < 2.2e-16
Estimate GARCH(1,1)
Specify GARCH(1,1) model with only constant in mean equation
garch11.spec = ugarchspec(variance.model = list(garchOrder=c(1,1)),
mean.model = list(armaOrder=c(0,0)))
samsung.garch11.fit = ugarchfit(spec=garch11.spec, data=samsung$ret, solver.control = list(trace=1))
Iter: 1 fn: -6605.1768 Pars: 0.000810500 0.000005324 0.041645457 0.943992461
Iter: 2 fn: -6605.1768 Pars: 0.000809909 0.000005323 0.041641540 0.944001687
solnp--> Completed in 2 iterations
class(samsung.garch11.fit)
[1] "uGARCHfit"
attr(,"package")
[1] "rugarch"
slotNames(samsung.garch11.fit)
[1] "fit" "model"
names(samsung.garch11.fit@fit)
[1] "hessian" "cvar" "var"
[4] "sigma" "condH" "z"
[7] "LLH" "log.likelihoods" "residuals"
[10] "coef" "robust.cvar" "scores"
[13] "se.coef" "tval" "matcoef"
[16] "robust.se.coef" "robust.tval" "robust.matcoef"
[19] "fitted.values" "convergence" "kappa"
[22] "persistence" "timer" "ipars"
[25] "solver"
Show Garch Fit
samsung.garch11.fit
*---------------------------------*
* GARCH Model Fit *
*---------------------------------*
Conditional Variance Dynamics
-----------------------------------
GARCH Model : sGARCH(1,1)
Mean Model : ARFIMA(0,0,0)
Distribution : norm
Optimal Parameters
------------------------------------
Estimate Std. Error t value Pr(>|t|)
mu 0.000810 0.000347 2.3362 0.019483
omega 0.000005 0.000003 1.7963 0.072445
alpha1 0.041642 0.004227 9.8517 0.000000
beta1 0.944002 0.005477 172.3668 0.000000
Robust Standard Errors:
Estimate Std. Error t value Pr(>|t|)
mu 0.000810 0.000306 2.6440 0.008194
omega 0.000005 0.000010 0.5268 0.598331
alpha1 0.041642 0.013336 3.1225 0.001793
beta1 0.944002 0.015568 60.6354 0.000000
LogLikelihood : 6605.177
Information Criteria
------------------------------------
Akaike -5.1331
Bayes -5.1240
Shibata -5.1331
Hannan-Quinn -5.1298
Weighted Ljung-Box Test on Standardized Residuals
------------------------------------
statistic p-value
Lag[1] 5.319 2.109e-02
Lag[2*(p+q)+(p+q)-1][2] 19.143 7.471e-06
Lag[4*(p+q)+(p+q)-1][5] 34.993 1.226e-09
d.o.f=0
H0 : No serial correlation
Weighted Ljung-Box Test on Standardized Squared Residuals
------------------------------------
statistic p-value
Lag[1] 2.168 0.1409
Lag[2*(p+q)+(p+q)-1][5] 5.420 0.1228
Lag[4*(p+q)+(p+q)-1][9] 7.746 0.1444
d.o.f=2
Weighted ARCH LM Tests
------------------------------------
Statistic Shape Scale P-Value
ARCH Lag[3] 3.809 0.500 2.000 0.05097
ARCH Lag[5] 5.636 1.440 1.667 0.07311
ARCH Lag[7] 6.485 2.315 1.543 0.11184
Nyblom stability test
------------------------------------
Joint Statistic: 0.8879
Individual Statistics:
mu 0.06285
omega 0.14879
alpha1 0.51393
beta1 0.37188
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.01287 0.9897
Negative Sign Bias 1.50815 0.1316
Positive Sign Bias 0.16337 0.8702
Joint Effect 3.47889 0.3235
Adjusted Pearson Goodness-of-Fit Test:
------------------------------------
group statistic p-value(g-1)
1 20 69.06 1.318e-07
2 30 66.09 1.020e-04
3 40 110.71 8.649e-09
4 50 100.08 2.311e-05
Elapsed time : 0.3922601
Use extractor functions
estimating coefficients
coef(samsung.garch11.fit)
mu omega alpha1 beta1
8.099093e-04 5.322766e-06 4.164154e-02 9.440017e-01
unconditional mean in mean equation
uncmean(samsung.garch11.fit)
[1] 0.0008099093
unconditional variance: omega/(alpha1 + beta1)
uncvariance(samsung.garch11.fit)
[1] 0.0003707495
mean(samsung$ret^2)
[1] 0.0003808573
persistence: alpha1 + beta1
persistence(samsung.garch11.fit)
[1] 0.9856432
residuals: e(t)
plot.ts(residuals(samsung.garch11.fit), ylab="e(t)", col="blue")
plot.ts(sigma(samsung.garch11.fit), ylab="sigma(t)", col="blue")
illustrate plot method
plot(samsung.garch11.fit, which=1)
plot(samsung.garch11.fit, which=3)
plot(samsung.garch11.fit, which=5)