setwd("/Users/user/Desktop/Arm/EE435 R")
cat(rep("\n",50))
#install.packages("vars")
library(vars)
#library(MTS)
library(quantmod)
library(fGarch)
library(quantmod) 
library(fBasics)
library(sn)
library(PerformanceAnalytics)
library(car)
library(tseries)
library(forecast)
library(fUnitRoots)

getSymbols("IPDCONGD", src="FRED")
dim(IPDCONGD)
tail(IPDCONGD)


getSymbols("IPNCONGD", src="FRED")
dim(IPNCONGD)
tail(IPNCONGD)

getSymbols("IPBUSEQ", src="FRED")
dim(IPBUSEQ)
tail(IPBUSEQ)

getSymbols("IPMAT", src="FRED")
dim(IPMAT)
tail(IPMAT)

IP = cbind(as.numeric(IPDCONGD),as.numeric(IPNCONGD),as.numeric(IPBUSEQ),as.numeric(IPMAT[1:96]))
dim(IP)
colnames(IP) <- c("IPD","IPN","IPB","IPM")


IP = log(IP)
zt = diff(IP)*100

#library(MTS)
#VARorder(IP)

library(vars)
tdx = c(1:892)/12+1947
tdx1 = c(1:988)/12+1939

par (mfcol=c(2,2))
plot(tdx ,diff(log(IPDCONGD)), xlab='year',ylab= 'IPD',type = 'l')

plot(tdx ,diff(log(IPNCONGD)), xlab='year',ylab= 'IPN',type = 'l')

plot(tdx ,diff(log(IPBUSEQ)), xlab='year',ylab= 'IPB',type = 'l')

plot(tdx1 ,diff(log(IPMAT)), xlab='year',ylab= 'IPM',type = 'l')


#/////////////////////////////////////////////////////////////////#

varfit=VAR(zt,p=2)
summary(varfit)

varfit.prd <- predict(varfit, n.ahead = 15, ci = 0.90)


impresp =irf(varfit)
plot(impresp)

fevd(varfit, start = 879 , n.ahead = 6)


#/////////////////////////////////////////////////////////////////#

getSymbols('ETH-USD',src='yahoo')
par (mfcol=c(2,1))
rate = (`ETH-USD`[,6])
rate = diff(log(as.numeric(rate)))
ts.plot(rate)
rate1 = na.omit(rate)
ts.plot(rate1)
acf(rate1)
pacf(rate1)
basicStats(rate1)

acf(rate1^2)
Box.test(rate^2, lag=10,type='Ljung')

auto.arima(rate1)

m1 <- arima(rate1,order = c(5,0,5))
acf(m1$residuals^2)
Box.test(m1$residuals^2,lag=10,type = 'Ljung')

summary(m1)
predict(m1,6)

m2 <- garchFit(~garch(1,1), data=rate1, trace = FALSE)
summary(m2)
predict(m2,6)

m3 <- garchFit(~arma(5,5)+garch(1,1), data=rate1, trace = FALSE)
summary(m3)
predict(m3,6)

#//////////////////////////////////////////////////////////#


getSymbols("CLVMNACSCAB1GQUK", src="FRED")
dim(CLVMNACSCAB1GQUK)
tail(CLVMNACSCAB1GQUK)


getSymbols("NAEXKP02CAQ189S", src="FRED")
dim(NAEXKP02CAQ189S)
tail(NAEXKP02CAQ189S)

getSymbols("GDPC1", src="FRED")
dim(GDPC1)
tail(GDPC1)

z = cbind(as.numeric(CLVMNACSCAB1GQUK[1:146]),as.numeric(NAEXKP02CAQ189S[1:146]),as.numeric(GDPC1[1:146]))

dim(z)
colnames(z) <- c("UK","CA","US")

zt = log(z)
zt = diff(zt) * 100


#library(MTS)
#VARorder(zt)

varfit=VAR(zt,p=4)
summary(varfit)

varfit.prd <- predict(varfit, n.ahead = 15, ci = 0.90)


impresp =irf(varfit)
plot(impresp)

fevd(varfit, n.ahead = 6)

zt <- as.data.frame(zt) 

a = zt$UK
b = zt$CA
c = zt$US

m1 = adfTest(a , lag = 3, type = c("ct"),title = NULL ,description = NULL)
m1@test$p.value

m2 = adfTest(b , lag = 3, type = c("ct"),title = NULL ,description = NULL)
m2@test$p.value

m3 = adfTest(c , lag = 3, type = c("ct"),title = NULL ,description = NULL)
m3@test$p.value

fit <- lm(a~b+c)
summary(fit)

error = residuals(fit)

m4 = adfTest(error,lag = 3, type = c("ct"),title = NULL ,description = NULL)
m4@test$p.value


a.L.1 = Lag(a,k=1)
b.L.1 = Lag(b,k=1)
c.L.1 = Lag(c,k=1)
error.L.1=Lag(error,k=1)
fit <- lm(a~a.L.1+b.L.1+c.L.1 + error.L.1)
summary(fit)

