Glosten, Jagannathan, and Runkle (1993) modeled asymmetry in the GARCH process. GJR_GARCH (1,1,1) has the following format:
Here, the condition It-1=0, if and It-1=1 if holds true. The following code is based on the codes written by Kevin Sheppard:
import numpy as np from numpy.linalg import inv import matplotlib.pyplot as plt from matplotlib.mlab import csv2rec from scipy.optimize import fmin_slsqp from numpy import size, log, pi, sum, diff, array, zeros, diag, dot, mat, asarray, sqrt # def gjr_garch_likelihood(parameters, data, sigma2, out=None): mu = parameters[0] omega = parameters[1] alpha = parameters[2] gamma = parameters[3] beta = parameters[4] T = size(data,0) eps = data-mu for t in xrange(1,T): sigma2[t]=(omega+alpha*eps[t-1]**2+gamma*eps[t-1]**2*(eps[t- 1]<0)+beta*sigma2[t-1]) logliks = 0.5*(log(2*pi) + log(sigma2) + eps**2/sigma2) loglik = sum(logliks) if out is None...