#Assignment 3
setwd("D:/uni year 3/EE435")
#install.packages("quantmod")  
#install.packages("fBasics") 
#install.packages("sn")  
#install.packages("PerformanceAnalytics") 
#install.packages("car") 
#install.packages("tseries")  
#install.packages("forecast") 
library(quantmod) 
library(fBasics)
library(sn)
library(PerformanceAnalytics)
library(car)
library(tseries)
library(forecast)
#1 GDP
da = read.table(file = "q-gdpmc1.txt", header = TRUE)
gdp = da[,4]
log_gdp = log(gdp)
gdp_growth = diff(log_gdp)
#1a plot the graph from 1980 to 2012
new_gdp = da[133:264, 4]
newgdp_growth = diff(log(new_gdp))
plot(newgdp_growth, type = 'l')
#1b
Box.test(log_gdp, lag = 12, type = 'Ljung')
#1c
t.test(gdp_growth)

#2 Amazon
#2a
da2 = read.table("d-amzn3dx.txt", header = TRUE)
R_amzn = da2[,2]
R_vw = da2[,3]
R_ew = da2[,4]
R_sp = da2[,5]
table.Stats(R_amzn)
table.Stats(R_vw)
table.Stats(R_ew)
table.Stats(R_sp)
#2b
#logreturn = ln(1+simple return)
logreturn_amzn = log(1+R_amzn)
logreturn_vw = log(1+R_vw)
logreturn_ew = log(1+R_ew)
logreturn_sp = log(1+R_sp)
table.Stats(logreturn_amzn)
table.Stats(logreturn_vw)
table.Stats(logreturn_ew)
table.Stats(logreturn_sp)
#2c test mean of AMZN logreturn = 0
t.test(logreturn_amzn)
#2d histogram and sample density plot
hist(logreturn_amzn, nclass = 40)
chart.Histogram(logreturn_amzn, methods =c("add.normal"))

#3
da3 = read.table(file = "m-abt3dx.txt", header = TRUE)
R_abt = da3[,2]
R_vw_m = da3[,3] #use _m to represent monthly data
R_ew_m =da3[,4]
R_sp_m = da3[,5]
table.Stats(R_abt)
table.Stats(R_vw_m)
table.Stats(R_ew_m)
table.Stats(R_sp_m)
#3b
logreturn_abt = log(1+R_abt)
logreturn_vw_m = log(1+R_vw_m)
logreturn_ew_m = log(1+R_ew_m)
logreturn_sp_m = log(1+R_sp_m)
table.Stats(logreturn_abt)
table.Stats(logreturn_vw_m)
table.Stats(logreturn_ew_m)
table.Stats(logreturn_sp_m)
#3c test mean of logreturn of abt = 0
t.test(logreturn_abt)
#3d histogram and sample density plot
hist(logreturn_abt, nclass = 40)
chart.Histogram(logreturn_abt, methods =c("add.normal"))

#4 monthly stock return of VW
#4a mean of vw = 0
#H0: mean = 0
#H1: mean =/ 0
t.test(logreturn_vw_m)

#4b test skewness(m3)
#H0: m3 = 0
#H1: m3 =/ 0
m3 = skewness(logreturn_vw_m)
tcal = m3/sqrt(6/length(logreturn_vw_m))
tcal
pvalue_m3 = 2*pnorm(tcal)
pvalue_m3

#4c
#H0: Kurtosis = 3 or Excess kurtosis = 0
#H1: Kurtosis =/ 3 or Excess kurtosis =/ 0
K = kurtosis(logreturn_vw_m)
tcal2 = K/sqrt(24/length(logreturn_vw_m))
tcal2
pvalue_K = 2*(1-pnorm(tcal2))
pvalue_K

#5 
#5ai
#H0: logreturn of AMZN is symmetry
#H1: logreturn of AMZN is not symmetry
m3_amzn = skewness(logreturn_amzn)
tcal_amzn = m3/sqrt(6/length(logreturn_amzn))
tcal_amzn
#5aii
#H0: excess kurtosis = 0
#H1: excess kurtosis =/ 0
K_amzn = kurtosis(logreturn_amzn)
K_amzn
tcal_Kamzn = K_amzn/sqrt(24/length(logreturn_amzn))
tcal_Kamzn
length(logreturn_amzn)
#5aiii 95 percent confidence interval
t.test(logreturn_amzn)
#5b
par(mfrow=c(1,1))
m1=acf(logreturn_amzn)
names(m1)
m1$acf
m2 = pacf(logreturn_amzn)
names(m2)
m2$acf
Box.test(logreturn_amzn, lag = 12, type = 'Ljung')

#6
da4 = read.table("d-exuseu.txt", header = TRUE)
#6a calculate daily log return of exchange rate
spotrate = da4[,4]
logreturn_ex = diff(log(spotrate))
#6b
table.Stats(logreturn_ex)
#6c density plot
chart.Histogram(logreturn_ex, methods = c("add.normal"))
#6d test mean = 0
t.test(logreturn_ex)
