Вы находитесь на странице: 1из 16

Tarea Examen, Modelos univariados

con heteroscedasticidad condicional


UNAM Facultad de Ciencias
Profesor: C
esar Almenara Martnez
Ayudante: Danae Mirel Martnez Vargas
Medina Jimenez Sonny Alberto
Nava Rosales Eduardo

11 de Junio de 2015

Ejericio 8

###############################################
# Tarea Examen S.T
"Modelos univariados
#
# con Heteroscedasticidad Condicional"
#
# Medina Jim
enez Sonny Alberto
#
# Nava Rosales Eduardo
#
###############################################

8. El paquete stats de R contiene los precios de cierre


diarios de cuatro de los
ndices #accionarios m
as
importantes en Europa, de 1991 a 1998. Ajuste un
modelo GARCH a los log rendimientos de cada una de
estas series y comente sus resultados.
#install.packages("fGarch")
#install.packages("datasets")
#install.packages("fitdistrplus")
rm(list=ls())
## Librerias requeridas para el uso del paquete fGarch
library(stats)
library(timeDate)
library(timeSeries)
library(fBasics)
library(MASS)
library(fGarch)
2

library(datasets)
library("fitdistrplus")
#Separamos a las series de tiempo, renombramos con el c
odigo
del
ndice accionario y redefinimos como los logrendimientos
de la serie.
dax<-EuStockMarkets[,1]
dax<-diff(log(dax))
smi<-EuStockMarkets[,2]
smi<-diff(log(smi))
cac<-EuStockMarkets[,3]
cac<-diff(log(cac))
ftse<-EuStockMarkets[,4]
ftse<-diff(log(ftse))

#Graficamos la densidad de los logrendimientos


plot(density(dax), xlim=c(-.05,.05))
plot(density(smi), xlim=c(-.05,.05))
plot(density(cac), xlim=c(-.05,.05))
plot(density(ftse), xlim=c(-.05,.05))
#Gr
aficas conjuntas
par(mfrow=c(2,1))
plot(density(dax), xlim=c(-.05,.05))
qqnorm(dax)
qqline(dax, col = 2)
plot(density(smi), xlim=c(-.05,.05))
qqnorm(smi)
qqline(smi, col = 2)
plot(density(cac), xlim=c(-.05,.05))
qqnorm(cac)
qqline(cac, col = 2)

plot(density(ftse), xlim=c(-.05,.05))
qqnorm(ftse)
qqline(ftse, col = 2)

#Gr
aficas de las series de logrendimientos
par(mfrow=c(2,2))
plot(dax)
plot(smi)
plot(cac)
plot(ftse)
par(mfrow=c(1,1))

#Gr
aficas de las funciones ACF y PACF de los rendimientos
de las series originales
par(mfrow=c(2,1))
acf(dax,main="DAX")
pacf(dax,main="DAX")
acf(smi,main="SMI")
pacf(smi,main="SMI")

acf(cac,main="CAC")
pacf(cac,main="CAC")
acf(ftse,main="FTSE")
pacf(ftse,main="FTSE")

#Gr
aficas de las funciones ACF y PACF de los rendimientos
de las series al cuadrado, en general se observan efectos
ARCH
acf(dax^2,main="DAX al cuadrado")
pacf(dax^2,main="DAX al cuadrado")# GARCH propuestos: (2,2)
acf(smi^2,main="SMI al cuadrado")
pacf(smi^2,main="SMI al cuadrado")#GARCH propuestos:(2,2)
acf(cac^2,main="CAC al cuadrado")
pacf(cac^2,main="CAC al cuadrado")#GARCH propuestos: (2,1)
acf(ftse^2,main="FTSE al cuadrado")
pacf(ftse^2,main="FTSE al cuadrado")

#GARCH PROPUESTOS
(1,3),(3,3),(10,3),(1,10),(1,11),(3,10),(3,11),(10,11)

Box.test(dax^2, lag=10, type="Ljung")


#Se rechaza la hipotesis nula de no correlaci
on
Box.test(smi^2, lag=10, type="Ljung")
#Se rechaza la hipotesis nula
Box.test(cac^2, lag=10, type="Ljung")
#Se rechaza la hipotesis nula
Box.test(ftse^2, lag=10, type="Ljung")
#Se rechaza la hipotesis nula

#AJUSTE DE MODELOS GARCH PARA DAX


