# EE435 Assigment 5 ID:6104640112
setwd("/Users/jharit/Desktop")
cat(rep("\n",50))  #clear R Console
library(quantmod) 
library(fBasics)
library(sn)
library(PerformanceAnalytics)
library(car)
library(tseries)
library(forecast)
library(data.table)
library(dplyr)
# install.packages("fGarch")
library(fGarch)
require(quantmod)


#Question 1
getSymbols("CAT",from="2006-01-03",to="2017-04-13")
rt <- diff(log(as.numeric(CAT[,6])))
#1a
pacf(rt)
Box.test(rt,lag=10,type='Ljung')

#1b
Box.test(rt^2,lag=10,type='Ljung')

#1c
m2 <- garchFit(~arma(1,0)+garch(1,1), data = rt,trace=F)
summary(m2)
plot(m2 , which = 13)

#1d
m3 <- garchFit(~garch(1,1), data = rt,trace=F, cond.dist = "std" )
summary(m3)               
plot(m3 , which = 13)


#1f
predict(m3,5)

#Question 2
KOdata = read.table(file="m-kovw-5116.txt", header =T)
KOrt <- (log(as.numeric(KOdata[,3]+1)))

#2a
KOrt
t.test(KOrt)
pacf(KOrt)
Box.test(KOrt,lag=10,type='Ljung')
Box.test(KOrt^2,lag=10,type='Ljung')

#2b
m4 <- garchFit(~arma(1,0)+garch(1,1), data = KOrt,trace=F)
summary(m4)
plot(m4, which=13)


#2c
m5 <- garchFit(~arma(1,0)+garch(1,1), data = KOrt,trace=F, cond.dist = "std")
summary(m5)
plot(m5 , which = 13)


#2d
m6 <- garchFit(~garch(1,1), data = KOrt,trace=F,)
summary(m6)
plot(m6 , which = 13)

#2e
m7 <- garchFit(~garch(1,1), data = KOrt,trace=F, cond.dist = "std")
summary(m7)
plot(m7, which = 13)

#Question3
getSymbols("^GSPC",from="2005-01-02",to="2021-03-31")
SPrt <- diff(log(as.numeric(GSPC[,6])))

#3a
t.test(SPrt)
pacf(SPrt)
Box.test(SPrt,lag=10,type='Ljung')

#3b
m8 = auto.arima(SPrt)
m8
pacf(m8$residuals^2)
Box.test(m8$residuals^2,lag=10,type='Ljung')

m9 <- garchFit(~arma(1,0)+garch(1,1), data = SPrt,trace=F,)
summary(m9)
plot(m9 , which = 13)

#3c
m10 <- garchFit(~arma(1,0)+garch(1,1), data = SPrt,trace=F,cond.dist = "std")
summary(m10)

#3d
predict(m10)


#Question4
Deciledata = read.table(file="m-deciles.txt", header =T)
DCrt = log(Deciledata[,10]+1)


#4a
t.test(DCrt)
Box.test(DCrt,lag=10,type='Ljung')

m11 <- auto.arima(DCrt)
m11

#4b
Box.test(DCrt^2,lag=10,type='Ljung')

#4c
m12 <- garchFit(~arma(1,0)+garch(1,0), data = DCrt,trace=F,)
summary(m12)
plot(m12 , which =13)


#4d
m13 <- garchFit(~arma(1,0)+garch(1,0), data = DCrt,trace=F,cond.dist = "std")
summary(m13)
plot(m13 , which = 13)

#4e
m14 <- garchFit(~garch(1,0), data = DCrt,trace=F,)
summary(m14)
plot(m14 , which =13)


#4f
m15 <- garchFit(~garch(1,0), data = DCrt,trace=F,cond.dist = "std")
summary(m15)
plot(m15 , which =13)


