如何解决EGARCH模型中的零除问题?

时间:2019-04-16 12:46:05

标签: python

我想编写一个EGARCH模型。但是我得到了除以零的错误。这是因为有时sigma_2变为零。

sigma_2的公式是:

$$ln(\sigma_t^2) = \omega + \alpha \Bigg( \frac{|\epsilon_{t-1}|}{\sigma_{t-1}} - \sqrt{\frac{2}{\pi}} \Bigg) + \gamma \frac{\epsilon_{t-1}}{\sigma_{t-1}} + \beta ln(\sigma_{t-1}^2)$$

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

    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]

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

    logL = -(-len(eps)/2 * np.log(2*math.pi) -0.5 *np.sum(np.log(sigma_2) + eps**2/sigma_2))

    return logL

因此,我得到的错误除以零,因为sigma_2有时为零。我认为这是因为np.exp(...)之间的值变得非常负。但是我该如何解决这个问题呢?

0 个答案:

没有答案