{
 "bundle_of": "C22",
 "schema_version": "0.40",
 "paper": {
  "id": "entrylib:2026.000002",
  "version": 3,
  "title": "Admissibility of lagged state space models through the ARIMA form of the whole model",
  "licence": "CC-BY-4.0",
  "status": "corrected",
  "date": "2026-11-10",
  "status_notice": {
   "date": "2026-11-10",
   "reason_code": "correction",
   "statement": "Limitations L2 and L4 are answered by a planned independent check (new evidence E25): an exact oracle in rational arithmetic with certified root enclosures, written by a new contributor (P5) without the prototype, compared on the models of the planned tests; it agrees with the PBH reference, the cyclotomic cancellation, the step-down test and the bisection on every model it decides, and its four hypotheses are reported as claims C29-C32, one of them inconclusive by its rule. The assumptions C14 (reworded to the band the tests leave out) and C19 are tested by it; claims C1-C5, C10, C11 and C16 carry its checks; claims C3, C4, C16 and C24-C26 relate to the earlier work they extend, supersede or contradict. The lab record (A9) and the results file (A18) are updated to the record's current version. No earlier claim's conclusion or ID changed.",
   "issued_by": "Ivan Svetunkov (ORCID 0000-0001-7826-0281)"
  }
 },
 "claims": [
  {
   "id": "C22",
   "statement": "For [[D35:ETS(A,N,A)]] with $m = 12$, $\\alpha = 1.2$ and $\\gamma = 0.9$, the [[D16: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.",
   "about": {
    "subject": "D16",
    "relation": "holds for a model that is not admissible",
    "object": null,
    "comparator": null,
    "conditions": [
     "D35",
     "alpha = 1.2, gamma = 0.9"
    ]
   },
   "type": "descriptive",
   "role": "principal",
   "novelty": "refutation",
   "planning": "exploratory",
   "support": [
    {
     "kind": "simulation",
     "evidence": "E18",
     "artefacts": [
      "A1",
      "A6"
     ],
     "results": [
      "E18.T1.r2"
     ]
    }
   ],
   "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"
    ]
   },
   "depends_on": [
    "C21"
   ],
   "limitations": [
    "L6"
   ],
   "relations": [
    {
     "type": "contradicts",
     "reference": "B4",
     "locator": "Section 5.4, equations 5.20 to 5.22",
     "self": true,
     "note": "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)."
    }
   ],
   "assessments": [
    {
     "by": "author",
     "strength": "moderate",
     "rationale": "An exploratory but deterministic counterexample, with the growth of the recursion and the root of the polynomial computed separately and agreeing; one parameter pair, chosen from the planned grid test of the per-lag check."
    }
   ],
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "book_check.py reproduced E18 (0.2, 1.016393, 1.016457); the roots of the cancelled polynomial and the expanded matrix confirm several modes above one; suggested adding the growth of the observation weights (measured at about 1.01642 per period) and naming the forecastability condition in the note, since done with run RN44."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  },
  {
   "id": "C21",
   "statement": "The per-lag discount matrices $D_{m_i} = F_{m_i} - g_{m_i} w_{m_i}'$ of [[D16:Section 5.4 of the ADAM monograph]] have as nonzero eigenvalues those of the diagonal block of $D = F - g w'$ for the lag $m_i$ (the [[D4:per-lag check]]), and their sum is $$D + \\sum_{i \\neq j} g_{m_i} w_{m_j}',$$ which differs from $D$ whenever $g w'$ links components of distinct lags.",
   "about": {
    "subject": "D16",
    "relation": "checks the same eigenvalues as",
    "object": null,
    "comparator": "D4",
    "conditions": [
     "more than one distinct lag"
    ]
   },
   "type": "formal",
   "role": "supporting",
   "novelty": "no_prior_found",
   "support": [
    {
     "kind": "formal_proof",
     "evidence": "E17"
    }
   ],
   "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"
    ]
   },
   "verification": "agent_checked",
   "checks": [
    {
     "by": "P3",
     "outcome": "confirmed",
     "extent": "full",
     "notes": "500 random models with lags in {1, 3, 12}: the nonzero eigenvalues of each D_{m_i} equal those of the diagonal block of D, and the sum equals D plus the cross terms, never D with distinct lags. Noted the missing step for 'differs from D', the 'distinct lags' wording and the monograph's undefined split of g, since added to the evidence and the scope."
    }
   ],
   "verifiability": "open",
   "verifiability_flags": []
  }
 ],
 "definitions": [
  {
   "id": "D1",
   "term": "lagged SSOE model",
   "definition": "A pure additive single-source-of-error state space model with $k$ components, $$\\begin{aligned} y_t &= w' v_{t-l} + \\epsilon_t \\\\ v_t &= F v_{t-l} + g \\epsilon_t, \\end{aligned}$$ in which component $j$ of $v_{t-l}$ enters with its own lag $l_j$; its discount matrix is $D = F - g w'$ and its lag matrix is $L(B) = \\mathrm{diag}(B^{l_1}, \\dots, B^{l_k})$ for the backshift operator $B$; $\\Lambda(\\lambda) = \\mathrm{diag}(\\lambda^{l_1}, \\dots, \\lambda^{l_k})$ for a complex number $\\lambda$.",
   "kind": "method"
  },
  {
   "id": "D2",
   "term": "expanded discount matrix",
   "definition": "The transition matrix $\\tilde D$ of size $\\sum_j l_j$ of the lag-1 system equivalent to $v_t = D v_{t-l}$, in which component $j$ carries itself and its $l_j - 1$ lagged copies; $\\tilde F$, $\\tilde g$ and $\\tilde w$ are expanded in the same way, so that $\\tilde D = \\tilde F - \\tilde g \\tilde w'$.",
   "kind": "concept"
  },
  {
   "id": "D3",
   "term": "decaying weights",
   "definition": "A lagged SSOE model has decaying weights when the weights $\\tilde w' \\tilde D^j \\tilde g$ of the past observations in its fitted values tend to zero, that is, when every eigenvalue $\\lambda$ of its expanded discount matrix that is reachable from $\\tilde g$ and observable through $\\tilde w$ has $|\\lambda| < 1$; the largest such $|\\lambda|$ is its largest mode modulus. A mode that $\\tilde g$ does not reach but $\\tilde w$ sees carries an initial state whose effect is not covered: with $|\\lambda| > 1$ it grows.",
   "kind": "concept"
  },
  {
   "id": "D4",
   "term": "per-lag check",
   "definition": "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 $D$, one block per unique lag, has modulus below 1; reimplemented in numpy as per_lag_max().",
   "kind": "method"
  },
  {
   "id": "D5",
   "term": "PBH reference",
   "definition": "The largest modulus among the eigenvalues $\\lambda$ of the expanded discount matrix for which the smallest singular values of $[\\lambda I - \\tilde D;\\ \\tilde w']$ and of $[\\lambda I - \\tilde D,\\ \\tilde g]$ both exceed $10^{-7}(\\|\\tilde D\\|_2 + \\|\\tilde g\\| + \\|\\tilde w\\|)$ (Popov-Belevitch-Hautus rank tests), computed with numpy as pbh_max().",
   "kind": "method"
  },
  {
   "id": "D8",
   "term": "GUM",
   "definition": "Generalised Univariate Model of the smooth package: a lagged SSOE model whose $F$, $g$ and $w$ are all estimated.",
   "source": "B3",
   "kind": "method"
  },
  {
   "id": "D9",
   "term": "ETS(A,N,A)",
   "definition": "Exponential smoothing with additive error, no trend and additive seasonality of period $m$; here in the lagged form with a level of lag 1 and one seasonal state of lag $m$, $F = I$, $w = (1, 1)'$, $g = (\\alpha, \\gamma)'$.",
   "source": "B1",
   "kind": "method"
  },
  {
   "id": "D16",
   "term": "stability condition of the ADAM monograph",
   "kind": "method",
   "definition": "The condition of Section 5.4 of the ADAM monograph (eqs 5.20-5.22): every nonzero eigenvalue of each per-lag discount matrix $$D_{m_i} = F_{m_i} - g_{m_i} w_{m_i}'$$ has modulus below 1.",
   "source": "B4"
  },
  {
   "id": "D17",
   "term": "ETS(A,N,A) grid",
   "kind": "data",
   "definition": "The 3042 [[D9:ETS(A,N,A)]] models with $m = 4$ and $m = 12$ and $\\alpha$ and $\\gamma$ on the grid 0.05, 0.10, ..., 1.95 (confirm.py, plan PL1)."
  },
  {
   "id": "D18",
   "term": "random GUM models with lags (1, 12)",
   "kind": "data",
   "definition": "200 [[D8: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 (confirm.py, seed 2026)."
  },
  {
   "id": "D26",
   "term": "comparison with a reference",
   "kind": "design",
   "definition": "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 [[D5: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."
  },
  {
   "id": "D28",
   "term": "discount recursion over 2400 periods",
   "kind": "design",
   "definition": "The full discount recursion $v_t = D v_{t-l}$ 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)."
  },
  {
   "id": "D29",
   "term": "admissibility decision",
   "kind": "variable",
   "definition": "Whether a method accepts a model as admissible ([[D3:decaying weights]]); compared between a method and a reference as the number of models on which the two differ."
  },
  {
   "id": "D30",
   "term": "largest mode modulus",
   "kind": "variable",
   "definition": "The largest modulus of the modes that decide admissibility: for the [[D5:PBH reference]] the largest $|\\lambda|$ of the reachable and observable eigenvalues of the [[D2:expanded discount matrix]], for the check of the whole model $1/\\min|B|$ over the roots $B$ of the cancelled MA polynomial, for the per-lag check the largest $|\\lambda|$ of its blocks; a model is admissible when it is below 1."
  },
  {
   "id": "D34",
   "term": "growth per period",
   "kind": "variable",
   "definition": "The growth per period, over the second half of the recursion, of the effect $|w' v_{t-l}|$ of initial states set to one on the fitted value, and of the weight of one unit observation."
  },
  {
   "id": "D35",
   "term": "ETS(A,N,A) with m = 12",
   "kind": "data",
   "definition": "[[D9:ETS(A,N,A)]] with $m = 12$ at $(\\alpha, \\gamma) = (0.1, 0.1)$ and $(1.2, 0.9)$ (book_check.py)."
  }
 ],
 "evidence": [
  {
   "id": "E1",
   "profile": "simulation",
   "description": "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": [
     "D4"
    ],
    "cases": [
     "D17",
     "D18"
    ],
    "procedure": [
     "D26",
     "D5"
    ],
    "lens": [
     "D29"
    ]
   },
   "availability": {
    "level": "public"
   },
   "lab_runs": [
    "RN7"
   ],
   "results": [
    {
     "id": "R1",
     "variable": "models accepted by the per-lag check that do not forget their initial states",
     "value": 1482.0,
     "conditions": {
      "family": "ETS(A,N,A)",
      "models": 3042
     }
    },
    {
     "id": "R2",
     "variable": "models rejected by the per-lag check that forget their initial states",
     "value": 0.0,
     "conditions": {
      "family": "ETS(A,N,A)",
      "models": 3042
     }
    },
    {
     "id": "R3",
     "variable": "models accepted by the per-lag check",
     "value": 3042.0,
     "conditions": {
      "family": "ETS(A,N,A)",
      "models": 3042
     }
    },
    {
     "id": "R4",
     "variable": "models accepted by the per-lag check that do not forget their initial states",
     "value": 10.0,
     "conditions": {
      "family": "GUM",
      "models": 200
     }
    },
    {
     "id": "R5",
     "variable": "models rejected by the per-lag check that forget their initial states",
     "value": 1.0,
     "conditions": {
      "family": "GUM",
      "models": 200
     }
    },
    {
     "id": "R6",
     "variable": "models accepted by the per-lag check",
     "value": 193.0,
     "conditions": {
      "family": "GUM",
      "models": 200
     }
    }
   ],
   "execution": {
    "code_version": "fe3ecfad42341fb0d2b81d02a7919b43baa5f695",
    "software": {
     "python": "3.13.16",
     "platform": "Linux-6.18.44-fc-v139-x86_64-with-glibc2.39"
    }
   },
   "artefacts": [
    "A1",
    "A3"
   ],
   "model": "random lagged SSOE models (additive ETS and GUM) generated by confirm.py",
   "parameters": "A3",
   "runs": 1,
   "seeds": [
    2026
   ]
  },
  {
   "id": "E17",
   "profile": "formal",
   "foundation": "linear algebra over the complex numbers",
   "description": "The per-lag discount matrices of Section 5.4 of the ADAM monograph against D.",
   "availability": {
    "level": "public"
   },
   "steps": [
    {
     "id": "S1",
     "statement": "$$F_{m_i} = F_{\\cdot S_i},\\ g_{m_i} = g_{S_i},\\ w_{m_i} = w_{S_i} \\text{ (zero elsewhere), } S_i \\text{ the components of lag } m_i$$",
     "by": [
      "D1"
     ],
     "rule": "the split of Section 5.2 of the monograph"
    },
    {
     "id": "S2",
     "statement": "$$D_{m_i} = F_{m_i} - g_{m_i} w_{m_i}' \\text{ has non-zero columns only in } S_i$$",
     "by": [
      "S1"
     ],
     "rule": "definition"
    },
    {
     "id": "S3",
     "statement": "$$D_{m_i} \\sim \\begin{pmatrix} D_{S_i S_i} & 0 \\\\ \\ast & 0 \\end{pmatrix} \\Rightarrow \\mathrm{spec}(D_{m_i}) \\setminus \\{0\\} = \\mathrm{spec}(D_{S_i S_i}) \\setminus \\{0\\}$$",
     "by": [
      "S2"
     ],
     "rule": "a symmetric permutation and the eigenvalues of a block-triangular matrix"
    },
    {
     "id": "S4",
     "statement": "$$\\sum_i D_{m_i} = F - \\sum_i g_{m_i} w_{m_i}' = D + \\sum_{i \\neq j} g_{m_i} w_{m_j}'$$",
     "by": [
      "S1"
     ],
     "rule": "$g w' = \\sum_i \\sum_j g_{m_i} w_{m_j}'$"
    },
    {
     "id": "S5",
     "statement": "$$(a, b) \\text{ with lags } m_i \\neq m_j: \\left(\\sum_{i \\neq j} g_{m_i} w_{m_j}'\\right)_{ab} = g_a w_b$$",
     "by": [
      "S4"
     ],
     "rule": "a single term, so the sum differs from D exactly where g w' links components of different lags"
    }
   ]
  },
  {
   "id": "E18",
   "profile": "simulation",
   "lab_runs": [
    "RN44"
   ],
   "artefacts": [
    "A1",
    "A6"
   ],
   "parameters": "A6",
   "model": "ETS(A,N,A) with m = 12",
   "runs": 1,
   "seeds": [],
   "availability": {
    "level": "public"
   },
   "description": "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 $|w' v_{t-l}|$ of initial states set to one in the full recursion $v_t = D v_{t-l}$ ($y = 0$) 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": [
     "D16"
    ],
    "cases": [
     "D35"
    ],
    "procedure": [
     "D28"
    ],
    "lens": [
     "D30",
     "D34"
    ]
   },
   "execution": {
    "code_version": "5d5611bcdcce26a3c363352fdd738c14f18c96f4",
    "software": {
     "python": "3.13.16",
     "platform": "Linux-6.18.44-fc-v140-x86_64-with-glibc2.39"
    }
   },
   "tables": [
    {
     "id": "T1",
     "description": "For ETS(A,N,A) with m = 12 at two parameter pairs: the largest nonzero eigenvalue modulus of the monograph's per-lag discount matrices, the effect of the initial states on the fitted value at period 2400 and its growth per period over the second half, the growth of the weight of an observation, and the largest root modulus of the cancelled MA polynomial",
     "conditions": {
      "model": "ETS(A,N,A)",
      "m": 12
     },
     "row_labels": [
      "alpha",
      "gamma"
     ],
     "columns": [
      "largest nonzero eigenvalue modulus of the book's per-lag discount matrices",
      {
       "variable": "effect of the initial states on the fitted value at the last period",
       "conditions": {
        "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"
     ],
     "rows": [
      {
       "id": "r1",
       "label": [
        0.1,
        0.1
       ],
       "values": [
        0.9,
        1.18704e-11,
        0.989578,
        0.990917,
        0.991127
       ]
      },
      {
       "id": "r2",
       "label": [
        1.2,
        0.9
       ],
       "values": [
        0.2,
        5.96878e+16,
        1.01639,
        1.01636,
        1.01646
       ]
      }
     ],
     "artefact": "A18"
    }
   ]
  }
 ],
 "limitations": [
  {
   "id": "L6",
   "category": "other",
   "statement": "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.",
   "affects": [
    "C22"
   ],
   "impact": "reduces_transferability",
   "mitigation": "partial",
   "mitigation_evidence": "E1"
  }
 ],
 "artefacts": [
  {
   "id": "A1",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/fe3ecfad42341fb0d2b81d02a7919b43baa5f695/.claude/research/eigenChecker/admissibility.py",
   "availability": {
    "level": "public"
   },
   "version": "sha256:f966bd9f065ee5453a2f809cb4e0f3aee938068589540b45ddf36eaa225c8b04",
   "licence": "LGPL-2.1-only",
   "description": "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"
  },
  {
   "id": "A3",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/fe3ecfad42341fb0d2b81d02a7919b43baa5f695/.claude/research/eigenChecker/confirm.py",
   "availability": {
    "level": "public"
   },
   "version": "sha256:626d350fd940dd6fc4bdc057e350a3bbfcd92f71a51244fda0c31cb7d97e11f6",
   "licence": "LGPL-2.1-only",
   "description": "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"
  },
  {
   "id": "A6",
   "kind": "code",
   "uri": "https://github.com/openforecast-org/smooth/blob/5d5611bcdcce26a3c363352fdd738c14f18c96f4/.claude/research/eigenChecker/book_check.py",
   "availability": {
    "level": "public"
   },
   "version": "sha256:8dde6775d393bf9616aa00483e2c9fc3bd9f480f52ca10e07dd2c8c22cc75473",
   "licence": "LGPL-2.1-only",
   "description": "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"
  },
  {
   "id": "A18",
   "kind": "data",
   "uri": "https://entrylib.org/p/2026.000002/v3/files/files/adam-admissible-bounds.results.csv",
   "version": "sha256:96615c120ab55a010bb7fb0343bd8200729319db710c0e8a329209e385f674ac",
   "availability": {
    "level": "public"
   },
   "licence": "CC-BY-4.0",
   "description": "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.",
   "columns": [
    {
     "name": "lab_result",
     "dimension": "lab record result"
    },
    {
     "name": "run",
     "dimension": "lab record run"
    },
    {
     "name": "quantity",
     "dimension": "quantity"
    },
    {
     "name": "conditions",
     "dimension": "conditions of the result"
    },
    {
     "name": "value",
     "variable": "value of the quantity"
    }
   ]
  }
 ],
 "references": [
  {
   "id": "B1",
   "target": "10.1007/978-3-540-71918-2",
   "id_type": "doi"
  },
  {
   "id": "B3",
   "target": "10.32614/CRAN.package.smooth",
   "id_type": "doi"
  },
  {
   "id": "B4",
   "target": "10.1201/9781003452652",
   "id_type": "doi"
  }
 ]
}
