The claim
The per-lag check accepted all 3042 ETS(A,N,A) grid models, 1482 of which do not have decaying weights, and 193 of 200 random GUM models with lags (1, 12), 10 of which do not have decaying weights.
Scope: population: pure additive lagged SSOE models; conditions: ETS(A,N,A) with m = 4 and m = 12, alpha and gamma on the grid 0.05, 0.10, ..., 1.95, GUM with lags (1, 12) and normal random F, g and w (standard deviations 0.35, 0.175, 0.175; mean of w 1), largest mode modulus from the PBH reference, band of 1e-8 around 1; not for: models with adaptive regressors, multiplicative models · Simulation: E1 (R1, R3, R4, R6), artefacts A1, A3 · Assumes: C13, C14 · Limitations: L1, L2 · Contradicts: Svetunkov (2016), gum(), documentation of the argument bounds · Planned: lab plan PL1, planned 21 October 2026 · Outcome: computed from the recorded results
Evidence
Planned test of the per-lag check (lab plan PL1, run RN7): confirm.py --test perlag --seed 2026 --n 200 computed, for 3042 ETS(A,N,A) models (m = 4 and 12, alpha and gamma on the grid 0.05, 0.10, ..., 1.95) and 200 GUM models with lags (1, 12) (entries of F normal with mean 0 and standard deviation 0.35, of g with mean 0 and standard deviation 0.175, of w with mean 1 and standard deviation 0.175), the per-lag check's largest eigenvalue modulus and the PBH reference, and counted the models on which the two decisions disagree beyond a band of 1e-8 around 1.
Setup: studied per-lag check · cases ETS(A,N,A) grid, random GUM models with lags (1, 12) · procedure comparison with a reference, PBH reference · lens admissibility decision
- R1 models accepted by the per-lag check that do not forget their initial states = 1482 (family: ETS(A,N,A), models: 3042)
- R2 models rejected by the per-lag check that forget their initial states = 0 (family: ETS(A,N,A), models: 3042)
- R3 models accepted by the per-lag check = 3042 (family: ETS(A,N,A), models: 3042)
- R4 models accepted by the per-lag check that do not forget their initial states = 10 (family: GUM, models: 200)
- R5 models rejected by the per-lag check that forget their initial states = 1 (family: GUM, models: 200)
- R6 models accepted by the per-lag check = 193 (family: GUM, models: 200)
Planned test of the contributor P5 (lab plan AC5.PL1, run AC5.RN8, with the breakdown run AC5.RN9): the exact oracle, written without the prototype, on the models of the planned tests exported by runs RN57-RN61, against the prototype's values stored with each model. The oracle was tried beforehand only on models of other seeds (AC5.RN2, AC5.RN6, AC5.RN7) and on hand-checkable models. AC5.RN8 took 30 s.
Setup: studied PBH reference, check of the whole model, step-down test, bisection for the largest root modulus, per-lag check · cases models of the planned tests, ETS(A,N,A) grid, random GUM models with lags (1, 12), random additive ETS and GUM models with long seasonal lags · procedure comparison with the exact oracle, exact oracle · lens admissibility decision, largest mode modulus, non-cyclotomic shared factor in the closed unit disc
| Row | set | models given to the oracle | models on which the oracle failed | models compared | models whose shared non-cyclotomic factor could not be located | models with a shared non-cyclotomic factor, all roots in |B| > 1 | models excluded by edge | models excluded by undecided | admissibility decisions of the PBH reference that differ from the exact oracle | max abs difference of the largest mode modulus, PBH reference against the exact oracle, models both find inadmissible | admissibility decisions of the prototype's cancellation that differ from the exact oracle | max abs difference of the largest mode modulus, prototype's roots after cancellation against the exact oracle, models both find inadmissible | models with a shared factor of theta and phi that is not a product of Phi_n, n dividing a lag, with a root in |B| <= 1 | models whose cancelled MA degree differs from the prototype's |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| r1 | perlag | 3242 | 0 | 3164 | 0 | 0 | 78 | 0 | 0 | 0.0000 | 0 | |||
| r2 | cancel | 500 | 0 | 500 | 0 | 8 | 0 | 0 | 0 | 0.0000 | 0 | 0.0000 | 0 | 0 |
| r3 | stepdown | 575 | 0 | 575 | 0 | 8 | 0 | 0 | 0 | 0.0000 | 0 | 0 | ||
| r4 | cpp | 800 | 0 | 797 | 0 | 8 | 3 | 0 | 0 | 0.0000 | 0 | 0 | ||
| r5 | examples | 2 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| r6 | all | 5119 | 0 | 5038 | 0 | 24 | 81 | 0 | 0 | 0.0000 | 0 | 0.0000 | 0 | 0 |
| Row | set | step-down decisions of the prototype that differ from the exact oracle | max abs difference of the largest mode modulus, prototype's bisection against the exact oracle | models with a bisection value | max degree of theta, exact | max degree of the cancelled MA polynomial, exact |
|---|---|---|---|---|---|---|
| r1 | stepdown | 0 | 0.0000 | 198 | 535 | 533 |
| Row | family | models accepted by the per-lag check that do not forget their initial states, exact oracle | models rejected by the per-lag check that forget their initial states, exact oracle | models accepted by the per-lag check | models of the family |
|---|---|---|---|---|---|
| r1 | ETS(A,N,A) | 1482 | 0 | 3042 | 3042 |
| r2 | GUM | 10 | 1 | 193 | 200 |
| Row | set | family | models in the edge band | max distance of the certified largest mode modulus from 1, edge models | edge models with roots proved on the unit circle | edge models whose decision differs from the exact oracle | max abs difference of the largest mode modulus against the exact oracle, edge models |
|---|---|---|---|---|---|---|---|
| r1 | perlag | ETS(A,N,A) | 78 | 0.0000 | 2 | 6 | 0.0000 |
| r2 | cpp | ETS high degree | 3 | 0.0000 | 0 | 0 | 0.0000 |
| Row | model | largest mode modulus, exact oracle (theta_G) | abs difference of the largest mode modulus, PBH reference against the exact oracle | abs difference of the largest mode modulus, prototype's roots after cancellation against the exact oracle | degree of theta, exact | degree of the shared cyclotomic factor, exact | degree of the exact gcd of theta and phi |
|---|---|---|---|---|---|---|---|
| r1 | ETS(A,N,A,A), alpha=0.3, gamma=(0.1,0.05) | 1 | 0.0000 | 0.0000 | 193 | 25 | 25 |
| r2 | GUM start, orders (2,2), lags (1,12) | 0.9829 | 0.0000 | 0.0000 | 26 | 14 | 14 |
Limitations
The 3042 ETS(A,N,A) models of the planned test of the per-lag check form the same fixed grid as exploratory run RN3, whose result prompted the hypothesis; only the 200 GUM models of that test were new data.
The PBH reference and the cyclotomic cancellation were written by the same agent and share the lag-1 expansion code and numpy's LAPACK eigenvalue routines.
Assumptions
The numpy function per_lag_max() returns the same largest eigenvalue modulus as smoothEigensCpp() of smooth 4.6.0 (replaced in commit 4a44c1c) for models with a constant measurement vector and without adaptive regressors. Rested on by C1.
The PBH reference with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the expanded discount matrix of the tested models correctly as both reachable and observable or not, outside the band of 1e-8 around the unit circle that the tests leave out. Rested on by C1.
Definitions
Methods 9
D4 per-lag check: The test applied by smoothEigens() of smooth 4.6.0 and of its repository until commit 4a44c1c (src/headers/eigenCalc.h) to models without adaptive regressors: every eigenvalue of every diagonal block of , one block per unique lag, has modulus below 1; reimplemented in numpy as per_lag_max().
D5 PBH reference: The largest modulus among the eigenvalues of the expanded discount matrix for which the smallest singular values of and of both exceed (Popov-Belevitch-Hautus rank tests), computed with numpy as pbh_max().
D6 cyclotomic cancellation: The procedure that computes the coefficients of by an inverse discrete Fourier transform of their values at the -th roots of unity ( the smallest power of 2 above ), and divides both by every cyclotomic polynomial , dividing one of the lags, for as long as it divides both with a remainder at most times the sum of absolute coefficients; the quotient of is the cancelled MA polynomial .
D7 step-down test: The Levinson-Durbin step-down (Schur-Cohn) recursion on : for , the test passes when every , which holds if and only if all roots lie outside the unit circle (the are the partial autocorrelations of the autoregression with this polynomial). Source: Barndorff-Nielsen and Schou (1973).
D8 GUM: Generalised Univariate Model of the smooth package: a lagged SSOE model whose , and are all estimated. Source: Svetunkov (2016).
D9 ETS(A,N,A): Exponential smoothing with additive error, no trend and additive seasonality of period ; here in the lagged form with a level of lag 1 and one seasonal state of lag , , , . Source: Hyndman et al. (2008).
D10 check of the whole model: Admissibility of a lagged SSOE model from the MA polynomial of its ARIMA form: is divided by its common factors with by cyclotomic cancellation, and the model is accepted when the cancelled polynomial has no root in and, for a model with ARIMA components, the AR polynomial of its ARIMA part is stationary; its largest mode modulus is over the roots of . In the numpy prototype (admissibility.py, confirm.py, ets_arima.py) the roots come from numpy; in smooth the step-down test decides and bisection gives the modulus.
D11 · part of D10 bisection for the largest root modulus: Bisection on over the step-down test applied to , which passes exactly when for every root of , so that the smallest such is the largest mode modulus; run to a width of 1e-10 in the prototype and to a tolerance of 1e-6 in smooth.
D41 exact oracle: Admissibility decided in exact rational arithmetic with certified root enclosures (independent/oracle.py, python-flint 0.9.0), written by the contributor P5 from the definitions of this claimset without the prototype: each float of , , is converted exactly to a rational, , and by fraction-free elimination over ; exactly and ; is the product of the cyclotomic polynomials , dividing a lag, at the multiplicity dividing both, and ; the roots of , and are enclosed in Arb balls of 128 bits, raised to 512 and 2048 bits while a modulus ball contains 1, and a root counts as on the unit circle only when it is proved a root of unity whose divides the polynomial. The largest mode modulus is over the roots; a model is admissible when it is below 1.
Data 4
D17 ETS(A,N,A) grid: The 3042 ETS(A,N,A) models with and and and on the grid 0.05, 0.10, ..., 1.95 (confirm.py, plan PL1).
D18 random GUM models with lags (1, 12): 200 GUM models with lags (1, 12): entries of normal with mean 0 and standard deviation 0.35, of with mean 0 and standard deviation 0.175, of with mean 1 and standard deviation 0.175 (confirm.py, seed 2026).
D20 random additive ETS and GUM models with long seasonal lags: The 575 models of plan PL4 (confirm.py --test stepdown --seed 2026 --n 200): the 500 models of plan PL3 generated afresh, 50 additive ETS models with seasonal lags from {24, 168, 365} and 25 GUM models with lags (1, 24, 168) and normal (standard deviation 0.3). The generator allows MA polynomial degrees up to 536 (level, trend, seasonal lags 168 and 365, constant).
D42 models of the planned tests: The models of the planned tests PL1-PL6 and the two examples of C10 and C11, drawn again by export_models.py exactly as confirm.py and cpp_check.py draw them (the counts of the original tests are reproduced), with the prototype's values for each: 3242 models of PL1 and PL2, 500 of PL3, 575 of PL4 and PL5 (MA degree up to 535), 800 of PL6 and 2 examples; 5119 in all.
Variables and measures 3
D29 admissibility decision: Whether a method accepts a model as admissible (decaying weights); compared between a method and a reference as the number of models on which the two differ.
D30 largest mode modulus: The largest modulus of the modes that decide admissibility: for the PBH reference the largest of the reachable and observable eigenvalues of the expanded discount matrix, for the check of the whole model over the roots of the cancelled MA polynomial, for the per-lag check the largest of its blocks; a model is admissible when it is below 1.
D44 non-cyclotomic shared factor in the closed unit disc: Whether , the factor shared by and after removing the cyclotomic polynomials ( dividing a lag), has a root in , certified by the exact oracle; counted over models.
Study design 2
D26 comparison with a reference: Each model's admissibility decision, and its largest mode modulus where both find it inadmissible, computed by the method studied and by a reference on the same model (the PBH reference, the roots by numpy, the numpy prototype of the check of the whole model or an exact oracle); the result is the number of models whose decisions differ and the largest absolute difference of the modulus. In the planned tests, models whose reference modulus lies within 1e-8 of 1 are left out and counted.
D43 comparison with the exact oracle: For each model, the admissibility decision and largest mode modulus of a method of the study against those of the exact oracle: the PBH reference against ; the prototype's cancellation, step-down test and bisection against . Counted are the models whose decisions differ and the largest absolute difference of the modulus on the models both find inadmissible (for the bisection, on every model with a value). Models the oracle cannot decide, and models whose certified largest modulus lies within of 1, are left out and counted.
Concepts 2
D2 expanded discount matrix: The transition matrix of size of the lag-1 system equivalent to , in which component carries itself and its lagged copies; , and are expanded in the same way, so that .
D3 decaying weights: A lagged SSOE model has decaying weights when the weights of the past observations in its fitted values tend to zero, that is, when every eigenvalue of its expanded discount matrix that is reachable from and observable through has ; the largest such is its largest mode modulus. A mode that does not reach but sees carries an initial state whose effect is not covered: with it grows.
Context
- Contradicts Svetunkov (2016), gum(), documentation of the argument bounds · own earlier work · from C1
- The documentation of gum() states that bounds = "admissible" guarantees the stability of the model.
References
- Hyndman et al. (2008) Hyndman, R., Koehler, A., Ord, K., & Snyder, R. (2008). Forecasting with Exponential Smoothing. Springer Series in Statistics. doi:10.1007/978-3-540-71918-2 Used by: D9
- Barndorff-Nielsen and Schou (1973) Barndorff-Nielsen, O., & Schou, G. (1973). On the parametrization of autoregressive models by partial autocorrelations. Journal of Multivariate Analysis, 3(4), 408–419. doi:10.1016/0047-259X(73)90030-4 Used by: D7
- Svetunkov (2016) Svetunkov, I. (2016). smooth: Forecasting Using State Space Models. CRAN: Contributed Packages. doi:10.32614/CRAN.package.smooth Used by: Context, D8
Artefacts
- A1 · code numpy prototype of the admissibility check of pure additive lagged SSOE models: lag-1 expansion, the per-lag check of smoothEigens(), the PBH reference, ARIMA-form polynomials by inverse DFT, cyclotomic cancellation, step-down test and bisection; ETS and GUM model builders
- A3 · code test script: per-lag check against the PBH reference, cancellation against the PBH reference, step-down decisions and bisection against roots, on seeded random model sets
- A18 · data Every result of the lab record at full precision, one row per result: the lab result, the run that produced it, the quantity, its conditions (JSON) and the value.
- A19 · code The exact oracle of the contributor P5 (with test_oracle.py and, from commit e4963c49, edge_report.py in the same folder): exact theta, phi, gcd and cyclotomic cancellation over the rationals, certified root enclosures with python-flint 0.9.0, and the comparison with the prototype's values.
- A20 · code Draws the models of the planned tests PL1-PL6 as confirm.py and cpp_check.py do and writes them, with the prototype's values for each, to models.json (lab runs RN57-RN61).
Score
Scores are computed by rules from the claimset file (EntryLib rubric 0.2): they check the record, not the science, and may change as the rubric and reviews develop. The rubric.
C1: 93, High
Novelty: refutes earlier work, by the authors · no close match on EntryLib
- −3 Plan The plan's time is anchored by a git push only. To remove it: Anchor plans with the platform, a timestamp authority (RFC 3161) or a registry.
- −3 Open problems Assumption C13 is not checked: The numpy function per_lag_max() returns the same largest eigenvalue modulus as smoothEigensCpp() of smooth 4.6.0 (replaced in commit 4a44c1c) for models with a constant measurement vector and without adaptive regressors. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
- −1 Open problems Limitation L1 (reduces transferability, mitigation partial): The 3042 ETS(A,N,A) models of the planned test of the per-lag check form the same fixed grid as exploratory run RN3, whose result prompted the hypothesis; only the 200 GUM models of that test were new data. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.