通过估计EGARCH模型将误差除以零

时间:2019-04-16 10:00:33

标签: python

我想估计一个带学生t分布的EGARCH模型。当我这样做时,我得到除以零的错误。

sigma ^ 2的公式为: $$ log(\ sigma ^ 2_t)= w + \ sum_ {i = 1} ^ a \ alpha_i g(z_ {ti})+ \ sum_ {i = 1} ^ p \ beta_i log(\ sigma ^ 2_ {ti })$$。 因此,得出sigma,我采用了指数函数。

def garch_filter(omega, alpha, g, beta, eps):
    iT = len(eps)
    sigma_2 = np.zeros(iT)

    for i in range(iT):
        if i==0:
            sigma_2[i] = np.exp(np.var(eps))
        else:
            sigma_2[i] = np.exp(omega + alpha*(np.abs(eps[i-1])/sigma_2[i-1] - math.sqrt(2/math.pi)) + g*eps[i-1]/sigma_2[i-1] + beta*np.log(sigma_2[i-1]))
    return sigma_2


def garch_loglike(vP, eps):
    iT = len(eps)
    omega = vP[0]
    alpha = vP[1]
    g = vP[2]
    beta = vP[3]
    v = vP[4]

    sigma_2 = garch_filter(omega, alpha, g, beta, eps)

    logL = -(len(eps)*np.log((gamma((v+1)/2))/(math.sqrt(3.14*(v-2)) *gamma(v/2)))-0.5*np.sum(np.log(sigma_2)) - ((v+1)/2) * np.sum(np.log(1+eps**2/(sigma_2*(v-2)))))
    return logL

我想最大化对数似然,这就是为什么我将logL最小化。 我在sigma_2的公式中除以零的原因是什么。 sigma_2总是大于零,对吧?

提前谢谢!

0 个答案:

没有答案