Can we introduce an user-defined optional lower-bound in the stationary constraint of the variance process?
Would it be possible to have a feature to set an EPSILON in the stationarity constraint?
Like:
1 - sum(alpha) - sum(beta) -0.5*sum(gamma) - EPSILON >= 0
The reason it that the optimiser sometimes give solution where the constraint is equal to zero, or very close like 1E-10, and that will give a crazy large long-term variance. This seems to sometimes happen when the return data covers a period of ever increasing variance.
By adding an EPSILON to the constraint we can force the variance process to have a minimal amount of mean reversion, e.g. EPSILON=1E-3 would give a variance half life of at most 1000 days, which is reasonable to impose?
Alternatively, we could also set an upper-bound on the long-term variance?
omega / [ 1 - sum(alpha) - sum(beta) - 0.5*sum(gamma) ] < max_LTV
edit: somewhere around here in the code https://github.com/bashtage/arch/blob/a61dc7d43a5ef123bee75eae3d3e12b6c472433e/arch/univariate/volatility.py#L1078
I could consider something liek this, but it is hard to generalize to all ARCH-type models.
I think when you want a sensible LRV the best choice is to use variance targetting, which writes the model as sigma2-bar (1-a-b) + a r(t-1)**2 + b sigma2(t-1) which always mean reverts to sigma2-bar as long as a+b<1. Of course, it is 1 then you have the same issue.