Skip to content
Development
Skill

/algo-forecast-exponential

\"Apply exponential smoothing methods for time series forecasting with weighted moving averages. Use this skill when the user needs simple, robust forecasts, implement Holt-Winters for seasonal data, or build lightweight forecasting without complex models — even if they say

From plugin
awesome-agent-skill
27200 skills4 commands

Claude Code

$ npx -y skills add charlieviettq/awesome-agent-skill --skill algo-forecast-exponential --agent claude-code

SKILL.md

algo-forecast-exponential.SKILL.md
name: "\"algo-forecast-exponential\""
description: "\"Apply exponential smoothing methods for time series forecasting with weighted moving averages. Use this skill when the user needs simple, robust forecasts, implement Holt-Winters for seasonal data, or build lightweight forecasting without complex models — even if they say 'simple forecast', 'moving average prediction', or 'smoothing method'.\"."
allowed-tools: Read, Glob, Grep

Exponential Smoothing

Overview

Exponential smoothing assigns exponentially decreasing weights to past observations. Three variants: Simple (SES, level only), Holt (level + trend), Holt-Winters (level + trend + seasonality). ETS framework (Error-Trend-Seasonality) provides a unified statistical model. Fast, interpretable, and competitive with complex models for short horizons.

When to Use

**Trigger conditions:**

  • Quick forecasting with minimal configuration
  • Short-horizon forecasts (1-2 seasonal cycles ahead)
  • Data with clear level, trend, and/or seasonal components

**When NOT to use:**

  • For long-range forecasts (uncertainty accumulates too fast)
  • When external regressors are important (use regression or ML models)

Algorithm

IRON LAW: Smoothing Parameters Control the Bias-Variance Trade-Off
α (level), β (trend), γ (seasonality) range [0,1].
- α near 1: react quickly to changes, noisy forecasts (high variance)
- α near 0: smooth forecasts, slow to adapt (high bias)
Optimize via minimizing MSE on training data (or use information criteria).
Never hand-pick smoothing parameters without validation.

Phase 1: Input Validation

Identify components: level only (SES), level+trend (Holt), level+trend+seasonality (Holt-Winters). Determine: additive vs multiplicative trend/seasonality. **Gate:** Component structure identified, seasonal period known.

Phase 2: Core Algorithm

**Holt-Winters (additive):** 1. Initialize: level₀ = mean(first season), trend₀ = (mean(season 2) - mean(season 1))/s, seasonal₀ from first season deviations 2. Update equations at each t:

  • Level: ℓₜ = α(yₜ - sₜ₋ₛ) + (1-α)(ℓₜ₋₁ + bₜ₋₁)
  • Trend: bₜ = β(ℓₜ - ℓₜ₋₁) + (1-β)bₜ₋₁
  • Seasonal: sₜ = γ(yₜ - ℓₜ) + (1-γ)sₜ₋ₛ

3. Forecast: ŷₜ₊ₕ = ℓₜ + h×bₜ + sₜ₊ₕ₋ₛ

Phase 3: Verification

Check: in-sample RMSE, residual patterns. Compare against naive baselines (last value, seasonal naive). **Gate:** Beats naive baseline, residuals show no systematic pattern.

Phase 4: Output

Return forecasts with smoothed components.

Output Format

{
  "forecasts": [{"period": "2025-04", "forecast": 1150, "level": 1100, "trend": 20, "seasonal": 30}],
  "parameters": {"alpha": 0.3, "beta": 0.1, "gamma": 0.15},
  "metadata": {"method": "holt_winters_additive", "seasonal_period": 12, "rmse": 45}
}

Examples

Sample I/O

**Input:** 36 months of monthly sales, clear upward trend, December spike **Expected:** Holt-Winters additive. Forecast continues trend with repeated December seasonality.

Edge Cases

| Input | Expected | Why | |-------|----------|-----| | No trend, no seasonality | SES (α only) | Simplest variant suffices | | Seasonal amplitude grows | Use multiplicative | Additive would underestimate peaks | | Very short series (<2 seasons) | SES or Holt only | Can't estimate seasonality |

Gotchas

  • **Additive vs multiplicative**: If seasonal swings grow proportionally with level, use multiplicative. Wrong choice produces poor forecasts, especially at extremes.
  • **Initialization sensitivity**: The first season's values set the baseline. Poor initialization from noisy early data propagates through the entire forecast.
  • **Damped trend**: For long horizons, linear trend extrapolation is unrealistic. Use damped trend (φ parameter) to flatten the trend over time.
  • **Multiple seasonalities**: Standard Holt-Winters handles one seasonal period. For daily data with weekly AND yearly patterns, use TBATS or STL+ETS.
  • **Outlier sensitivity**: A single outlier can shift the level estimate significantly (especially with high α). Pre-detect and handle outliers.

References

  • For ETS framework and model selection, see `references/ets-framework.md`
  • For damped trend variants, see `references/damped-trend.md`
Read more
@charlieviettq
Ships withawesome-agent-skill

Curated skill pack for LLM agents in engineer and science workflow (Cursor & Claude ready).

Stars on GitHub

Momentum

stars in total
27
Star history of charlieviettq/awesome-agent-skill on GitHub, a chart by star-history.com

Other skills on awesome-agent-skill.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about algo-forecast-exponential.

Which coding agents can use algo-forecast-exponential?
algo-forecast-exponential installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.