In brief
- 72The 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. C1
- 68On 500 random additive ETS and GUM models, the admissibility decision from the roots of the MA polynomial after cyclotomic cancellation differed from the PBH reference on 0 models, and on the 172 models that both found inadmissible the largest mode modulus differed from the reference by at most 4.4e-13. C3
- 99For ETS(A,N,A) with , and , the stability condition of Section 5.4 of the ADAM monograph holds, while in the full discount recursion the effect of the initial states on the fitted values and the weight of a past observation both grow from period to period, and the largest root modulus of the cancelled MA polynomial exceeds one. C22
- 85On 1,000 new random ADAM ETS+ARIMA models (500 with ARIMA at lag 1, 500 with seasonal ARIMA), checking the ETS part and the ARIMA polynomials apart, as adam() did with bounds="admissible", gave an admissibility decision different from the PBH reference of the whole model on about a third of the models in each family, accepting models that are not forecastable and rejecting models that are. C24
- 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. D10
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.
- Extends Hyndman et al. (2008), Chapter 11 · from C6
- Hyndman, Koehler, Ord and Snyder relate the reduced forms of linear innovations state space models to ARIMA models.
- Contradicts Svetunkov (2023), Section 5.4, equations 5.20 to 5.22 · own earlier work · from C22
- The monograph states that the model is stable when all the nonzero eigenvalues of the per-lag discount matrices D_{m_i} are below one in absolute value, and forecastable when the effect of the initial states through each D_{m_i} tends to a constant (eq. 5.22).
Definitions
Methods 15
D1 lagged SSOE model: A pure additive single-source-of-error state space model with components, in which component of enters with its own lag ; its discount matrix is and its lag matrix is for the backshift operator ; for a complex number .
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.
D12 · a kind of D10 smoothEigensCpp(): The check of the whole model as implemented in smooth (src/headers/eigenCalc.h, shared by R and Python): the coefficients of and by inverse discrete Fourier transform, cyclotomic cancellation, the step-down test and bisection with tolerance 1e-6; called in R through smoothEigensR().
D14 · a kind of D10 bounds checker of adam(): adam_bounds_checker() of adam(), om() and omg() in R (R/utils-adam.R) and of ADAM, OM and OMG in Python, with bounds="admissible" after this study: smoothEigensCpp() on the whole model, with a shortcut that accepts a pure ARIMA model (without ETS and adaptive regressors) whose MA factors are invertible without running it; the penalty is zero, or 1e100 times the largest root modulus.
D13 check of the parts apart: The check that adam() applied with bounds="admissible" to models combining ETS and ARIMA before this study: the ETS part by the per-lag check, and the AR and MA polynomials of the ARIMA part for stationarity and invertibility, each apart from the others.
D15 roots by numpy: The roots of a polynomial by numpy's roots (the eigenvalues of its companion matrix), and the admissibility decision and largest modulus they give.
D16 stability condition of the ADAM monograph: The condition of Section 5.4 of the ADAM monograph (eqs 5.20-5.22): every nonzero eigenvalue of each per-lag discount matrix has modulus below 1. Source: Svetunkov (2023).
D39 exact gcd oracle: Admissibility by rational determinants and the exact greatest common divisor of and , which cancels any shared factor (code/checker/exact_oracle.py of the checker P4).
Data 14
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).
D19 · part of D20 random additive ETS and GUM models: The 500 models of plan PL3 (confirm.py --test cancel --seed 2026 --n 200): 200 additive ETS models (level; no, additive or damped trend with in (0.8, 0.99); 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; a constant with probability 0.3; with probability 0.1 and each with probability 0.15; in (0.01, 1.9)), 100 GUM models with , lags from {1, 4, 12}, uniform on (-0.3, 0.6) and normal with mean 1 and standard deviation 0.3, and 200 GUM models with lags from {1, 4, 12, 24} and normal (standard deviation 0.35).
D21 four model families of the implementation test: 200 models in each of four families (cpp_check.py --seed 2027 --n 200, plan PL6): additive ETS with 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; additive ETS with 0 to 2 seasonal lags from {24, 168, 365}; GUM with and lags from {1, 4, 12}; GUM with normal (standard deviation 0.35) and lags from {1, 4, 12, 24}.
D22 random ETS+ARIMA models: Random ADAM models combining additive ETS with ARIMA (ets_arima.py), 500 with ARIMA at lag 1 and 500 with seasonal ARIMA per seed (seed 2 for plans PL7 and PL8, seed 3 for plan PL9): ETS with a level; no, additive or damped trend; no or one seasonal lag in {4, 12}; smoothing parameters drawn from wide ranges, some fixed at 0; ARIMA with a stationary AR polynomial, differences and MA up to order 2 at lag 1 and 1 at lag , 15% over-differenced (an MA root at one on the unit circle of a differenced lag); built in ADAM's state space form (one state per lag of the ARI and MA polynomials).
D23 ETS+ARIMA models of the checker's generator: Random ADAM ETS+ARIMA models from the generator of the checker P4 (code/checker/exact_oracle.py with lib.py), wider than the random ETS+ARIMA models: 250 models for each of seeds 21-23 and 31-34.
D24 ETS(A,N,A,A) with seasonal lags 24 and 168: The additive ETS model with a level and two seasonal states of lags 24 and 168, and , in the lagged form.
D25 starting point of gum(): The default starting point of gum() with orders (2, 2) and lags (1, 12): , , .
D35 ETS(A,N,A) with m = 12: ETS(A,N,A) with at and (book_check.py).
D36 AirPassengers: Monthly totals of international airline passengers, 1949-1960 (144 observations): the AirPassengers series of R's datasets package.
D37 BJsales: The sales series BJsales of R's datasets package (150 observations).
D38 synthetic hourly series: 1008 hourly observations plus standard normal noise, generated by bench_eigens.R after set.seed(41), as a ts of frequency 24, fitted with seasonal lags 24 and 168.
D40 random GUM models with lags (1, 24, 168): GUM models with lags (1, 24, 168) and normal (standard deviation 0.3), as generated by confirm.py and timing.py.
Variables and measures 6
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.
D31 time of a computation: The time of one call of a computation, as the mean over repeated calls.
D32 time of a fit: The time of one fit, as the median over repeated fits.
D33 log-likelihood of a fit: The log-likelihood of a fitted model at its estimates.
D34 growth per period: The growth per period, over the second half of the recursion, of the effect of initial states set to one on the fitted value, and of the weight of one unit observation.
Study design 3
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.
D27 timing benchmark: The time of a computation as the mean over 50 repeated calls (timing.py), or the time of a fit with bounds="admissible" as the median over five or seven repeated fits of the package installed at -O2 from a worktree of each version (bench_eigens.R, timing_ets_arima.R), on one x86_64 machine.
D28 discount recursion over 2400 periods: The full discount recursion of a lagged SSOE model run for 2400 periods, from initial states set to one with no data and from zero states with one unit observation, its growth per period measured over the second half (book_check.py).
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.
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, C2.
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. Rested on by C1, C2, C3, C10, C11.
In additive ETS models, and in GUM models with an identity transition or with transition, persistence and measurement in general position, every factor shared by and with a root in is a product of cyclotomic polynomials with dividing a lag of the model. Rested on by C4, C16.
For ETS+ARIMA models with a stationary AR polynomial, and of the whole model share no factor with a root in that is not cyclotomic, so the PBH reference and the cancelled MA polynomial decide the same admissibility. Rested on by C24, C25, C26.
Principal claims
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
On 500 random additive ETS and GUM models, the admissibility decision from the roots of the MA polynomial after cyclotomic cancellation differed from the PBH reference on 0 models, and on the 172 models that both found inadmissible the largest mode modulus differed from the reference by at most 4.4e-13.
Scope: population: pure additive lagged SSOE models; conditions: additive ETS: level; no, additive or damped trend; 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; optional constant; some persistence fixed at 0, GUM with F = I and lags from {1, 4, 12}, GUM with random F and lags from {1, 4, 12, 24}, numpy prototype, models within 1e-8 of the unit circle excluded (none occurred); not for: ARIMA components, CES, adaptive regressors, multiplicative models, seasonal harmonics with non-integer periods (TBATS), the largest mode modulus of admissible models, where a common factor that is not cyclotomic can remain in the cancelled MA polynomial, an eigenvalue of modulus above 1 shared by a reachable and observable mode and an unreachable or unobservable one · Simulation: E3 (R1, R2), artefacts A1, A3 · Uses: C6, C8, C17 · Assumes: C14 · Limitations: L2, L3 · Planned: lab plan PL3, planned 21 October 2026 · Outcome: computed from the recorded results
On 575 random additive ETS and GUM models, including ETS models with up to two seasonal lags from {24, 168, 365} whose generator allows MA polynomial degrees up to 536, the step-down test on the MA polynomial after cyclotomic cancellation gave an admissibility decision different from the roots of that polynomial on 0 models.
Scope: population: pure additive lagged SSOE models; conditions: additive ETS: level; no, additive or damped trend; 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; optional constant; some persistence fixed at 0, GUM with F = I and lags from {1, 4, 12}, GUM with random F and lags from {1, 4, 12, 24}, additive ETS with up to two seasonal lags from {24, 168, 365}, GUM with random F and lags (1, 24, 168), numpy prototype; not for: ARIMA components, CES, adaptive regressors, multiplicative models, seasonal harmonics with non-integer periods (TBATS) · Simulation: E4 (R1, R3), artefacts A1, A3 · Cited: Barndorff-Nielsen and Schou (1973) · Uses: C3 · Assumes: C19 · Limitations: L3, L4, L5, L8 · Planned: lab plan PL4, planned 21 October 2026 · Outcome: computed from the recorded results
On 800 random additive ETS and GUM models in four families, the implementation of the check in smooth (smoothEigensCpp() through smoothEigensR()) gave the same decision as the numpy prototype on every model, a largest root modulus within the bisection tolerance of it on the models both found inadmissible, and the same modulus and MA polynomial on three consecutive calls with each model.
Scope: population: pure additive lagged SSOE models; conditions: additive ETS: level; no, additive or damped trend; 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; optional constant; some persistence fixed at 0, additive ETS with 0 to 2 seasonal lags from {24, 168, 365}, GUM with F = I and lags from {1, 4, 12}, GUM with random F and lags from {1, 4, 12, 24}, R 4.3.3, -O0 build of pkgload; not for: ARIMA components, CES, adaptive regressors, multiplicative models, seasonal harmonics with non-integer periods (TBATS) · Simulation: E13 (T1.r1, T1.r2, T1.r3, T1.r4), artefacts A5, A8 · Uses: C3, C4, C18, C20 · Assumes: C19 · Limitations: L2, L3, L4, L8 · Planned: lab plan PL6, planned 22 October 2026 · Outcome: computed from the recorded results
For ETS(A,N,A) with , and , the stability condition of Section 5.4 of the ADAM monograph holds, while in the full discount recursion the effect of the initial states on the fitted values and the weight of a past observation both grow from period to period, and the largest root modulus of the cancelled MA polynomial exceeds one.
Scope: population: ETS(A,N,A) with m = 12; conditions: alpha = 1.2, gamma = 0.9, initial states set to one or one unit observation, 2400 periods · Simulation: E18 (T1.r2), artefacts A1, A6 · Uses: C21 · Limitations: L6 · Contradicts: Svetunkov (2023), Section 5.4, equations 5.20 to 5.22
On 1,000 new random ADAM ETS+ARIMA models (500 with ARIMA at lag 1, 500 with seasonal ARIMA), checking the ETS part and the ARIMA polynomials apart, as adam() did with bounds="admissible", gave an admissibility decision different from the PBH reference of the whole model on about a third of the models in each family, accepting models that are not forecastable and rejecting models that are.
Scope: population: random ADAM models that combine additive ETS with ARIMA; conditions: ETS: level; no, additive or damped trend; no or one seasonal lag m in {4, 12}; smoothing parameters drawn from wide ranges, some fixed at 0, ARIMA: AR stationary, differences and MA up to order 2 at lag 1 and 1 at lag m, 15% over-differenced (an MA root at one on the unit circle of a differenced lag), ADAM's state space form of ARIMA (one state per lag of the ARI and MA polynomials), checked against the matrices of adam() on 20 of the models; not for: regressors, constant, multiplicative models, several seasonal lags, CES, GUM · Simulation: E20 (T1.r1, T1.r3), artefacts A10, A1 · Assumes: C28 · Limitations: L12 · Planned: lab plan PL7, planned 22 October 2026 · Outcome: computed from the recorded results · Weaknesses: the code changed after the plan
On the same 1,000 random ETS+ARIMA models, the check of the whole model (the MA polynomial of the ARIMA form of the whole lagged SSOE after cyclotomic cancellation, with the AR polynomial of the ARIMA part stationary), gave the same admissibility decision as the PBH reference on every model, and the same largest modulus to within rounding error on the models both found inadmissible.
Scope: population: random ADAM models that combine additive ETS with ARIMA; conditions: ETS: level; no, additive or damped trend; no or one seasonal lag m in {4, 12}; smoothing parameters drawn from wide ranges, some fixed at 0, ARIMA: AR stationary, differences and MA up to order 2 at lag 1 and 1 at lag m, 15% over-differenced (an MA root at one on the unit circle of a differenced lag), ADAM's state space form of ARIMA (one state per lag of the ARI and MA polynomials), checked against the matrices of adam() on 20 of the models; not for: regressors, constant, multiplicative models, several seasonal lags, CES, GUM · Simulation: E21 (T1.r2, T1.r4, T2.r1, T2.r2), artefacts A10, A1 · Assumes: C28 · Limitations: L12 · Planned: lab plan PL8, planned 22 October 2026 · Outcome: computed from the recorded results · Weaknesses: the code changed after the plan
On 1,000 further random ETS+ARIMA models, the bounds checker of adam() in R and of ADAM in Python with bounds="admissible", which run smoothEigensCpp() on the whole model, gave the same admissibility decision as the prototype check of the whole model on every model, and a penalty slope (the largest root modulus) within the bisection tolerance of it in both families.
Scope: population: random ADAM models that combine additive ETS with ARIMA; conditions: ETS: level; no, additive or damped trend; no or one seasonal lag m in {4, 12}; smoothing parameters drawn from wide ranges, some fixed at 0, ARIMA: AR stationary, differences and MA up to order 2 at lag 1 and 1 at lag m, 15% over-differenced (an MA root at one on the unit circle of a differenced lag), ADAM's state space form of ARIMA (one state per lag of the ARI and MA polynomials), checked against the matrices of adam() on 20 of the models, the checkers called on the matrices of each model, R through pkgload::load_all of the repository; not for: regressors, constant, multiplicative models, several seasonal lags, CES, GUM · Simulation: E22 (T3.r1, T3.r2, T3.r3, T3.r4), artefacts A10, A1, A12, A13, A14 · Assumes: C28 · Limitations: L11 · Planned: lab plan PL9, planned 22 October 2026 · Outcome: computed from the recorded results · Weaknesses: the code changed after the plan
Supporting claims
The per-lag check rejected 1 of 200 random GUM models with lags (1, 12) that have decaying weights.
Scope: population: GUM models; conditions: GUM with lags (1, 12) and normal random F, g and w (standard deviations 0.35, 0.175, 0.175; mean of w 1), PBH reference below 1 - 1e-8; not for: models with adaptive regressors · Simulation: E2 (R5), artefacts A1, A3 · Assumes: C13, C14 · Limitations: L2, L3 · Planned: lab plan PL2, planned 21 October 2026 · Outcome: computed from the recorded results
On the 198 models among 575 random additive ETS and GUM models whose cancelled MA polynomial has a root inside the unit circle, bisection on with the step-down test applied to gave over the roots of , the largest mode modulus, within 5.8e-11 of the value from numpy's roots.
Scope: population: inadmissible pure additive lagged SSOE models; conditions: additive ETS: level; no, additive or damped trend; 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; optional constant; some persistence fixed at 0, GUM with F = I and lags from {1, 4, 12}, GUM with random F and lags from {1, 4, 12, 24}, additive ETS with up to two seasonal lags from {24, 168, 365}, GUM with random F and lags (1, 24, 168), bisection to a width of 1e-10, numpy prototype; not for: ARIMA components, CES, adaptive regressors, multiplicative models, seasonal harmonics with non-integer periods (TBATS) · Simulation: E5 (R1), artefacts A1, A3 · Limitations: L3, L4, L5 · Planned: lab plan PL5, planned 21 October 2026 · Outcome: computed from the recorded results
For a lagged SSOE model, ignoring the initial states, so the model has the ARIMA form with AR polynomial and MA polynomial .
Scope: population: pure additive lagged SSOE models; conditions: identity of lag-operator polynomials, initial states ignored · Proof: E6 · Consensus · Simulation: E10, artefacts A1, A2 · Extends: Hyndman et al. (2008), Chapter 11 · Verification: checked by an agent · Used by: C3, C17
If the discount matrix of a lagged SSOE model is block-diagonal with one block per unique lag , every eigenvalue of the expanded discount matrix has modulus for an eigenvalue of some , so all of them lie inside the unit circle exactly when the per-lag check passes.
Scope: population: lagged SSOE models whose discount matrix is block-diagonal across lags · Proof: E7 · Uses: C15 · Verification: checked by an agent
An eigenvalue of the expanded transition matrix with an eigenvector unobservable through or a left eigenvector unreachable from is an eigenvalue of the expanded discount matrix, and is a common root of and .
Scope: population: pure additive lagged SSOE models · Proof: E8 · Uses: C15 · Verification: checked by an agent · Used by: C3
For ETS(A,N,A) with any period and any and , is a root of both so the expanded discount matrix has an eigenvalue equal to 1.
Scope: population: ETS(A,N,A) models · Proof: E9 · Uses: C15 · Verification: checked by an agent
For ETS(A,N,A,A) with seasonal lags 24 and 168, and , cyclotomic cancellation removed a common factor from the MA polynomial, and the largest mode modulus after cancellation, just below one, equalled the PBH reference to within rounding error.
Scope: population: ETS(A,N,A,A) with seasonal lags 24 and 168; conditions: alpha = 0.3, gamma = (0.1, 0.05), numpy prototype · Simulation: E10 (T1.r1), artefacts A1, A2 · Assumes: C14 · Limitations: L2
For the default starting point of gum() with orders (2, 2) and lags (1, 12) (, , ), cyclotomic cancellation removed a common factor from the MA polynomial, and the largest mode modulus after cancellation equalled the PBH reference to within rounding error.
Scope: population: GUM with orders (2, 2) and lags (1, 12); conditions: F = I, g = 0.1, w = 1, numpy prototype · Simulation: E10 (T1.r2), artefacts A1, A2 · Assumes: C14 · Limitations: L2
For an admissible and an inadmissible random GUM model with lags (1, 24, 168) and the cancelled MA polynomial of an ETS(A,N,A,A) model with seasonal lags 24 and 168, the step-down test was more than twenty times faster than all roots by numpy's companion-matrix eigenvalues.
Scope: population: GUM with lags (1, 24, 168) and ETS(A,N,A,A) with seasonal lags 24 and 168; conditions: numpy, Python 3.13, one x86_64 machine with 4 CPUs, mean of 50 repeats, step-down recursions of 193, 170 and 168 steps · Simulation: E12 (T1.r1, T1.r2, T1.r3), artefacts A1, A4
For the lag-1 expansion of in a lagged SSOE model, which equals for .
Scope: population: pure additive lagged SSOE models; conditions: any square matrix of size · Proof: E11 · Verification: checked by an agent · Used by: C7, C8, C9, C17
For a lagged SSOE model with and , the roots of are exactly the reciprocals of the nonzero eigenvalues of the reachable and observable part of the expanded discount matrix (its Kalman decomposition), with their multiplicities.
Scope: population: pure additive lagged SSOE models; conditions: the definition D3 agrees with this part unless an eigenvalue is shared by the reachable and observable part and the rest · Proof: E14 · Consensus · Uses: C6, C15 · Verification: checked by an agent · Used by: C3
For a polynomial with and , the step-down test passes on if and only if for every root of .
Scope: population: real polynomials with a nonzero constant term · Proof: E15 · Cited: Barndorff-Nielsen and Schou (1973) · Verification: checked by an agent · Used by: C16
For a square matrix of size and lags , with .
Scope: population: square matrices and positive integer lags · Proof: E16 · Consensus · Verification: checked by an agent · Used by: C16
The per-lag discount matrices of Section 5.4 of the ADAM monograph have as nonzero eigenvalues those of the diagonal block of for the lag (the per-lag check), and their sum is which differs from whenever links components of distinct lags.
Scope: population: pure additive lagged SSOE models with more than one distinct lag; conditions: F split by the columns, and g and w by the components, of each lag, as in Section 5.2 of the monograph, which writes g_{m_i} and w_{m_i} without defining their split; with g kept whole the first part holds and the sum equals D · Proof: E17 · Verification: checked by an agent · Used by: C22
Over five fits with bounds="admissible", the median time of a fit with the polynomial check was comparable to that with the per-lag check, also for adam() with seasonal lags 24 and 168 on hourly data, with optimisation paths that differ between the checks.
Scope: population: fits of gum(), adam() and ces() on AirPassengers and a synthetic hourly series; conditions: R 4.3.3, -O2, one x86_64 machine with 4 CPUs, median of seven fits · Simulation: E19 (T1), artefacts A7 · Limitations: L7
With the check of the whole model and its shortcut for pure ARIMA, the median time of five fits with bounds="admissible" of two ARIMA and two ETS+ARIMA models was close to that with the check of the parts apart; the log-likelihood of SARIMA(1,1,1)(1,1,1)[12] on AirPassengers rose slightly, and that of ETS(A,N,A)+ARIMA(1,0,1) fell, to another local optimum.
Scope: population: fits of adam() and ssarima() on AirPassengers and BJsales; conditions: R 4.3.3, -O2, one x86_64 machine, median of five fits · Simulation: E23 (T1), artefacts A11 · Limitations: L9
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 per-lag check on GUM models (lab plan PL2, run RN8): the same computation and seed as for plan PL1, counting the GUM models with lags (1, 12) that the per-lag check rejects while their PBH reference lies below 1 - 1e-8.
Setup: studied per-lag check · cases 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 cyclotomic cancellation (lab plan PL3, run RN9): confirm.py --test cancel --seed 2026 --n 200 generated 200 additive ETS models (level; no, additive or damped trend with phi in (0.8, 0.99); 0 to 2 seasonal lags from {4, 7, 12, 24, 52}; a constant with probability 0.3; beta = 0 with probability 0.1 and each gamma = 0 with probability 0.15; alpha in (0.01, 1.9)), 100 GUM models with F = I, lags from {1, 4, 12}, g uniform on (-0.3, 0.6) and w normal with mean 1 and standard deviation 0.3, and 200 GUM models with lags from {1, 4, 12, 24} and normal F (standard deviation 0.35); for each it compared the largest root modulus of the cancelled MA polynomial with the PBH reference.
Setup: studied check of the whole model · cases random additive ETS and GUM models · procedure comparison with a reference, PBH reference · lens admissibility decision, largest mode modulus
- R1 admissibility decisions that differ from the PBH reference = 0
- R2 max abs difference of max |lambda| from the PBH reference, inadmissible models = 0.0000 (inadmissible_models: 172)
- R3 models within 1e-8 of the unit circle, excluded = 0
- R4 models compared = 500
Planned test of the step-down test (lab plan PL4, run RN10): confirm.py --test stepdown --seed 2026 --n 200 generated the 500 models of plan PL3 afresh plus 50 additive ETS models with seasonal lags from {24, 168, 365} and 25 GUM models with lags (1, 24, 168) and normal F (standard deviation 0.3), and compared the step-down decision on the cancelled MA polynomial with the decision from its roots computed by numpy. The generator allows MA polynomial degrees up to 536 (level, trend, seasonal lags 168 and 365, constant); the realised maximum was not recorded as a result.
Setup: studied step-down test · cases random additive ETS and GUM models with long seasonal lags · procedure comparison with a reference, roots by numpy · lens admissibility decision
- R1 step-down decisions that differ from the decision by the roots = 0
- R2 models within 1e-8 of the unit circle, excluded = 0
- R3 models compared = 575
Planned test of the bisection (lab plan PL5, run RN11): on the 575 models of plan PL4, for each model whose cancelled MA polynomial has a root-based largest mode modulus above 1 + 1e-8, bisection on r to width 1e-10 with the step-down test on theta*(B/r) was compared with the root-based value. The generator allows MA polynomial degrees up to 536 (level, trend, seasonal lags 168 and 365, constant); the realised maximum was not recorded as a result.
Setup: studied bisection for the largest root modulus · cases random additive ETS and GUM models with long seasonal lags · procedure comparison with a reference, roots by numpy · lens largest mode modulus
- R1 max abs difference of max |lambda|, bisection against roots = 0.0000 (inadmissible_models: 198)
- R2 models within 1e-8 of the unit circle, excluded = 0
- R3 models compared = 575
Planned test of the implementation in smooth (lab plan PL6, run RN43): cpp_check.py --seed 2027 --n 200 generated 200 models in each of four families (additive ETS with 0-2 seasonal lags from {4, 7, 12, 24, 52}; additive ETS with 0-2 seasonal lags from {24, 168, 365}; GUM with F = I and lags from {1, 4, 12}; GUM with normal F, standard deviation 0.35, and lags from {1, 4, 12, 24}), called smoothEigensR() of the repository (through pkgload::load_all) three times on each, and compared its decision and modulus with the numpy prototype (roots of the cancelled MA polynomial).
Setup: studied smoothEigensCpp() · cases four model families of the implementation test · procedure comparison with a reference, check of the whole model · lens admissibility decision, largest mode modulus
| Row | family | admissibility decisions of the C++ core that differ from the prototype | max abs difference of the largest root modulus on inadmissible models, C++ core against prototype | models whose cancelled polynomials differ in degree, C++ core against prototype | max abs difference between three calls of the C++ core on the same model | inadmissible |
|---|---|---|---|---|---|---|
| r1 | ETS | 0 | 0.0000 | 0 | 0 | 86 |
| r2 | ETS high degree | 0 | 0.0000 | 0 | 0 | 95 |
| r3 | GUM identity | 0 | 0.0000 | 0 | 0 | 84 |
| r4 | GUM random | 0 | 0.0000 | 0 | 0 | 27 |
Exploratory run RN2 of explore.py --seed 0: the ARIMA-form polynomials, their cyclotomic cancellation and the PBH reference for ETS(A,N,A,A) with seasonal lags 24 and 168 (alpha = 0.3, gamma = (0.1, 0.05)) and for GUM with orders (2, 2), lags (1, 12), F = I, g = 0.1 and w = 1 (the default starting point of gum()); the determinant identity at random complex B on 100 random GUM models; the expanded discount matrix of a block-diagonal D; and mean times over 50 repeats of three computations for a random GUM with lags (1, 24, 168). The result labelled 'block-diagonal D, lags (1,12)' comes from D = [[0.7, 0], [-0.1, 0.3]], which is lower-triangular rather than block-diagonal.
Setup: studied lagged SSOE model, cyclotomic cancellation, check of the whole model · cases ETS(A,N,A,A) with seasonal lags 24 and 168, starting point of gum() · procedure comparison with a reference, PBH reference · lens largest mode modulus
- R11 max relative error of the determinant identity = 0.0000 (models: 100)
- R12 max |lambda|, per-lag check = 0.7 (model: block-diagonal D, lags (1,12))
- R13 max |lambda|, all modes of the expanded discount matrix = 0.9045 (model: block-diagonal D, lags (1,12))
- R14 mean time, ms = 4.6963 (task: coefficients by DFT, degree: 193)
- R15 mean time, ms = 0.0069 (task: step-down test, degree: 193)
- R16 mean time, ms = 22.2257 (task: all roots, numpy companion eigenvalues, degree: 193)
| Row | model | degree of theta | degree of the shared cyclotomic factor | max |lambda|, roots of theta before cancellation | max |lambda|, roots of theta after cancellation | max |lambda|, controllable and observable modes (PBH) |
|---|---|---|---|---|---|---|
| r1 | ETS(A,N,A,A), alpha=0.3, gamma=(0.1,0.05) | 193 | 25 | 1 | 1 | 1 |
| r2 | GUM start, orders (2,2), lags (1,12) | 26 | 14 | 1 | 0.9829 | 0.9829 |
Derivation of the ARIMA form of a lagged SSOE model by the matrix determinant lemma.
Foundation: linear algebra over the field of rational functions in $B$
Characteristic polynomial of the expanded matrix and its factorisation for a block-diagonal discount matrix.
Foundation: linear algebra over the complex numbers
Unobservable or unreachable modes of the expanded transition matrix are modes of the expanded discount matrix and give common roots of the two ARIMA-form polynomials.
Foundation: linear algebra over the complex numbers
Evaluation of the ARIMA-form polynomials of ETS(A,N,A) at .
Foundation: algebra of real polynomials
Schur-complement derivation of the characteristic polynomial of the lag-1 expansion.
Foundation: linear algebra over the complex numbers
- (partition of the states into the $k$ current values (heads) and the $\sum_j (l_j - 1)$ lagged copies (tails); $S$ shifts each tail chain, $C$ feeds each head into its first copy, $A$ and $B$ hold the entries of $M$ that act on heads with lag 1 and on last copies; from D2)
- (determinant of a lower-triangular matrix with diagonal $\lambda$; from S1)
- ($(\lambda I - S)^{-1} C$ maps head $j$ to its copies $\lambda^{-s}$, $s = 1, \dots, l_j - 1$, and $B$ reads copy $l_i - 1$ of component $i$; from S1)
- (Schur complement, then factoring $\lambda\, \Lambda(\lambda)^{-1}$ out on the right; from S2, S3)
- (two polynomials equal on $\lambda \neq 0$ are equal; from S4)
- (factoring $\Lambda(\lambda)$ out on the right: $\Lambda(\lambda) - M = (I - M \Lambda(\lambda)^{-1}) \Lambda(\lambda)$; from S5, D1)
Exploratory run RN13 of timing.py --seed 3 --repeats 50: for the first admissible and the first inadmissible random GUM with lags (1, 24, 168) (normal F with standard deviation 0.3) and for the cancelled MA polynomial of ETS(A,N,A,A) with seasonal lags 24 and 168 (alpha = 0.3, gamma = (0.1, 0.05)), the number of recursion steps of the step-down test and the mean times over 50 repeats of the step-down test, of all roots by numpy's companion-matrix eigenvalues and of the coefficients by inverse discrete Fourier transform.
Setup: studied step-down test, roots by numpy · cases random GUM models with lags (1, 24, 168), ETS(A,N,A,A) with seasonal lags 24 and 168 · procedure timing benchmark · lens time of a computation
| Row | model | degree | mean time of the step-down test, ms | mean time of all roots by numpy companion eigenvalues, ms | recursion steps run by the step-down test | mean time of the coefficients of theta and phi by inverse DFT, ms |
|---|---|---|---|---|---|---|
| r1 | random GUM, lags (1, 24, 168), admissible | 193 | 0.743 | 23.7599 | 193 | 6.5728 |
| r2 | random GUM, lags (1, 24, 168), inadmissible | 193 | 0.8139 | 20.8541 | 170 | |
| r3 | ETS(A,N,A,A), lags 24 and 168, cancelled theta | 168 | 0.4172 | 17.4571 |
The reduced form of the ARIMA polynomials through the Kalman decomposition of the expanded system.
Foundation: linear systems theory over the complex numbers
- (Kalman canonical decomposition; from D2)
- (reachability is invariant under state feedback and observability under output injection; from S1, D2)
- (matrix determinant lemma; a single-input single-output realisation is minimal if and only if the numerator and denominator of its transfer function are coprime; from S2)
- (matrix determinant lemma and the identity of the lag-1 expansion; from C15, D1)
- (uniqueness of the reduced fraction, with z = 1/B: the eigenvalues at zero give no root, theta(0) = phi(0) = 1 makes theta / gcd the reduced numerator, and the reversal keeps coprimality away from B = 0; from S3, S4)
Scaling the argument of a polynomial scales its roots.
Foundation: algebra of complex polynomials
- (substitution)
- (r > 0; from S1)
- ($c(0) \neq 0$; from S1)
- (the step-down test passes exactly when all roots lie outside the unit circle; from D7, S1, S3)
Expansion of det(I - M L(B)) by multilinearity in the columns.
Foundation: linear algebra over the field of rational functions in $B$
- (definition of $L(B)$; from D1)
- (multilinearity of the determinant in the columns; from S1)
- (Laplace expansion along the unit columns, and pulling the scalars out of the other columns; from S2)
The per-lag discount matrices of Section 5.4 of the ADAM monograph against D.
Foundation: linear algebra over the complex numbers
- (the split of Section 5.2 of the monograph; from D1)
- (definition; from S1)
- (a symmetric permutation and the eigenvalues of a block-triangular matrix; from S2)
- ($g w' = \sum_i \sum_j g_{m_i} w_{m_j}'$; from S1)
- (a single term, so the sum differs from D exactly where g w' links components of different lags; from S4)
Exploratory run RN44 of book_check.py --periods 2400: for ETS(A,N,A) with m = 12 and (alpha, gamma) = (0.1, 0.1) and (1.2, 0.9), the largest nonzero eigenvalue modulus of the per-lag discount matrices of the monograph, the effect of initial states set to one in the full recursion () over 2400 periods and its growth per period over the second half, the growth of the weight of an observation (the same recursion from zero states with one unit observation), and the largest root modulus of the cancelled MA polynomial.
Setup: studied stability condition of the ADAM monograph · cases ETS(A,N,A) with m = 12 · procedure discount recursion over 2400 periods · lens largest mode modulus, growth per period
| Row | alpha | gamma | largest nonzero eigenvalue modulus of the book's per-lag discount matrices | effect of the initial states on the fitted value at the last period (period: 2400) | growth of the effect of the initial states per period over the second half | growth of the weight of an observation per period over the second half | largest root modulus of the cancelled MA polynomial |
|---|---|---|---|---|---|---|---|
| r1 | 0.1 | 0.1 | 0.9 | 0.0000 | 0.9896 | 0.9909 | 0.9911 |
| r2 | 1.2 | 0.9 | 0.2 | 5.96878e+16 | 1.0164 | 1.0164 | 1.0165 |
Exploratory run RN40 of bench_eigens.R: the package installed at -O2 from a worktree at commit b963693 (the polynomial check with the step-down multiplying by 1 / (1 - k^2), the algorithm kept in the final code), each fit run seven times with smoothEigens() switched in the namespace between the per-lag and the polynomial check; the median time of a fit and its calls of smoothEigens(). The optimisation paths differ between the two checks, whose admissible regions differ.
Setup: studied per-lag check, smoothEigensCpp() · cases AirPassengers, synthetic hourly series · procedure timing benchmark · lens time of a fit
| Row | fit | per-lag, seconds | per-lag, calls | polynomial, seconds | polynomial, calls | polynomial, inadmissible calls | ratio of the times, polynomial / per-lag |
|---|---|---|---|---|---|---|---|
| r1 | gum(AirPassengers, orders=c(1,1), lags=c(1,12)) | 0.097 | 484 | 0.08 | 484 | 40 | 0.8247 |
| r2 | gum(AirPassengers, orders=c(2,1), lags=c(1,12)) | 0.163 | 964 | 0.195 | 964 | 43 | 1.1963 |
| r3 | adam(AirPassengers, "AAdA") | 0.052 | 162 | 0.046 | 162 | 60 | 0.8846 |
| r4 | adam(hourly, "ANA", lags=c(24,168)) | 0.144 | 122 | 0.156 | 122 | 52 | 1.0833 |
| r5 | ces(AirPassengers, "full") | 0.06 | 324 | 0.056 | 310 | 68 | 0.9333 |
Planned tests (lab plans PL7 and PL8, runs RN49 and RN50, the same command): ets_arima.py --seed 2 --n 500 --adam 20 generated 500 ETS+ARIMA and 500 ETS+SARIMA models (seed 2, new against the exploratory runs RN46-RN48, seed 1), built each in ADAM's form, compared the matrices of 20 of them with adam() (0 lags differed, matrices within 4.4e-15), and decided admissibility by the check of the parts apart, the check of the whole model and the PBH reference.
Setup: studied check of the parts apart · cases random ETS+ARIMA models · procedure comparison with a reference, PBH reference · lens admissibility decision
- R17 max abs difference between the ARIMA form of the ARIMA part and its ARI and MA polynomials = 0.0000 (models: 1000)
- R18 models whose component lags differ from those of adam() = 0 (models: 20)
- R19 max abs difference between the matrices built here and those of adam() = 0.0000 (models: 20)
| Row | family | check | models whose admissibility decision differs from the PBH reference | models accepted by the check and rejected by the PBH reference | models rejected by the check and accepted by the PBH reference |
|---|---|---|---|---|---|
| r1 | ETS+ARIMA | split | 166 | 104 | 62 |
| r2 | ETS+ARIMA | joint | 0 | 0 | 0 |
| r3 | ETS+SARIMA | split | 159 | 128 | 31 |
| r4 | ETS+SARIMA | joint | 0 | 0 | 0 |
| Row | family | max abs difference of the largest modulus, check of the whole model against the PBH reference, on models both find inadmissible | models found admissible by the PBH reference (models: 500) | inadmissible |
|---|---|---|---|---|
| r1 | ETS+ARIMA | 0.0000 | 159 | 341 |
| r2 | ETS+SARIMA | 0.0000 | 87 | 413 |
Planned tests (lab plans PL7 and PL8, runs RN49 and RN50, the same command): ets_arima.py --seed 2 --n 500 --adam 20 generated 500 ETS+ARIMA and 500 ETS+SARIMA models (seed 2, new against the exploratory runs RN46-RN48, seed 1), built each in ADAM's form, compared the matrices of 20 of them with adam() (0 lags differed, matrices within 4.4e-15), and decided admissibility by the check of the parts apart, the check of the whole model and the PBH reference.
Setup: studied check of the whole model · cases random ETS+ARIMA models · procedure comparison with a reference, PBH reference · lens admissibility decision, largest mode modulus
- R17 max abs difference between the ARIMA form of the ARIMA part and its ARI and MA polynomials = 0.0000 (models: 1000)
- R18 models whose component lags differ from those of adam() = 0 (models: 20)
- R19 max abs difference between the matrices built here and those of adam() = 0.0000 (models: 20)
| Row | family | check | models whose admissibility decision differs from the PBH reference | models accepted by the check and rejected by the PBH reference | models rejected by the check and accepted by the PBH reference |
|---|---|---|---|---|---|
| r1 | ETS+ARIMA | split | 166 | 104 | 62 |
| r2 | ETS+ARIMA | joint | 0 | 0 | 0 |
| r3 | ETS+SARIMA | split | 159 | 128 | 31 |
| r4 | ETS+SARIMA | joint | 0 | 0 | 0 |
| Row | family | max abs difference of the largest modulus, check of the whole model against the PBH reference, on models both find inadmissible | models found admissible by the PBH reference (models: 500) | inadmissible |
|---|---|---|---|---|
| r1 | ETS+ARIMA | 0.0000 | 159 | 341 |
| r2 | ETS+SARIMA | 0.0000 | 87 | 413 |
Planned test (lab plan PL9, run RN53): ets_arima.py --seed 3 --n 500 --impl generated 500 ETS+ARIMA and 500 ETS+SARIMA models (seed 3) and passed the matrices of each to adam_bounds_checker() of R (through pkgload::load_all of the repository) and of Python, with the AR reflection of its factors, comparing the penalty (zero, or 1e100 times the largest root modulus) with the prototype check of the whole model.
Setup: studied bounds checker of adam() · cases random ETS+ARIMA models · procedure comparison with a reference, check of the whole model · lens admissibility decision, largest mode modulus
- R17 max abs difference between the ARIMA form of the ARIMA part and its ARI and MA polynomials = 0.0000 (models: 1000)
| Row | family | check | models whose admissibility decision differs from the PBH reference | models accepted by the check and rejected by the PBH reference | models rejected by the check and accepted by the PBH reference |
|---|---|---|---|---|---|
| r1 | ETS+ARIMA | split | 171 | 115 | 56 |
| r2 | ETS+ARIMA | joint | 0 | 0 | 0 |
| r3 | ETS+SARIMA | split | 150 | 129 | 21 |
| r4 | ETS+SARIMA | joint | 0 | 0 | 0 |
| Row | family | max abs difference of the largest modulus, check of the whole model against the PBH reference, on models both find inadmissible | models found admissible by the PBH reference (models: 500) | inadmissible |
|---|---|---|---|---|
| r1 | ETS+ARIMA | 0.0000 | 159 | 341 |
| r2 | ETS+SARIMA | 0.0000 | 76 | 424 |
| Row | family | language | admissibility decisions of the package's bounds checker that differ from the prototype check of the whole model | max abs difference of the largest modulus, package's bounds checker against the prototype, on models both find inadmissible | inadmissible |
|---|---|---|---|---|---|
| r1 | ETS+ARIMA | R | 0 | 0.0000 | 341 |
| r2 | ETS+ARIMA | Python | 0 | 0.0000 | 341 |
| r3 | ETS+SARIMA | R | 0 | 0.0000 | 424 |
| r4 | ETS+SARIMA | Python | 0 | 0.0000 | 424 |
Exploratory runs of timing_ets_arima.R: the package installed at -O2 from two worktrees, the check of the parts apart (commit 397f255f) and of the whole model, each fit run five times. RN55 (commit af998d26) ran the check of the whole model on every call: pure ARIMA fits took 1.5 and 1.8 times as long. RN56 (commit b4a10cc6) adds the shortcut that, without ETS and adaptive regressors, accepts invertible MA factors without the check of the whole model; its times and log-likelihoods are in the table.
Setup: studied check of the parts apart, bounds checker of adam() · cases AirPassengers, BJsales · procedure timing benchmark · lens time of a fit, log-likelihood of a fit
| Row | fit | parts apart, seconds | whole model, seconds | parts apart, log-likelihood | whole model, log-likelihood |
|---|---|---|---|---|---|
| r1 | ARIMA(1,1,1)(1,1,1)[12] | 0.07 | 0.074 | -541.844 | -541.382 |
| r2 | ETS(A,N,A)+ARIMA(1,0,1) | 0.067 | 0.064 | -569.649 | -572.214 |
| r3 | ETS(A,Ad,N)+ARIMA(0,1,2) | 0.078 | 0.078 | -255.264 | -255.264 |
| r4 | ssarima (1,1,1)(1,1,1)[12] | 0.08 | 0.083 | -556.99 | -556.99 |
Exploratory runs of the checker P4 (exact_oracle.py, seeds 21-23 and 31-34, 250 models each): admissibility by an exact oracle (rational determinants and the exact greatest common divisor of theta and phi, which cancels any shared factor) against the cancellation of cyclotomic factors ('author'), the PBH reference ('pbh') and the package ('pkg'); the number of models whose decision differs from the oracle.
Setup: studied check of the whole model, PBH reference, bounds checker of adam() · cases ETS+ARIMA models of the checker's generator · procedure comparison with a reference, exact gcd oracle · lens admissibility decision
| Row | seed | models whose admissibility decision differs from the exact gcd oracle (check: author) | models whose admissibility decision differs from the exact gcd oracle (check: pbh) | models whose admissibility decision differs from the exact gcd oracle (check: pkg) |
|---|---|---|---|---|
| r1 | 21 | 0 | 0 | 1 |
| r2 | 22 | 0 | 0 | 0 |
| r3 | 23 | 0 | 0 | 0 |
| r4 | 31 | 0 | 0 | 0 |
| r5 | 32 | 0 | 0 | 0 |
| r6 | 33 | 0 | 1 | 1 |
| r7 | 34 | 0 | 0 | 1 |
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; no independent implementation was compared.
The random model sets (persistence ranges, the probabilities of zero persistence and of a constant, the standard deviations of the GUM matrices) were chosen by the agent and not drawn from models estimated on data.
The reference decisions use numpy's polynomial roots (companion-matrix eigenvalues) for polynomials of degree up to 535 before cancellation with many roots near the unit circle, whose accuracy there was not checked by a second method.
The plans of the tests behind the step-down and bisection claims stated MA polynomial degrees up to 366; the generator code named in the plans, run unchanged, produced degrees up to 535 before cancellation.
The recursion of the counterexample to the monograph's condition was run for one parameter pair, with the initial states set to one and no data.
The fit timings come from one machine, seven repeats per fit, with a run-to-run variation of about 10% between benchmark runs of the same code.
For GUM models with structured parameters, such as a state with |F_ii| > 1 and zero persistence, theta and phi can share a factor with a root in |B| <= 1 that is not cyclotomic; the check keeps it and rejects the model although its observation weights decay, because the initial state of that mode has a growing effect.
Estimates with bounds="admissible" change for ETS+ARIMA models, whose admissible region changes, and the likelihood of such models can have several local optima: on ETS(A,N,A)+ARIMA(1,0,1) on AirPassengers the fit with the check of the whole model reached a lower log-likelihood than the fit with the check of the parts apart.
Two defects found while testing were fixed before the planned runs: adam() with provided MA parameters added the MA coefficient of a lag without AR or differences twice to the persistence vector (and reapply() did so with the drawn ones, in R and Python), found by the structure check of the exploratory runs RN46 and RN47; and the Python build of smooth crashed at exit after checking a model whose MA polynomial has degree 16 or more (runs RN51 and RN52), because the caches of the check were freed through numpy after it had shut down. The second affected the implementation tested by C16 in Python, not its results. After the fixes the matrices built by the study matched those of adam() within 4.4e-15 (E21), and the planned run of the checkers (E22) exited normally.
For an MA root exactly on the unit circle that does not cancel, the decision of the check is set by rounding: the checker P4 found three models of a wider generator, with values of the check between 0.99999999999 and 1, that the package accepted and the prototype rejected. Since this finding the bounds checkers admit a model only when the value is at most 1 - 1e-10 (decision DC8 of the lab record), which rejects these three; the planned tests ran before the margin, and their random models have no such root.
The PBH reference is not exact for a repeated unit root: the checker P4 found a model whose cancelled MA polynomial keeps a double root at -1, which the reference accepted and the cancellation and an exact gcd rejected. The random models of the planned tests have no such root.
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: Context, 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: C4, C18, 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
- Svetunkov (2023) Svetunkov, I. (2023). Forecasting and Analytics with the Augmented Dynamic Adaptive Model (ADAM). Chapman and Hall/CRC. doi:10.1201/9781003452652 Used by: Context, D16
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
- A2 · code exploratory script: ETS(A,N,A) cases, multiple seasonality and the GUM starting point, determinant identity, step-down and bisection on random GUMs, timings
- 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
- A4 · code timing script: recursion steps and mean times of the step-down test, of all roots by numpy companion eigenvalues and of the DFT coefficients, for random GUMs with lags (1, 24, 168) and ETS(A,N,A,A) with seasonal lags 24 and 168
- A5 · code test script of the C++ implementation: smoothEigensR() through pkgload::load_all, called three times per model, against the numpy prototype on seeded random ETS and GUM models
- A6 · code check of the per-lag condition of the ADAM monograph (eqs 5.20-5.22) against the full discount recursion of ETS(A,N,A): the effect of the initial states and the weights of the observations
- A7 · code benchmark of the per-lag check against the polynomial check: time per call on fixed models and per fit with bounds=admissible, with smoothEigens() switched in the namespace
- A8 · code the C++ implementation in smooth: lagPolynomial(), minorPolynomial(), complexDeterminant(), fftCore(), cyclotomicPolynomial(), polynomialDivide(), cancelUnitRoots(), largestRootModulus() and smoothEigensCpp()
- A9 · lab_record Lab record of the study: questions, hypotheses, plans, runs, results, checks and decisions, as an append-only, hash-chained event log (Claimset lab record specification v0.6), anchored on the git branch claimset-lab-eigenChecker of openforecast-org/smooth; moved from .claude/lab to claimset/adam-admissible-bounds/lab by its relocation event MV1.
- A10 · code test script of Q2: random ETS+ARIMA models, the check of the parts apart and of the whole model against the PBH reference, the structure against adam(), and the bounds checkers of the package in R and Python against the prototype
- A11 · code fit times and log-likelihoods of ARIMA and ETS+ARIMA models with bounds="admissible", the package installed from two commits
- A12 · code the bounds checker of adam(), om() and omg() in R (adam_bounds_checker())
- A13 · code the bounds checker of ADAM, OM and OMG in Python (adam_bounds_checker())
- A15 · code the exact oracle of the checker P4 (with lib.py in the same folder): rational determinants and the exact gcd of theta and phi against the cancellation, the PBH reference and the package
- A16 · code the checker P4's exact check of the ARIMA form of ADAM's ARIMA part and of the worked example, on matrices of adam()
- A17 · code the checker P4's test of the shortcut for pure ARIMA in R's adam_bounds_checker()
- A14 · code the C++ check shared by R and Python (smoothEigensCpp()), at the version tested by C26
- 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.
Score
Reliability of the paper: 50, Low
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. Every issue as text, for an agent preparing the next version.
The paper scores as its lowest principal claim, C4. Open problems in the principal claims and what they rest on, each counted once, with the most it costs a claim:
- −20 Open problems Limitation L2 (could reverse, not mitigated): 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; no independent implementation was compared. In C1, C3, C16. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −20 Open problems Limitation L4 (could reverse, not mitigated): The reference decisions use numpy's polynomial roots (companion-matrix eigenvalues) for polynomials of degree up to 535 before cancellation with many roots near the unit circle, whose accuracy there was not checked by a second method. In C4, C16. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −5 Context A principal claim related to no earlier work. In C3, C16, C24, C25, C26. To remove it: Relate the claim to the earlier work it extends, addresses or departs from.
- −5 Plan The test deviated from its plan. In C4. To remove it: Each deviation is a limitation: say how it bears on the result.
- −5 Plan The lab record flags the test: code changed after plan. In C24, C25, C26. To remove it: Rerun the test as planned, or explain the flag in a limitation.
- −3 Plan The plan's time is anchored by a git push only. In C1, C3, C4, C16, C24, C25, C26. 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. In C1. 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. In C1. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −2 Open problems Limitation L12 (reduces transferability, not mitigated): The PBH reference is not exact for a repeated unit root: the checker P4 found a model whose cancelled MA polynomial keeps a double root at -1, which the reference accepted and the cancellation and an exact gcd rejected. The random models of the planned tests have no such root. In C24, C25. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Limitation L3 (reduces transferability, not mitigated): The random model sets (persistence ranges, the probabilities of zero persistence and of a constant, the standard deviations of the GUM matrices) were chosen by the agent and not drawn from models estimated on data. In C3, C4, C16. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Limitation L5 (reduces transferability, not mitigated): The plans of the tests behind the step-down and bisection claims stated MA polynomial degrees up to 366; the generator code named in the plans, run unchanged, produced degrees up to 535 before cancellation. In C4. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Limitation L6 (reduces transferability, mitigation partial): The recursion of the counterexample to the monograph's condition was run for one parameter pair, with the initial states set to one and no data. In C22. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Limitation L8 (reduces transferability, not mitigated): For GUM models with structured parameters, such as a state with |F_ii| > 1 and zero persistence, theta and phi can share a factor with a root in |B| <= 1 that is not cyclotomic; the check keeps it and rejects the model although its observation weights decay, because the initial state of that mode has a growing effect. In C4, C16. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −3 Open problems Assumption C14 is not checked: The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not. In C1, C3. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
- −3 Open problems Assumption C19 is not checked: In additive ETS models, and in GUM models with an identity transition or with transition, persistence and measurement in general position, every factor shared by $\theta(B)$ and $\phi(B)$ with a root in $|B| \le 1$ is a product of cyclotomic polynomials $\Phi_n(B)$ with $n$ dividing a lag of the model. In C4, C16. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
Claims
C1: 72, Medium
Novelty: refutes earlier work, by the authors · no close match on EntryLib
- −20 Open problems Limitation L2 (could reverse, not mitigated): 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; no independent implementation was compared. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −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 Assumption C14 is not checked: The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not. 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.
C2: 72, Medium
Novelty: new, by the authors
- −20 Open problems Limitation L2 (could reverse, not mitigated): 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; no independent implementation was compared. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −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 L3 (reduces transferability, not mitigated): The random model sets (persistence ranges, the probabilities of zero persistence and of a constant, the standard deviations of the GUM matrices) were chosen by the agent and not drawn from models estimated on data. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Assumption C14 is not checked: The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
C3: 68, Medium
Novelty: new, by the authors · no close match on EntryLib
- −20 Open problems Limitation L2 (could reverse, not mitigated): 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; no independent implementation was compared. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −5 Context A principal claim related to no earlier work. To remove it: Relate the claim to the earlier work it extends, addresses or departs from.
- −3 Open problems Assumption C14 is not checked: The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
- −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.
- −1 Open problems Limitation L3 (reduces transferability, not mitigated): The random model sets (persistence ranges, the probabilities of zero persistence and of a constant, the standard deviations of the GUM matrices) were chosen by the agent and not drawn from models estimated on data. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
C4: 50, Low
Novelty: new, by the authors · no close match on EntryLib
- −20 Open problems Limitation L4 (could reverse, not mitigated): The reference decisions use numpy's polynomial roots (companion-matrix eigenvalues) for polynomials of degree up to 535 before cancellation with many roots near the unit circle, whose accuracy there was not checked by a second method. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −10 Open problems Limitation L2 (could reverse, not mitigated): 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; no independent implementation was compared. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −5 Context A principal claim related to no earlier work. To remove it: Relate the claim to the earlier work it extends, addresses or departs from.
- −5 Plan The test deviated from its plan. To remove it: Each deviation is a limitation: say how it bears on the result.
- −3 Open problems Assumption C19 is not checked: In additive ETS models, and in GUM models with an identity transition or with transition, persistence and measurement in general position, every factor shared by $\theta(B)$ and $\phi(B)$ with a root in $|B| \le 1$ is a product of cyclotomic polynomials $\Phi_n(B)$ with $n$ dividing a lag of the model. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
- −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.
- −1 Open problems Limitation L3 (reduces transferability, not mitigated): The random model sets (persistence ranges, the probabilities of zero persistence and of a constant, the standard deviations of the GUM matrices) were chosen by the agent and not drawn from models estimated on data. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Limitation L5 (reduces transferability, not mitigated): The plans of the tests behind the step-down and bisection claims stated MA polynomial degrees up to 366; the generator code named in the plans, run unchanged, produced degrees up to 535 before cancellation. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Limitation L8 (reduces transferability, not mitigated): For GUM models with structured parameters, such as a state with |F_ii| > 1 and zero persistence, theta and phi can share a factor with a root in |B| <= 1 that is not cyclotomic; the check keeps it and rejects the model although its observation weights decay, because the initial state of that mode has a growing effect. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Assumption C14 is not checked: The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
C5: 70, Medium
Novelty: new, by the authors
- −20 Open problems Limitation L4 (could reverse, not mitigated): The reference decisions use numpy's polynomial roots (companion-matrix eigenvalues) for polynomials of degree up to 535 before cancellation with many roots near the unit circle, whose accuracy there was not checked by a second method. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −5 Plan The test deviated from its plan. To remove it: Each deviation is a limitation: say how it bears on the result.
- −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.
- −1 Open problems Limitation L3 (reduces transferability, not mitigated): The random model sets (persistence ranges, the probabilities of zero persistence and of a constant, the standard deviations of the GUM matrices) were chosen by the agent and not drawn from models estimated on data. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Limitation L5 (reduces transferability, not mitigated): The plans of the tests behind the step-down and bisection claims stated MA polynomial degrees up to 366; the generator code named in the plans, run unchanged, produced degrees up to 535 before cancellation. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
C16: 50, Low
Novelty: new, by the authors · no close match on EntryLib
- −20 Open problems Limitation L2 (could reverse, not mitigated): 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; no independent implementation was compared. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −10 Open problems Limitation L4 (could reverse, not mitigated): The reference decisions use numpy's polynomial roots (companion-matrix eigenvalues) for polynomials of degree up to 535 before cancellation with many roots near the unit circle, whose accuracy there was not checked by a second method. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −5 Context A principal claim related to no earlier work. To remove it: Relate the claim to the earlier work it extends, addresses or departs from.
- −5 Plan The test deviated from its plan. To remove it: Each deviation is a limitation: say how it bears on the result.
- −3 Open problems Assumption C19 is not checked: In additive ETS models, and in GUM models with an identity transition or with transition, persistence and measurement in general position, every factor shared by $\theta(B)$ and $\phi(B)$ with a root in $|B| \le 1$ is a product of cyclotomic polynomials $\Phi_n(B)$ with $n$ dividing a lag of the model. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
- −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.
- −1 Open problems Limitation L3 (reduces transferability, not mitigated): The random model sets (persistence ranges, the probabilities of zero persistence and of a constant, the standard deviations of the GUM matrices) were chosen by the agent and not drawn from models estimated on data. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Limitation L5 (reduces transferability, not mitigated): The plans of the tests behind the step-down and bisection claims stated MA polynomial degrees up to 366; the generator code named in the plans, run unchanged, produced degrees up to 535 before cancellation. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Limitation L8 (reduces transferability, not mitigated): For GUM models with structured parameters, such as a state with |F_ii| > 1 and zero persistence, theta and phi can share a factor with a root in |B| <= 1 that is not cyclotomic; the check keeps it and rejects the model although its observation weights decay, because the initial state of that mode has a growing effect. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −1 Open problems Assumption C14 is not checked: The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
C10: 77, Medium
Novelty: new, by the authors
- −20 Open problems Limitation L2 (could reverse, not mitigated): 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; no independent implementation was compared. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −3 Open problems Assumption C14 is not checked: The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
C11: 77, Medium
Novelty: new, by the authors
- −20 Open problems Limitation L2 (could reverse, not mitigated): 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; no independent implementation was compared. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
- −3 Open problems Assumption C14 is not checked: The [[D5:PBH reference]] with relative rank tolerance 1e-7 classifies every eigenvalue of modulus at least 1 of the [[D2:expanded discount matrix]] of the tested models correctly as both reachable and observable or not. To remove it: Test the assumption, or analyse how sensitive the claim is to it.
C22: 99, High
Novelty: refutes earlier work, by the authors · no close match on EntryLib
- −1 Open problems Limitation L6 (reduces transferability, mitigation partial): The recursion of the counterexample to the monograph's condition was run for one parameter pair, with the initial states set to one and no data. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
C23: 95, High
Novelty: new, by the authors
- −5 Open problems Limitation L7 (reduces precision, not mitigated): The fit timings come from one machine, seven repeats per fit, with a run-to-run variation of about 10% between benchmark runs of the same code. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
C24: 85, High
Novelty: new, by the authors · no close match on EntryLib
- −5 Context A principal claim related to no earlier work. To remove it: Relate the claim to the earlier work it extends, addresses or departs from.
- −5 Plan The lab record flags the test: code changed after plan. To remove it: Rerun the test as planned, or explain the flag in a limitation.
- −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.
- −2 Open problems Limitation L12 (reduces transferability, not mitigated): The PBH reference is not exact for a repeated unit root: the checker P4 found a model whose cancelled MA polynomial keeps a double root at -1, which the reference accepted and the cancellation and an exact gcd rejected. The random models of the planned tests have no such root. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
C25: 85, High
Novelty: new, by the authors · no close match on EntryLib
- −5 Context A principal claim related to no earlier work. To remove it: Relate the claim to the earlier work it extends, addresses or departs from.
- −5 Plan The lab record flags the test: code changed after plan. To remove it: Rerun the test as planned, or explain the flag in a limitation.
- −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.
- −2 Open problems Limitation L12 (reduces transferability, not mitigated): The PBH reference is not exact for a repeated unit root: the checker P4 found a model whose cancelled MA polynomial keeps a double root at -1, which the reference accepted and the cancellation and an exact gcd rejected. The random models of the planned tests have no such root. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
C26: 87, High
Novelty: new, by the authors · no close match on EntryLib
- −5 Context A principal claim related to no earlier work. To remove it: Relate the claim to the earlier work it extends, addresses or departs from.
- −5 Plan The lab record flags the test: code changed after plan. To remove it: Rerun the test as planned, or explain the flag in a limitation.
- −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.
C27: 95, High
Novelty: new, by the authors
- −5 Open problems Limitation L9 (reduces precision, not mitigated): Estimates with bounds="admissible" change for ETS+ARIMA models, whose admissible region changes, and the likelihood of such models can have several local optima: on ETS(A,N,A)+ARIMA(1,0,1) on AirPassengers the fit with the check of the whole model reached a lower log-likelihood than the fit with the check of the parts apart. To remove it: Mitigate it with evidence, or narrow the claim's scope so that it no longer applies.
Versions
- Version 3 · 10 November 2026 at 22:09 UTC · corrected
- Version 2 (this page) · 10 November 2026 at 18:08 UTC · corrected
- Version 1 · 10 November 2026 at 16:27 UTC · active
Every version is kept in the public registry (github.com/entrylib/registry).