Spaces:
Running
Running
| import pytest | |
| import numpy as np | |
| import pandas as pd | |
| from statsmodels.tsa.statespace.structural import UnobservedComponents | |
| def test_unobserved_components_fit(): | |
| # Simulate monthly returns (short history: 24 observations) | |
| np.random.seed(42) | |
| dates = pd.date_range('2020-01-01', periods=24, freq='ME') | |
| returns = np.random.normal(0.01, 0.04, size=24) + np.sin(np.linspace(0, 4*np.pi, 24))*0.02 | |
| series = pd.Series(returns, index=dates) | |
| # Using 'local linear trend' and 'seasonal' with period=12 | |
| model = UnobservedComponents(series, level='local linear trend', seasonal=12) | |
| res = model.fit(disp=False) | |
| assert res is not None | |
| # Check forecast | |
| fc = res.get_forecast(steps=1) | |
| forecast = fc.predicted_mean.iloc[0] | |
| se = fc.se_mean.iloc[0] | |
| # Assert values are reasonable and not NaN | |
| assert not np.isnan(forecast) | |
| assert not np.isnan(se) | |
| assert se > 0 | |