m1_dax<-garchFit(~garch(2,0), data=dax, trace=F)#ARCH(2)
summary(m1_dax)
m2_dax<-garchFit(~garch(1,0), data=dax, trace=F)#ARCH(1)
summary(m2_dax)

m3_dax<-garchFit(~garch(1,1), data=dax, trace=F)#GARCH(1,1)


summary(m3_dax)
m4_dax<-garchFit(~garch(2,1), data=dax, trace=F)#GARCH(1,1)
summary(m4_dax)
m5_dax<-garchFit(~garch(3,1), data=dax, trace=F)#GARCH(1,1)***
summary(m5_dax)
plot(m5_dax)
4
5
7
9
10
11
13
0
daxresid<-residuals(m5_dax, standardize=TRUE)
plot(daxresid)
dax_WN<-fitdistr(daxresid,"t")
dax_WN$estimate[3]
qqplot(qt(ppoints(1500), df = dax_WN$estimate[3]),daxresid)
qqline(daxresid, col = 2)
#elegimos errores t con 6 grados de libertad

#EL MODELO ELEGIDO ES UN GARCH(3,1) CON ERRORES t DE STUDENT

#AJUSTE DE MODELOS GARCH PARA SMI


m1_smi<-garchFit(~garch(1,0), data=smi, trace=F)#ARCH(1)
summary(m1_smi)
m2_smi<-garchFit(~garch(2,0), data=smi, trace=F)#ARCH(2)

summary(m2_smi)
m3_smi<-garchFit(~garch(1,1), data=smi, trace=F)#GARCH(1,1)**
summary(m3_smi)
m4_smi<-garchFit(~garch(2,1), data=smi, trace=F)#GARCH(2,1)
summary(m4_smi)
plot(m3_smi)
4
5
7
9
10
11
13
0
smiresid<-residuals(m3_smi, standardize=TRUE)
smi_WN<-fitdistr(daxresid,"t")
qqplot(qt(ppoints(1500), df = smi_WN$estimate[3]),smiresid)
qqline(smiresid, col = 2)#elegimos errores normales
##
#EL MODELO ELEGIDO ES UN GARCH(1,1) CON ERRORES NORMALES

#AJUSTE DE MODELOS GARCH PARA CAC


m1_cac<-garchFit(~garch(2,0), data=cac, trace=F)#ARCH(2)
summary(m1_cac)
m2_cac<-garchFit(~garch(2,1), data=cac, trace=F)#GARCH(2,1)
summary(m2_cac)
m3_cac<-garchFit(~garch(2,2), data=cac, trace=F)#GARCH(2,2)***

summary(m3_cac)
m4_cac<-garchFit(~garch(3,1), data=cac, trace=F)#GARCH(3,1)
summary(m4_cac)
plot(m3_cac)
4
5
7
9
10
11
13
0
cacresid<-residuals(m3_cac, standardize=TRUE)
cac_WN<-fitdistr(cacresid,"t")
qqplot(qt(ppoints(1500), df = cac_WN$estimate[3]), cacresid)
qqline(cacresid, col = 2)
#elegimos errores t con 8 grados de libertad
##
#EL MODELO ELEGIDO ES UN GARCH(2,2) con errores t de Student

#AJUSTE DE MODELOS GARCH PARA FTSE


m1_ftse<-garchFit(~garch(1,0), data=ftse, trace=F)#ARCH(1)
summary(m1_ftse)
m2_ftse<-garchFit(~garch(1,1), data=ftse, trace=F)#GARCH(1,1)***
summary(m2_ftse)
m3_ftse<-garchFit(~garch(2,1), data=ftse, trace=F)#GARCH(2,1)
summary(m3_ftse)

plot(m2_ftse)
4
5
7
9
10
11
13
0
ftseresid<-residuals(m2_ftse, standardize=TRUE)
ftse_WN<-fitdistr(cacresid,"t")
qqplot(qt(ppoints(1500), df = ftse_WN$estimate[3]), ftseresid)
qqline(ftseresid, col = 2)
#elegimos errores t con 8 grados de libertad
#EL MODELO ELEGIDO ES UN GARCH(2,1) con errores t de Student

Ejericio 9

9. #Descargue del sito http://finance.yahoo.com/ los precios


de cierre diarios del
ndice S&P500 del periodo de tiempo que
abarca del 20 de mayo de 2013 al 20 de mayo de 2015. Siga la
estructura del ejemplo 3.3 del cap
tulo 3 del libro T.S Ruey,
para analizar la serie de datos descargada. Emita sus
conclusiones basado en el an
alisis del tipo de modelos que
usted utiliz
o.

