Forecast (Holt-Winters seasonal)

FREE with proof-of-work · or $0.001 in USDC · POST /api/forecast-holt-winters

Holt-Winters triple exponential smoothing - level + trend + seasonal component. Send POST /api/forecast-holt-winters with the required fields values and horizon and pay $0.001 per call over x402 or MPP, or call it free by solving a proof-of-work challenge. It returns a JSON object with method, n, horizon, period, periodSource and 5 more.

Use for series with a repeating cycle (weekly retail traffic, monthly utility usage, quarterly revenue). Additive seasonality (constant amplitude) or multiplicative (amplitude grows with level). `period` is optional - if omitted, the kit auto-detects via autocorrelation on first differences and surfaces what it picked (with the ACF strength) so you can audit. Needs at least two full seasonal cycles to fit reliably.

Category: Live public data · Tags: forecast timeseries holt-winters seasonal exponential-smoothing prediction

TRY IN PLAYGROUND →

Parameters

NameTypeRequiredDescription
valuesarrayyesNumeric series in chronological order (max 10000) Also accepted as data, series, numbers, nums, points.
horizonnumberyesNumber of future periods to forecast (1 to 1000) Also accepted as periods, steps, ahead, forecast.
periodnumbernoOptional seasonal period (e.g. 7 for daily/weekly, 12 for monthly/yearly). Auto-detected via ACF if omitted.
seasonalitystringno"additive" (default) or "multiplicative"
alphanumbernoLevel smoothing, 0 < alpha < 1 (default 0.5)
betanumbernoTrend smoothing, 0 < beta < 1 (default 0.1)
gammanumbernoSeasonal smoothing, 0 < gamma < 1 (default 0.1)

Example request

curl -i -X POST https://agent402.tools/api/forecast-holt-winters \
  -H "Content-Type: application/json" \
  -d '{"values":[10,14,18,22,11,15,19,23,12,16,20,24],"horizon":4,"period":4}'

Without payment this returns HTTP 402 Payment Required with the exact price for forecast-holt-winters; any x402 v2 or MPP client pays it and retries.

Example response

{
  "method": "holt-winters",
  "n": 12,
  "horizon": 4,
  "period": 4,
  "periodSource": "provided",
  "seasonality": "additive",
  "alpha": 0.5,
  "beta": 0.1,
  "gamma": 0.1,
  "forecast": [
    {
      "step": 1,
      "point": 12.5324,
      "lower95": 11.6958,
      "upper95": 13.369
    },
    {
      "step": 2,
      "point": 16.7253,
      "lower95": 15.5421,
      "upper95": 17.9084
    },
    {
      "step": 3,
      "point": 20.9462,
      "lower95": 19.4972,
      "upper95": 22.3952
    },
    {
      "step": 4,
      "point": 25.1831,
      "lower95": 23.5098,
      "upper95": 26.8563
    }
  ]
}
FieldTypeAlways presentIn the example
methodstringyesholt-winters
nnumberyes12
horizonnumberyes4
periodnumberyes4
periodSourcestringyesprovided
seasonalitystringyesadditive
alphanumberyes0.5
betanumberyes0.1
gammanumberyes0.1
forecastarray of objectsyes4 items in the example

From an MCP client

catalog.call {
  "slug": "forecast-holt-winters",
  "params": {
    "values": [
      10,
      14,
      18,
      22,
      11,
      15,
      19,
      23,
      12,
      16,
      20,
      24
    ],
    "horizon": 4,
    "period": 4
  }
}

On the hosted connector at https://agent402.tools/mcp, catalog.call runs forecast-holt-winters free (rate-limited, no wallet). Local install: npx -y agent402-mcp.

Errors and behavior

Paid call (JavaScript agent)

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
client.setSpendControls?.(false); // keep your own spending ceiling in code
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agent402.tools/api/forecast-holt-winters", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "values": [
      10,
      14,
      18,
      22,
      11,
      15,
      19,
      23,
      12,
      16,
      20,
      24
    ],
    "horizon": 4,
    "period": 4
  }),
});

No wallet? Pay with compute

Fetch a challenge, solve the sha256 puzzle (16 leading zero bits, a fraction of a second of CPU), and resend with the X-Pow-Solution header:

import { createHash } from "node:crypto";
const lz = (b) => { let t = 0; for (const x of b) { if (!x) { t += 8; continue; } t += Math.clz32(x) - 24; break; } return t; };
const c = await (await fetch("https://agent402.tools/api/pow/challenge?slug=forecast-holt-winters")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/forecast-holt-winters", { method: "POST", headers: { "X-Pow-Solution": c.token + ":" + n, "Content-Type": "application/json" }, body: JSON.stringify({"values":[10,14,18,22,11,15,19,23,12,16,20,24],"horizon":4,"period":4}) });

Part of these workflows

Forecast (Holt-Winters seasonal) is one step in this skill pack, each sold as a single call:

Related tools

Forecast (Holt linear trend)

FREE w/ compute · or $0.001 · POST /api/forecast-holt

Holt's linear trend method - level + trend (no seasonality). Two smoothing parameters: alpha (level) and beta (trend). F…

Forecast (simple exponential smoothing)

FREE w/ compute · or $0.001 · POST /api/forecast-ses

Simple exponential smoothing (SES) - level-only forecast for series without trend or seasonality. Higher alpha (closer t…

Forecast (naive baselines)

FREE w/ compute · or $0.001 · POST /api/forecast-naive

Three textbook baseline forecasts: mean (forecast = average of history), naive (forecast = last value), drift (linear ex…

Crypto price history

$0.015 · GET /api/crypto-history

Historical price, market cap, and volume time series for a coin. Granularity is automatic per CoinGecko: <=1 day = 5-min…

Forecast backtest (MAPE + RMSE)

FREE w/ compute · or $0.001 · POST /api/forecast-eval

Backtest a forecasting method on the input series by holding out the last `testSize` observations, forecasting them, and…

Moving average (SMA + EMA)

FREE w/ compute · or $0.001 · POST /api/moving-average

Compute simple (SMA) and exponential (EMA) moving averages over a numeric series. Returns one value per input position -…