## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(tscopula)
library(stats4)
library(xts)
tsoptions <- list(hessian = TRUE, method = "Nelder-Mead", avoidzero= FALSE)


## ----define-data, fig.show='hold', fig.width = 6, fig.height = 3, dev.args =list(pointsize=9)----
data(bitcoin)
X <- (diff(log(bitcoin))[-1]) * 100 # log-returns (as percentages)
length(X)
plot(X, type = "h")

## ----arma-copula-profile, fig.show='hold', fig.width = 6, fig.height = 3, dev.args =list(pointsize=9)----
U <- strank(X)

copmod_Gauss <- armacopula(pars = list(ar = 0.95, ma = -0.85))
pts <- seq(from=0.01, to=0.99, length=51) + 0.005
profilefulcrum(U, copmod_Gauss, locations = pts)
abline(v = 0.45)

## ----arma-copula-fit----------------------------------------------------------
mod_Gauss <- vtscopula(copmod_Gauss, Vlinear(0.45))
fit_Gauss <- fit(mod_Gauss, U, tsoptions = tsoptions)
fit_Gauss

## ----dvinecopula2-------------------------------------------------------------
copmod_Frank <- dvinecopula2(family = "frank",
                             pars = list(ar = 0.95, ma = -0.85),
                             maxlag = 30)
mod_Frank <- vtscopula(copmod_Frank, Vlinear(0.45))
fit_Frank <- fit(mod_Frank, U, tsoptions = tsoptions)

AIC(fit_Gauss, fit_Frank)

## ----dvinecopula2-plots, fig.show='hold', fig.width = 6, fig.height = 3, dev.args =list(pointsize=9)----
plot(fit_Frank, plottype = "residual")
plot(fit_Frank, plottype = "kendall")

## ----margmods-----------------------------------------------------------------
marg_st <- fit(margin("st"), X)
marg_sst <- fit(margin("sst"), X)
marg_lp <- fit(margin("laplace", 
                      pars = c(mu = 0.2, scale = 2.7)), X)
marg_slp <- fit(margin("slaplace", 
                pars = c(mu = 0.2, scale = 2.7, gamma = 0.9)), X)
marg_dw <- fit(margin("doubleweibull", 
                      pars = c(mu = 0.2, shape = 0.8, scale = 2.7)), X)
marg_sdw <- fit(margin("sdoubleweibull", 
                pars = c(mu = 0.2, shape = 0.8, scale = 2.7, gamma = 0.9)), X)
AIC(marg_st, marg_sst, marg_slp, marg_lp, marg_dw, marg_sdw)

## ----fullmod-fit,fig.show='hold', dev.args =list(pointsize=9)-----------------
fullmod <- tscm(fit_Frank, margin = marg_dw)
fullmod <- fit(fullmod, as.numeric(X), 
               method = "full", tsoptions = tsoptions)
fullmod
AIC(marg_dw, fullmod)

## ----fullmod-plots1,fig.show='hold', dev.args =list(pointsize=9)--------------
plot(fullmod, plottype = "residual")
plot(fullmod, plottype = "kendall")
plot(fullmod, plottype = "margin")
plot(fullmod, plottype = "vtransform")
plot(fullmod, plottype = "volprofile")
plot(fullmod, plottype = "volproxy")

## ----fullmod-plots2, fig.show='hold', fig.width = 6, fig.height = 6, dev.args =list(pointsize=9)----
plot(fullmod, plottype = "glag")