library(foreign)
library(timeDate)
library(timeSeries)
library(fBasics)
library(MASS)
library(fGarch)
library(tseries)
library(astsa)
setwd("C:/Users/Eduardo/Documents/F.Ciencias/Series de Tiempo")
data<-read.csv("sandp500adj.csv",header=TRUE)

#La serie comienza el 20 de mayo de 2013


fechas<-data[,1] #la bolsa solo trabaja de lunes a viernes
data<-ts(data,start=c(2013,05,20))
SyP<-data[,2]

11

#Iniciamos con un an
alisis grafico de la serie
#Graficamos y vemos tendencia a la alza, lo cual es
com
un para una serie financiera
par(mfrow=c(1,1))
plot.ts(SyP, main="Precio S&P")
#Obtenemos los Log-rendimientos
lSyP<-as.ts(diff(log(SyP),lag=1))
#La nueva serie se comporta como un ruido blanco
plot(lSyP, main="Log-rendimientos S&P")

#1.ESPECIFICAR UNA ECUACI


ON DE MEDIAS CON BASE EN PROBAR
DEPENDENCIA SERIAL FUE IMPOSIBLE PUES LA SERIE DE
LOGRENDIMIENTOS TIENE UN COMPORTAMIENTO PARECIDO A UN RUIDO
BLANCO.
#2.LOS RESIDUALES DE LA ECUACI
ON DE MEDIAS SE CONVIRTIERON
EN LA SERIE DE LOG-RENDIMIETNOS MISMA.
#3.ES POR ESO QUE PROCEDIMOS AL AJUSTE DE MODELOS GARCH.
par(mfrow=c(2,1))
plot(density(lSyP), xlim=c(-.05,.05))
#Podemos notar que la densidad empirica tiene
forma de campana aunque no se parece a una normal
qqnorm(lSyP)
qqline(lSyP)
#Con el QQplot notamos que la series no parece
seguir una distribucion normal estandar

#Analizamos las ACFs y las PACFs de las series


par(mfrow=c(2,1))
acf(lSyP,main="ACF Log-rendimientos S&P")
pacf(lSyP,main="PACF Log-rendimientos S&P")

#Analizamos los ACFs y las PACFs de las series al cuadrado


acf(lSyP^2,main="ACF Log-rendimientos al cuadrado de S&P")
pacf(lSyP^2,main="PACF Log-rendimientosal cuadrado de S&P")
#Parece que estas series se podrian modelar con un ARMA(p,q)
#Realizamos una prueba para ver si existe correlaci
on
Box.test(lSyP^2, lag=10, type="Ljung")#Se rechaza la hipotesis nula
#ajustamos algunos modelos para seleccionar alguno
m1_SyP<-garchFit(~garch(3,0), data=lSyP, trace=F)#ARCH(3)*
summary(m1_SyP)
m2_SyP<-garchFit(~garch(2,0), data=lSyP, trace=F)#ARCH(2)
summary(m2_SyP)
m3_SyP<-garchFit(~garch(1,1), data=lSyP, trace=F)#GARCH(1,1)***
summary(m3_SyP)
m4_SyP<-garchFit(~garch(2,1), data=lSyP, trace=F)#GARCH(2,1)
summary(m4_SyP)
m5_SyP<-garchFit(~garch(2,2), data=lSyP, trace=F)#GARCH(2,2)
summary(m5_SyP)

#Elegimos el GARCH(1,1) Debido a su AIC, BIC, a la


significancia de sus parametros
plot(m3_SyP)
1
7
10
11
13#No parece que los residuales sigan una distribucion
Gaussiana estandar
0
SyPresid<-residuals(m3_SyP, standardize=TRUE)
plot(SyPresid)
SyP_WN<-fitdistr(SyPresid,"t")
#ajustamos una t para saber los grados de libertad
qqplot(qt(ppoints(1500), df = SyP_WN$estimate[3]),SyPresid)
#Comparamos los QQplot
qqline(SyPresid, col = 2)
#Tampoco parecen seguir una distribucion t

#EL MODELO ELEGIDO ES UN GARCH(1,1) CON ERRORES t DE STUDENT


SIN EMABRGO TIENEN COLAS MUY PESADAS Y ASIM
ETRICAS

Вам также может понравиться