setwd("/Users/to_on/Desktop/BE TU (26)/EE435")
library(quantmod) 
library(fBasics)
library(sn)
library(PerformanceAnalytics)
library(car)
library(tseries)
library(forecast)
library(fGarch)
library(MTS)
getSymbols("IPDCONGD",src="FRED")
dim(IPDCONGD)
tail(IPDCONGD)
getSymbols("IPNCONGD",src="FRED")
dim(IPNCONGD)
getSymbols("IPBUSEQ",src="FRED")
dim(IPBUSEQ)
getSymbols("IPMAT",src="FRED")
dim(IPMAT)
IP = cbind(as.numeric(IPDCONGD),as.numeric(IPNCONGD),as.numeric(IPBUSEQ),as.numeric(IPMAT[-c(1:96)]))
dim(IP)
colnames(IP)<-c("IPD","IPN","IPB","IPM")
#1.1
IP=log(IP)
zt=diffM(IP)*100
MTSplot(zt)
#1.2
VARorder(zt)
m1=VAR(zt,6)
#MTSdiag(m1)
m2=refVAR(m1,thres=1.645)
#MTSdiag(m2)

#1.3
detach("package:MTS", unload = TRUE)
require(vars)
varfit1=VAR(zt, p=6)
summary(varfit1)
varfit2<-restrict(varfit1,thresh=1.645)
summary(varfit2)
impresp=irf(varfit2)
plot(impresp)

#1.4
fevd(varfit2,n.ahead = 20)

#1.5
detach("package:vars", unload = TRUE)
require(MTS)
VARpred(m2,6,879)

setwd("/Users/to_on/Desktop/BE TU (26)/EE435")

getSymbols("ETH-USD",from="2015-01-01",to="2021-05-24")
rate=diff(log(as.numeric(`ETH-USD`[,6])))
ETHlogreturn=na.omit(rate)
#2.1
acf(ETHlogreturn)
pacf(ETHlogreturn)
t.test(ETHlogreturn)
acf(ETHlogreturn^2)
pacf(ETHlogreturn^2)
Box.test(ETHlogreturn^2,lag=10,type = 'Ljung')
m1=garchFit(~garch(1,1),data=ETHlogreturn,trace=F)
summary(m1)
m2=garchFit(~garch(1,1),data=ETHlogreturn,cond.dist='std',trace=F)
summary(m2)
m3=auto.arima(ETHlogreturn)
summary(m3)
acf(m3$residuals^2)
Box.test(m3$residuals^2,lag=10,type = 'Ljung')
m4=garchFit(~garch(1,2),data=ETHlogreturn,cond.dist='std',trace=F)
summary(m4)
m5=garchFit(~garch(5,0),data=ETHlogreturn,cond.dist='std',trace=F)
summary(m5)
m6=garchFit(~garch(3,0),data=ETHlogreturn,cond.dist='std',trace=F)
summary(m6)


setwd("/Users/to_on/Desktop/BE TU (26)/EE435")
library(quantmod) 
library(fBasics)
library(sn)
library(PerformanceAnalytics)
library(car)
library(tseries)
library(forecast)
library(fGarch)
library(MTS)
library(fUnitRoots)
getSymbols("CLVMNACSCAB1GQUK",src="FRED")
dim(CLVMNACSCAB1GQUK)
tail(CLVMNACSCAB1GQUK)
getSymbols("NAEXKP01CAQ189S",src="FRED")
dim(NAEXKP01CAQ189S)
tail(NAEXKP01CAQ189S)
getSymbols("GDPC1",src="FRED")
dim(GDPC1)
tail(GDPC1)
x=cbind(as.numeric(CLVMNACSCAB1GQUK[21:146,]),as.numeric(NAEXKP01CAQ189S[77:202,]),as.numeric(GDPC1[133:258,]))
zt=log(x)
#ccm(zt)
colnames(zt)<-c("UKrealgdp","Canadarealgdp","USArealgdp")
#3.1
VARorder(zt)
detach("package:MTS", unload = TRUE)
require(vars)
varfit=VAR(zt,p=2)
summary(varfit)
varfit1 <- restrict(varfit, thresh=1.645)
summary(varfit1)
#3.2
impresp=irf(varfit1)
plot(impresp)
#3.3
fevd(varfit1, n.ahead=6)
#3.4
logUKrealgdp=log(CLVMNACSCAB1GQUK[21:146,])
m1 <- adfTest(logUKrealgdp, lags=3, type=c("ct"), title=NULL, description = NULL)
m1@test$p.value

logCanadarealgdp=log(NAEXKP01CAQ189S[77:202,])
m2 <- adfTest(logCanadarealgdp, lags=3, type=c("ct"), title=NULL, description = NULL)
m2@test$p.value

logUSArealgdp=log(GDPC1[133:258,])
m3 <- adfTest(logUSArealgdp, lags=3, type=c("ct"), title=NULL, description = NULL)
m3@test$p.value

m4 <- adfTest(diff(logUKrealgdp), lags=3, type=c("ct"), title=NULL, description = NULL)
m4@test$p.value
m5 <- adfTest(diff(logCanadarealgdp), lags=3, type=c("ct"), title=NULL, description = NULL)
m5@test$p.value
m6 <- adfTest(diff(logUSArealgdp), lags=3, type=c("ct"), title=NULL, description = NULL)
m6@test$p.value

fit1 <- lm(logCanadarealgdp~logUKrealgdp+logUSArealgdp)
summary(fit1)
error1=residuals(fit1)
m7 <- adfTest(error1, lags=3, type=c("nc"), title=NULL, description = NULL)
m7@test$p.value
fit2 <- lm(logUKrealgdp~logUSArealgdp+logCanadarealgdp)
summary(fit2)
error2=residuals(fit2)
m8 <- adfTest(error2, lags=3, type=c("nc"), title=NULL, description = NULL)
m8@test$p.value
fit3 <- lm(logUSArealgdp~logCanadarealgdp+logUKrealgdp)
summary(fit3)
error3=residuals(fit3)
m9 <- adfTest(error3, lags=3, type=c("nc"), title=NULL, description = NULL)
m9@test$p.value

#3.5
diff.logUKrealgdp=diff(logUKrealgdp)
diff.logUSArealgdp=diff(logUSArealgdp)
diff.logCanadarealgdp=diff(logCanadarealgdp)
diff.logUKrealgdp.L.1=Lag(diff(logUKrealgdp),k=1)
diff.logUSArealgdp.L.1=Lag(diff(logUSArealgdp),k=1)
diff.logCanadarealgdp.L.1=Lag(diff(logCanadarealgdp),k=1)
error1.L.1=Lag(error1,k=1)
error2.L.1=Lag(error2,k=1)
error3.L.1=Lag(error3,k=1)
fit11 <- lm(formula=diff.logUKrealgdp~diff.logUKrealgdp.L.1+diff.logUSArealgdp.L.1+diff.logCanadarealgdp.L.1+error1.L.1)
summary(fit11)
fit22 <- lm(formula=diff.logUSArealgdp~diff.logUKrealgdp.L.1+diff.logUSArealgdp.L.1+diff.logCanadarealgdp.L.1+error1.L.1)
summary(fit22)
fit33 <- lm(formula=diff.logCanadarealgdp~diff.logUKrealgdp.L.1+diff.logUSArealgdp.L.1+diff.logCanadarealgdp.L.1+error1.L.1)
summary(fit33)

