Skip to content
Ivan Svetunkov edited this page Jan 30, 2026 · 1 revision

Bounds

This page documents the bounds parameter used across smooth functions to control parameter restrictions during estimation.

Parameter bounds are discussed in Section 4.7, Section 5.4, Section 6.4 and Subsection 9.2.2 of Svetunkov (2023).

The bounds Parameter

The bounds parameter specifies what restrictions to place on smoothing parameters and other model parameters during optimization.

Basic Usage

# R: Usual bounds (default for ETS)
model <- adam(y, model="AAA", lags=12, bounds="usual")

# R: Admissible bounds (stability-focused)
model <- adam(y, model="AAA", lags=12, bounds="admissible")
# Python: Usual bounds
model = ADAM(model="AAA", lags=12, bounds="usual")

Available Bounds Types

Bounds Description Guarantees Speed
"usual" Traditional ETS restrictions Averaging behavior Fast
"admissible" Stability-focused restrictions Model stability Medium
"none" No restrictions None (potentially unstable) Fast

Usual Bounds ("usual")

The default for most functions. Restricts parameters to ensure the model behaves as an averaging/smoothing method:

For ETS (Error, Trend, Seasonal):

Parameter Restriction Interpretation
α (alpha) 0 ≤ α ≤ 1 Level smoothing
β (beta) 0 ≤ β ≤ α Trend smoothing (cannot exceed level)
γ (gamma) 0 ≤ γ ≤ 1-α Seasonal smoothing
φ (phi) 0 ≤ φ ≤ 1 Damping parameter
# R: Usual bounds
model <- adam(y, model="AAA", lags=12, bounds="usual")

Admissible Bounds ("admissible")

Guarantees model stability by ensuring the eigenvalues of the discount matrix are within the unit circle. The exact bounds depend on the model structure.

Key features:

  • Ensures that the impact of initial observations diminishes with the increase of the sample size
  • More flexible than usual bounds
  • Allows negative smoothing parameters in some cases
  • Default for ARIMA-based models (SSARIMA, MSARIMA)
# R: Admissible bounds (recommended for ARIMA)
model <- ssarima(y, orders=list(ar=1, i=1, ma=1), bounds="admissible")

For ARIMA:

Parameter Restriction
AR coefficients Stationarity region
MA coefficients Invertibility region

No Bounds ("none")

No restrictions are applied. Use with caution.

Warning: Models estimated with bounds="none" may be:

  • Unstable/Non-invertible (numerical issues)
  • Difficult to interpret
# R: No bounds (use carefully!)
model <- adam(y, model="AAA", lags=12, bounds="none")

When to use:

  • Research/experimentation
  • When you know the optimal parameters lie outside usual bounds
  • When other constraints prevent instability

Bounds by Model Type

ETS Models

Model Type Default Bounds Recommended
Additive (ANN, AAN, AAA, etc.) "usual" "usual" or "admissible"
Multiplicative (MNN, MAN, etc.) "usual" "usual"
Mixed (MAM, etc.) "usual" "usual"

ARIMA Models

Model Default Bounds Recommended
SSARIMA "admissible" "admissible"
MSARIMA "admissible" "admissible"
ADAM with ARIMA "usual", but switched to "admissible" for ARIMA "admissible"

Other Models

Model Default Bounds Notes
CES "admissible" Complex parameter stability
GUM "admissible" Transition matrix stability
SMA N/A No smoothing parameters

Support by Function

Function "usual" "admissible" "none"
ADAM Yes (default) Yes Yes
ES Yes (default) Yes Yes
SSARIMA Yes Yes (default) Yes
MSARIMA Yes Yes (default) Yes
CES Yes Yes (default) Yes
GUM Yes Yes (default) Yes

Custom Bounds

For fine-tuned control, you can pass lb (lower bound) and ub (upper bound) vectors via ...:

# R: Custom bounds for specific parameters
model <- adam(y, model="AAN", bounds="none",
              B=c(0.3, 0.1, 100, 1),  # Starting values
              lb=c(0.1, 0, 50, 0),     # Lower bounds
              ub=c(0.5, 0.2, 150, 2))  # Upper bounds

The order of parameters in lb and ub follows:

  1. Smoothing parameters (α, β, γ, δ)
  2. Damping parameter (φ)
  3. ARMA parameters
  4. Initial states
  5. Parameters for explanatory variables

Practical Recommendations

  1. ETS models: Start with bounds="usual" (default)
  2. ARIMA models: Use bounds="admissible" for stability
  3. Multiplicative models: bounds="usual" helps prevent extreme values
  4. Poor fit: If estimation produces boundary values, try bounds="admissible"
  5. Research: Use bounds="none" only when exploring parameter space

References

  • Svetunkov, I. (2023). Forecasting and Analytics with the Augmented Dynamic Adaptive Model (ADAM). Online website: https://openforecast.org/adam/
  • Hyndman, R.J., et al. (2008). Forecasting with Exponential Smoothing: The State Space Approach. Springer. Chapter 10 (Stability and Invertibility).

See Also

Clone this wiki locally