Skip to main content

Exponential Smoothing

AnoFox provides 8 exponential smoothing models ranging from Simple Exponential Smoothing (SES) with a single parameter to AutoETS with automatic component selection across all error, trend, and seasonal combinations. AutoETS is the recommended default for most forecasting tasks -- it selects the optimal ETS configuration using information criteria and produces prediction intervals without manual tuning.

Exponential smoothing is a family of forecasting methods that assign exponentially decreasing weights to older observations, so recent data points have more influence on the forecast than distant ones. The state space formulation classifies models by their Error (A/M), Trend (N/A/M), and Seasonal (N/A/M) components.

ModelDescription
ETSError-Trend-Seasonality state space model
AutoETSAutomatic ETS with component selection
SESSimple Exponential Smoothing
SESOptimizedSES with optimized smoothing parameter
HoltLinear trend method
HoltWintersTrend + seasonality
SeasonalESSeasonal exponential smoothing
SeasonalESOptimizedSeasonalES with optimized parameters
Showing 8 of 8

ETS (Error-Trend-Seasonality)

State space model with explicit error, trend, and seasonal components.

Parameters

ParameterTypeDefaultDescription
errorVARCHAR'A'Error type: A (Additive), M (Multiplicative)
trendVARCHAR'A'Trend type: A, M, N (None)
seasonalVARCHAR'A'Seasonal type: A, M, N
seasonal_periodINTEGER-Seasonal period (required if seasonal != 'N')

Example

SELECT * FROM ts_forecast_by(
'sales_data', NULL, date, sales,
'ETS', 28, '1d',
MAP{'trend': 'A', 'seasonal': 'A', 'seasonal_period': '7'}
);

Best for: Trending + seasonal data, smooth patterns.


AutoETS

Automatic ETS with component selection using information criteria.

Parameters

ParameterTypeDefaultDescription
seasonal_periodINTEGER-Seasonal period (detect with ts_detect_periods_by first)
confidence_levelDOUBLE0.90Prediction interval width

Example

SELECT * FROM ts_forecast_by(
'sales_data', NULL, date, sales,
'AutoETS', 28, '1d',
MAP{'seasonal_period': '7', 'confidence_level': '0.95'}
);

Best for: Most common use case, default choice for trend + seasonality.


SES (Simple Exponential Smoothing)

Weighted average of past observations with exponentially decreasing weights.

Parameters

ParameterTypeDefaultDescription
alphaDOUBLEautoSmoothing parameter (0-1)

Example

SELECT * FROM ts_forecast_by(
'stable_data', NULL, date, value,
'SES', 14, '1d',
MAP{}
);

Best for: No trend, no seasonality, stationary data.


SESOptimized

SES with automatically optimized smoothing parameter.

Example

SELECT * FROM ts_forecast_by(
'stable_data', NULL, date, value,
'SESOptimized', 14, '1d',
MAP{}
);

Best for: Stationary data with automatic parameter tuning.


Holt (Linear Trend)

Extends SES to capture linear trends.

Parameters

ParameterTypeDefaultDescription
alphaDOUBLEautoLevel smoothing
betaDOUBLEautoTrend smoothing

Example

SELECT * FROM ts_forecast_by(
'trending_data', NULL, date, value,
'Holt', 28, '1d',
MAP{}
);

Best for: Linear trending data without seasonality.


HoltWinters

Extends Holt to include seasonality (additive or multiplicative).

Parameters

ParameterTypeDefaultDescription
seasonalVARCHAR'additive''additive' or 'multiplicative'
seasonal_periodINTEGER-Seasonal period (required)

Example

SELECT * FROM ts_forecast_by(
'retail_sales', NULL, date, sales,
'HoltWinters', 52, '1d',
MAP{'seasonal': 'multiplicative', 'seasonal_period': '7'}
);

Best for: Clear trend + seasonality patterns.


SeasonalES

Seasonal exponential smoothing without trend component.

Parameters

ParameterTypeDefaultDescription
seasonal_periodINTEGER-Seasonal period (required)

Example

SELECT * FROM ts_forecast_by(
'seasonal_data', NULL, date, value,
'SeasonalES', 28, '1d',
MAP{'seasonal_period': '7'}
);

Best for: Seasonal patterns without trend.


SeasonalESOptimized

SeasonalES with optimized parameters.

Example

SELECT * FROM ts_forecast_by(
'seasonal_data', NULL, date, value,
'SeasonalESOptimized', 28, '1d',
MAP{'seasonal_period': '7'}
);

Best for: Seasonal patterns with automatic parameter tuning.


Comparison

ModelTrendSeasonalityParameters
SESNoNoalpha
SESOptimizedNoNoauto
HoltYesNoalpha, beta
HoltWintersYesYesalpha, beta, gamma
SeasonalESNoYesalpha, gamma
SeasonalESOptimizedNoYesauto
ETSConfigurableConfigurableFull state space
AutoETSAutoAutoAutomatic selection

When to Use AutoETS

AutoETS is recommended as the default choice for most forecasting tasks:

  • Automatically selects error, trend, and seasonal components
  • Handles both additive and multiplicative patterns
  • Produces prediction intervals
  • Fast and reliable

The 8 exponential smoothing models form a hierarchy of increasing complexity: SES handles stationary data with 1 parameter, Holt adds trend with 2 parameters, HoltWinters adds seasonality with 3 parameters, and ETS provides the full configurable state space. AutoETS automates the selection process, testing all valid component combinations and choosing the best fit via information criteria. For production pipelines processing thousands of series, AutoETS eliminates manual model selection entirely.


Frequently Asked Questions

What is the difference between additive and multiplicative seasonality?

Additive seasonality means the seasonal effect is a constant amount added to the trend (e.g., sales always increase by 500 units in December). Multiplicative seasonality means the seasonal effect scales proportionally with the level (e.g., sales increase by 20% in December). Use multiplicative when the seasonal amplitude grows as the series level increases. AutoETS selects the appropriate type automatically.

Why would I use ETS with manual components instead of AutoETS?

Use manual ETS when you have domain knowledge about your data's structure. For example, if you know your demand has multiplicative seasonality but no trend, specifying ETS(A,N,M) directly avoids searching over unnecessary configurations. This can also be faster for large-scale batch forecasting where the model structure is already known.

How does AutoETS select the best model?

AutoETS fits all valid combinations of Error (A/M), Trend (N/A/M), and Seasonal (N/A/M) components and selects the model with the lowest AIC (Akaike Information Criterion). This balances goodness-of-fit against model complexity, automatically guarding against overfitting. The search typically evaluates 15-30 candidate models depending on the data characteristics.

Can SES or Holt handle seasonal data?

No. SES and Holt do not model seasonality. SES handles only stationary (level-only) data, and Holt handles level + trend. For seasonal data, use HoltWinters (trend + seasonality), SeasonalES (seasonality without trend), or AutoETS (automatic selection). The comparison table above shows which component each model supports.


🍪 Cookie Settings