Skip to content
Ivan Svetunkov edited this page Apr 10, 2026 · 7 revisions

CES - Complex Exponential Smoothing

CES (Complex Exponential Smoothing) is an alternative to ETS that uses complex-valued smoothing parameters. It captures both the level and "potential" of the time series, making it particularly useful for series with complex seasonal patterns.

Note: CES is currently available only in R. Python implementation is planned.

Overview

Unlike traditional ETS models that require explicit trend specification, CES uses complex numbers to automatically capture both stationary and non-stationary behavior. The model estimates complex smoothing parameters a and b that determine the dynamics.

Seasonality Types

Type Code Description
None "none" No seasonality, simple CES
Simple "simple" Lagged CES (uses t-m observation)
Partial "partial" Real seasonal component (additive-like)
Full "full" Complex seasonal component (adaptive)

R Usage

library(smooth)

# Simple CES (no seasonality)
ces(BJsales, h=8, holdout=TRUE)

# CES with simple seasonality
ces(AirPassengers, h=18, holdout=TRUE, seasonality="simple")

# CES with partial seasonality (additive-like)
ces(AirPassengers, h=18, holdout=TRUE, seasonality="partial")

# CES with full seasonality (most flexible)
ces(AirPassengers, h=18, holdout=TRUE, seasonality="full")

# Automatic seasonality selection
auto.ces(AirPassengers, h=18, holdout=TRUE)

With External Regressors

# CES with explanatory variables
ces(y, h=12, xreg=X, regressors="use")

# Automatic regressor selection
ces(y, h=12, xreg=X, regressors="select")

Parameters

Parameter Type (R) Type (Python) Default Description
y vector/ts TBA - Time series data
seasonality character TBA "none" Seasonality type
lags numeric vector TBA frequency(y) Seasonal lag(s)
a complex TBA NULL First smoothing parameter (estimated if NULL)
b complex TBA NULL Second smoothing parameter (estimated if NULL)
initial character TBA "backcasting" Initialization method
loss character TBA "likelihood" Loss function
h integer TBA 0 Forecast horizon
holdout logical TBA FALSE Use holdout validation
bounds character TBA "admissible" Parameter bounds
xreg matrix TBA NULL External regressors
regressors character TBA "use" How to handle regressors

Model Selection with auto.ces

# Automatic selection between seasonality types
auto.ces(y, h=12, holdout=TRUE)

# Specify which seasonality types to try
auto.ces(y, h=12, seasonality=c("none", "simple", "partial", "full"))

Complex Parameters Interpretation

The complex smoothing parameters a = a_r + i·a_i have the following interpretation:

  • Real part (a_r): Controls the speed of adaptation to level changes
  • Imaginary part (a_i): Controls the "momentum" or potential energy in the system

The interplay between real and imaginary parts allows CES to capture both trending and oscillating behaviors without explicit trend specification.

Advantages Over ETS

  1. No explicit trend selection: CES automatically adapts to trends
  2. Fewer model variants: Only 4 seasonality types vs 30 ETS models
  3. Long memory processes: Performs well on time series without abrupt changes, has the long memory property.

Output

The function returns an object of class "adam" containing (R only):

Element Type (R) Description
model character Model name (e.g., "CES(n)", "CES(s)", "CES(p)", "CES(f)")
states matrix State matrix
persistence complex vector Complex persistence vector
parameters list List with a and b values
fitted vector Fitted values
forecast vector Point forecasts
residuals vector Model residuals
logLik numeric Log-likelihood value
ICs numeric vector Information criteria (AIC, AICc, BIC, BICc)

References

  • Svetunkov, I., Kourentzes, N., & Ord, J.K. (2022). Complex exponential smoothing. Naval Research Logistics, 69(5), 697-717. DOI: 10.1002/nav.22074

See Also

Related Functions

  • ADAM - Main unified framework
  • ES - Traditional Exponential Smoothing
  • GUM - Generalised Univariate Model

Parameter Documentation

Clone this wiki locally