#************************************************************ 
# Introduction to R 
# install.packages("fImport")
# install.packages("quantmod")
# install.packages("fBasics")
# install.packages("car")
# install.packages("xts")
# install.packages("lmtest")
# install.packages("sandwich")
#------------------------------------------------------------

# Clear data and Memory
rm(list=ls())

library(fImport)
library(quantmod)
library(fBasics)
library(car)
library(xts)
library(lmtest)
library(sandwich)
#environment in which to store data 
data <- new.env()

# FRED data in R
# set tickers
tickers <- c("FEDFUNDS", "UNRATE", "CPIAUCSL")
getSymbols( tickers, src = "FRED")
INFLATION <- 100*((1+diff(log(CPIAUCSL)))^12) - 100
colnames(INFLATION) <- "INFLATION"

# Time Series Plot
chartSeries(FEDFUNDS,theme="white")
chartSeries(UNRATE,theme="white")
chartSeries(INFLATION,theme="white")
chartSeries(INFLATION,theme="white", subset='2007-01::2017-07')


# Handing Missing observations 
dat1 <- merge(FEDFUNDS, UNRATE, INFLATION)
dat2 <- dat1[complete.cases(dat1),]
head(dat1)
head(dat2)
class(dat2)


# Multiple Time Series Graph
par(mfcol=c(3,1))
plot(dat2[,1],main=dimnames(dat2)[[2]][1],col="blue")
plot(dat2[,2],main=dimnames(dat2)[[2]][2],col="blue")
plot(dat2[,3],main=dimnames(dat2)[[2]][3],col="blue")

# Subsample for XTS data 
dat2a <- window(dat2,begin="1954-01-01",end="1970-12-31")
dat2b <- dat2["1971-02-01::"]
head(dat2b)

dat3 <- as.ts(dat2)

# Simple Regression 
# Before 1970 
OLS1 <- lm(UNRATE ~ INFLATION, data=dat2a)
summary(OLS1)
dwtest(OLS1)
coeftest(OLS1, df = Inf, vcov = NeweyWest)
plot(OLS1)

par(mfcol=c(1,1))
scatterplot(as.vector(dat2a$INFLATION),as.vector(dat2a$UNRATE))

# Whole Periods
OLS2 <- lm(UNRATE ~ INFLATION, data=dat2)
summary(OLS2)
dwtest(OLS2)
coeftest(OLS2, df = Inf, vcov = NeweyWest)

scatterplot(as.vector(dat2$INFLATION),as.vector(dat2$UNRATE))




# Yahoo Data in R

getSymbols("AAPL",from="2005-01-02", to="2016-12-31")
getSymbols("IBM",from="2005-01-02", to="2016-12-31")
getSymbols("^GSPC",from="2005-01-02", to="2016-12-31")
getSymbols("^VIX",from="2005-01-02", to="2016-12-31")

chartSeries(GSPC, theme="white") 
chartSeries(AAPL, theme="white") 
chartSeries(IBM, theme="white",subset='2007-01::2010-01') 
chartSeries(VIX, theme="white") 

AAPL.rtn = 100*diff(log(AAPL$AAPL.Adjusted))
IBM.rtn = 100*diff(log(IBM$IBM.Adjusted))
GSPC.rtn = 100*diff(log(GSPC$GSPC.Adjusted))

chartSeries(AAPL.rtn, theme="white",subset='2007::2010')
chartSeries(IBM.rtn, theme="white",subset='2007::2010')
chartSeries(GSPC.rtn, theme="white",subset='2007::2010')

par(mfcol=c(2,1))
plot(AAPL$AAPL.Adjusted,col="blue",main="Apple Stock Price")
plot(AAPL.rtn,col="blue",main="Apple Stock Daily Return")

# Descriptive Statistics and Histogram
basicStats(AAPL.rtn)
hist(AAPL.rtn,nclass=15)
basicStats(IBM.rtn)
hist(IBM.rtn,nclass=15)

apple.capm <- lm(AAPL.rtn ~ GSPC.rtn)
summary(apple.capm)

ibm.capm <- lm(IBM.rtn ~ GSPC.rtn)
summary(ibm.capm)

# Merged Data and use data 
findata <- cbind(IBM.rtn, AAPL.rtn)
class(findata)
colnames(findata) <- c("ibm","apple")
class(findata)
head(findata)

# Plot subset of Data
par(mfcol=c(2,1))
plot(findata$ibm["2007::2012"],col="blue")
plot(findata$apple["2007::2012"],col="red")


