Skaters.jl

July 13, 2026 ยท View on GitHub

Online, univariate, distributional time-series forecasting by conjugation. The Julia port of skaters: every prediction is a full probability distribution, updated in constant time per observation, with calibration diagnostics carried in the state.

using Pkg
Pkg.add(url = "https://github.com/microprediction/Skaters.jl")

(General-registry registration will follow once the surface settles.)

Quick start

using Skaters

sk = laplace(k = 1)          # the general forecaster; no tuning parameters
st = nothing
d  = nothing
for y in mystream
    d, st = sk(y, st)        # d[1] is the one-step-ahead predictive
end

dist_mean(d[1])              # point forecast
dist_quantile(d[1], 0.9)     # any quantile
dist_logpdf(d[1], y_next)    # density scoring
st["z"][1]                   # calibration: N(0,1) surprise of the last
                             # arrival under the forecast issued FOR it

laplace(k = 20) emits twenty horizons per step. st["pit"] and st["z"] make any stream self-diagnosing: flat PIT histogram means the forecasts are calibrated, and abs(z) > 4 is an anomaly detector with stated false-alarm rates (the tails carry an online generalized-Pareto fit, so tail probabilities mean what they say; measured evidence in the main repository).

What is inside

The full library, not a subset: fourteen invertible transforms, four residual leaves, precision-weighted and Bayesian ensembles, the multi-scale mixture, the lattice projection for repeating values, the terminal CRPS leaf, the GPD tail splice, the prediction parade, the covariance estimators, the periodicity detector, the spec builders, and the adaptive search engine.

Why trust it

This port is parity-locked to the Python reference: 105,798 probe values (means, spreads, densities, quantiles, CRPS across 56 scenarios) must agree to 1e-6 with vectors generated by the reference before anything ships. Pkg.test() runs that gate plus seven adversarial robustness scenarios (constant series, lattices, a 1e9 spike with recovery, a 1e300 tick, scale collapse, volatility whiplash) and exact bit-level determinism and serialize-resume contracts.

PORTING.md records the pinned reference commit and the refresh ritual.

Ecosystem