setwd("/Users/Orachai/Documents/BE/4TH YEAR 2ND SEMESTER/EE435")
cat(rep("\n",50))
library(quantmod) 
library(fBasics)
library(sn)
library(PerformanceAnalytics)
library(car)
library(tseries)
library(forecast)
library(fGarch)
library(fUnitRoots)

getSymbols("CAT",from="2006-01-03",to="2017-04-13")
rt = diff(log(as.numeric(CAT[,6])))
acf(rt)
Box.test(rt,lag=10,type='Ljung')
acf(rt^2)
Box.test(rt^2,lag=10,type='Ljung')

m1=garchFit(~arma(1,0)+garch(1,1),data=rt,trace=F)
summary(m1)
#plot(m1)
#13
#0

m2=garchFit(~garch(1,1),data=rt,cond.dist="std",trace=F)
summary(m2)
#plot(m2)
#13
#0

predict(m2,5)

#95%confidenceinterval
#1
0.0005003177 + 1.96^(0.1528751)
0.0005003177 - 1.96^(0.1528751)
#2
0.0005003177 + 1.96^(0.01534419)
0.0005003177 - 1.96^(0.01534419)
#3
0.0005003177 + 1.96^(0.01540002)
0.0005003177 - 1.96^(0.01540002)
#4
0.0005003177 + 1.96^(0.01545500)
0.0005003177 - 1.96^(0.01545500)
#5
0.0005003177 + 1.96^(0.01550916)
0.0005003177 - 1.96^(0.01550916)

da=read.table("m-kovw-5116.txt",header=T)

rt2=log(da$ko+1)
t.test(rt2)
Box.test(rt2,lag=10,type='Ljung')
Box.test(rt2^2,lag=10,type='Ljung')

m3=garchFit(~arma(1,0)+garch(1,1),data=rt2,trace=F)
summary(m3)

m4=garchFit(~arma(1,0)+garch(1,1),data=rt2,cond.dist="std",trace=F)
summary(m4)

m5=garchFit(~garch(1,1),data=rt2,trace=F)
summary(m5)

m6=garchFit(~garch(1,1),data=rt2,cond.dist="std",trace=F)
summary(m6)


getSymbols("^GSPC",from="2005-01-02",to="2021-03-31")
rt3 = diff(log(as.numeric(GSPC[,6])))
rt3p = rt3*100

t.test(rt3p)
Box.test(rt3p,lag=10,type='Ljung')
acf(rt3p)
pacf(rt3p)

m7=arima(rt3p,order=c(0,1,0))
acf(m7$residuals^2)
Box.test(m7$residuals^2,lag=10,type='Ljung')

m9=garchFit(~arma(0,1)+garch(1,1),data=rt3p,trace=F)
summary(m9)
#plot(m9)
#13
#0

m10=garchFit(~arma(0,1)+garch(1,1),data=rt3p,cond.dist="std",trace=F)
summary(m10)

predict(m10,5)


#4
da2=read.table("m-deciles.txt",header=T)
mrt=log(da2$CAP9RET+1)
acf(mrt)
t.test(mrt)
Box.test(mrt,lag=10,type='Ljung')
at=mrt-mean(mrt)
Box.test(mrt^2,lag=10,type="Ljung")

m11 = garchFit(~arma(1,0)+garch(1,0),data=mrt,trace=F)
summary(m11)

m12 = garchFit(~arma(1,0)+garch(1,0),data=mrt,cond.dist="std",trace=F)
summary(m12)

m13 = garchFit(~garch(1,0),data=mrt,trace=F)
summary(m13)

m14 = garchFit(~garch(1,0),data=mrt,cond.dist="std",trace=F)
summary(m14)