Unlimited learning, half price | 50% off

Last chance! 50% off unlimited learning

Sale ends in


highfrequency (version 0.6.5)

heavyModel: HEAVY Model estimation

Description

This function calculatest the High frEquency bAsed VolatilitY (HEAVY) model proposed in Shephard and Sheppard (2010). This function is used as a predictive volatility model built to exploit highfrequency data.

Usage

heavyModel(
  data,
  p = matrix(c(0, 0, 1, 1), ncol = 2),
  q = matrix(c(1, 0, 0, 1), ncol = 2),
  startingvalues = NULL,
  LB = NULL,
  UB = NULL,
  backcast = NULL,
  compconst = FALSE
)

Arguments

data

a (T x K) matrix containing the data, with T the number of days. For the traditional HEAVY model: K = 2, the first column contains the squared daily demeaned returns, the second column contains the realized measures.

p

a (K x K) matrix containing the lag length for the model innovations. Position (i, j) in the matrix indicates the number of lags in equation i of the model for the innovations in data column j. For the traditional heavy model p is given by matrix(c(0,0,1,1), ncol = 2) (default).

q

a (K x K) matrix containing the lag length for the conditional variances. Position (i, j) in the matrix indicates the number of lags in equation i of the model for conditional variances corresponding to series j. For the traditional heavy model introduced above q is given by matrix( c(1,0,0,1),ncol=2 ) (default).

startingvalues

a vector containing the starting values to be used in the optimization to find the optimal parameters estimates.

LB

a vector of length K indicating the lower bounds to be used in the estimation. If NULL it is set to a vector of zeros by default.

UB

a vector of length K indicating the upper bounds to be used in the estimation. If NULL it is set to a vector of Inf by default.

backcast

a vector of length K used to initialize the estimation. If NULL the unconditional estimates are taken.

compconst

a boolean variable. In case TRUE, the omega values are estimated in the optimization. In case FALSE, volatility targeting is done and omega is just 1 minus the sum of all relevant alpha's and beta's multiplied by the unconditional variance.

Value

A list with the following values: (i) loglikelihood: the log likelihood evaluated at the parameter estimates. (ii) likelihoods: an xts object of length T containing the log likelihoods per day. (iii) condvar: a (T x K) xts object containing the conditional variances (iv) estparams: a vector with the parameter estimates. The order in which the parameters are reported is as follows: First the estimates for omega then the estimates for the non-zero alpha's with the most recent lags first in case max(p) > 1, then the estimates for the non-zero beta's with the most recent lag first in case max(q) > 1. (v) convergence: an integer code indicating the successfulness of the optimization. See optim for more information.

Details

Assume there are T daily returns and realized measures in the period t. Let ri and RMi be the ith daily return and daily realized measure respectively (with i=1,,T).

The most basic heavy model is the one with lag matrices p of (0101) and q of (1001). This can be reprensented by the following equations: var(rt)=ht=w+αRMt1+βht1;w,α0,β[0,1] E(RMt)=μt=wR+αRRMt1+βRμt1;wR,αR,βR0,αR+βR[0,1]

Equivalently, they can be presented in terms of matrix notation as below: (htμt)=(wwR)+(0α0αR)(rt12RMt1)+(β00βR)(ht1μt1)

In this version, the parameters vector to be estimated is (w,wR,α,αR,β,βR).

In terms of startingvalues, Shephard and Sheppard recommend for this version of the Heavy model to set β be around 0.6 and sum of α+β to be close to but slightly less than one. In general, the lag length for the model innovation and the conditional covariance can be greater than 1. Consider, for example, matrix p is (0201) and matrix q is the same as above. Matrix notation will be as below: (htμt)=(wwR)+(0α10αR)(rt12RMt1)+(0α200)(rt22RMt2)+(β00βR)(ht1μt1)

In this version, the parameters vector to be estimated is (w,wR,α1,αR,α2,β,βR).

References

Shephard, N. and K. Sheppard (2010). Realising the future: forecasting with high frequency based volatility (heavy) models. Journal of Applied Econometrics 25, 197-231.

Examples

Run this code
# NOT RUN {
# Implementation of the heavy model on DJI:
returns <-  realized_library$open_to_close
bv      <-  realized_library$bv
returns <- returns[!is.na(bv)]
bv <- bv[!is.na(bv)] # Remove NA's
data <- cbind( returns^2, bv) # Make data matrix with returns and realized measures
backcast <- matrix(c(var(returns), mean(bv)), ncol = 1)

#For traditional (default) version:
startvalues <- c(0.004,0.02,0.44,0.41,0.74,0.56) # Initial values
output <- heavyModel(data = as.matrix(data,ncol=2), compconst=FALSE,
                     startingvalues = startvalues, backcast=backcast)
#For general version:
startvalues <- c(0.004, 0.02, 0.44, 0.4, 0.41, 0.74, 0.56) # Initial values;
p <- matrix(c(2, 0, 0, 1), ncol = 2)
q <- matrix(c(1, 0, 0, 1), ncol = 2)

heavy_model <- heavyModel(data = as.matrix(data, ncol = 2), p = p, q = q, compconst = FALSE,
                      startingvalues = startvalues, backcast = backcast)

# }

Run the code above in your browser using DataLab