I am working with the following simple ARMA(1,1) model: $$ z_{t+1} = \phi z_{t} + \theta\varepsilon_{t} + \varepsilon_{t+1} $$ In my case $\theta$ depends on some other parameters, and, therefore, I know that $\theta > 1$.
Let us generate 1000 ARMA(1,1) samples with $\phi = 0.95$, $\theta = 0.5$, $\sigma = 0.08$ and estimate the parameters.
import numpy as np
import statsmodels.api as sm
from statsmodels.tsa.arima_process import ArmaProcess
process = ArmaProcess(np.r_[1, -0.95], np.r_[1, 0.5])
y = process.generate_sample(1000, scale=0.08)
model = sm.tsa.ARMA(y, (1, 1)).fit(trend='nc', disp=0)
The result is [0.96069232 0.51912881 0.080], which is quite close to the true values.
Next, lets us try parameters $\phi = 0.95$, $\theta = 2$, $\sigma = 0.08$, i.e. change the following row in the code above:
process = ArmaProcess(np.r_[1, -0.95], np.r_[1, 2])
The result is [0.95668055 0.49700497 0.156] and there is no errors and warnings!
By default, in order to have distinguishable auto-covariance function we assume $|\theta| < 1$. Therefore, in the result the estimator is close to $\frac{1}{\theta}$. Though, the standard deviation of the variance is far from the true value.
Is there a way to estimate the case when $\theta > 1$? From what I can see, all packages use the fact that $|\theta| < 1$.