# \[ANN\] Durbyn.jl — Time Series Forecasting in Julia

**URL:** <https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544>\
**Category:** Package Announcements\
**Tags:** package\
**Created:** [September 21, 2025, 8:35pm UTC](https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544 "2025-09-21T20:35:22Z")\
**Posts on this page:** 7\
**Page:** 4

<div class="post-metadata">

**Author:** ![Resul.Akay](https://avatars.discourse-cdn.com/v4/letter/r/b782af/32.png) [@Resul.Akay](https://discourse.julialang.org/u/Resul.Akay)\
**Post date:** [December 4, 2025, 10:31am UTC](https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544/61 "2025-12-04T10:31:19Z")

</div>

The Performance problem of tbats is resolved.  
The code will be pushed by end of the week.

---

<div class="post-metadata">

**Author:** ![Resul.Akay](https://avatars.discourse-cdn.com/v4/letter/r/b782af/32.png) [@Resul.Akay](https://discourse.julialang.org/u/Resul.Akay)\
**Post date:** [December 5, 2025, 9:00am UTC](https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544/62 "2025-12-05T09:00:31Z")

</div>

# Update:

We have moved Plots.jl to package extension Thanks to @nilshg suggestion, such inputs are very valuable to us, please test the package and give us feedback.

I removed Plots from direct dependencies, add as weak dependency which reduces package load time for users who don’t need plotting.

At the moment Durbyn.jl has only 3 external dependencies: Distributions.jl, Polynomials.jl, Tables.jl all very established packages. Only Distributions.jl is heavy, which pulls in several dependencies.

---

<div class="post-metadata">

**Author:** ![Resul.Akay](https://avatars.discourse-cdn.com/v4/letter/r/b782af/32.png) [@Resul.Akay](https://discourse.julialang.org/u/Resul.Akay)\
**Post date:** [December 17, 2025, 8:21am UTC](https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544/63 "2025-12-17T08:21:38Z")

</div>

# TBATS now has grammar interface:

```julia
using Durbyn
using Durbyn.ModelSpecs

# Create sample data
data = (sales = randn(120) .+ 15,)

# Basic TBATS with defaults
spec = TbatsSpec(@formula(sales = tbats()))
fitted = fit(spec, data)
fc = forecast(fitted, h = 12)

# TBATS with monthly seasonality
spec = TbatsSpec(@formula(sales = tbats(seasonal_periods=12)))
fitted = fit(spec, data)
fc = forecast(fitted, h = 12)

# TBATS with multiple seasonal periods (e.g., hourly data with daily and weekly)
spec = TbatsSpec(@formula(sales = tbats(seasonal_periods=[24, 168])))
fitted = fit(spec, data)
fc = forecast(fitted, h = 12)

# TBATS with specific component selection
spec = TbatsSpec(@formula(sales = tbats(
    seasonal_periods=12,
    use_box_cox=true,
    use_trend=true,
    use_damped_trend=false,
    use_arma_errors=true
)))
fitted = fit(spec, data)
fc = forecast(fitted, h = 12)

# Additional options at fit time
fitted = fit(spec, data, bc_lower=0.0, bc_upper=1.5, biasadj=true)

```

---

<div class="post-metadata">

**Author:** ![Resul.Akay](https://avatars.discourse-cdn.com/v4/letter/r/b782af/32.png) [@Resul.Akay](https://discourse.julialang.org/u/Resul.Akay)\
**Post date:** [December 18, 2025, 9:14am UTC](https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544/64 "2025-12-18T09:14:27Z")

</div>

🚀 We just shipped the Theta and auto Theta forecasting models in Durbyn.jl  
What’s inside:

- Full suite of Theta variants (STM, OTM, DSTM, DOTM)
- Automatic model selection + seasonal adjustment
- Forecasts with prediction intervals in pure Julia

> **[Theta · Durbyn.jl](https://taf-society.github.io/Durbyn.jl/dev/theta/)**
>
> Documentation for Durbyn.jl.

---

<div class="post-metadata">

**Author:** ![Resul.Akay](https://avatars.discourse-cdn.com/v4/letter/r/b782af/32.png) [@Resul.Akay](https://discourse.julialang.org/u/Resul.Akay)\
**Post date:** [February 24, 2026, 1:58pm UTC](https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544/66 "2026-02-24T13:58:45Z")

</div>

Hi everyone,

I’m sharing a set of open-source workshop materials for learning time series forecasting in Julia using Durbyn.jl.

The course is organised into five Jupyter notebooks covering:

- Julia fundamentals – types, functions, multiple dispatch, packages
- Data wrangling – select, query, mutate, groupby, joins, PanelData
- Statistical analysis – ACF/PACF, Box-Cox, STL decomposition, unit root tests, differencing
- Forecasting – Naive, ETS, ARIMA, BATS/TBATS, Theta, ARAR, Croston (intermittent demand)
- Case study – End-to-end workflow on the M3 Competition dataset (3,003 series)  
No prior Julia experience is required, the first notebook covers all the essentials.

> **[GitHub - taf-society/Introduction-to-forecasting-in-Julia](https://github.com/taf-society/Introduction-to-forecasting-in-Julia)**
>
> Contribute to taf-society/Introduction-to-forecasting-in-Julia development by creating an account on GitHub.

The materials are licensed under CC BY 4.0, so feel free to use and adapt them. Feedback and contributions are welcome!

---

<div class="post-metadata">

**Author:** ![Resul.Akay](https://avatars.discourse-cdn.com/v4/letter/r/b782af/32.png) [@Resul.Akay](https://discourse.julialang.org/u/Resul.Akay)\
**Post date:** [February 25, 2026, 1:20pm UTC](https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544/67 "2026-02-25T13:20:06Z")

</div>

I’ve submitted **Durbyn.jl** , to the General registry. It is currently in the mandatory waiting period and should be available via `Pkg.add("Durbyn")` once merged.

---

<div class="post-metadata">

**Author:** ![Resul.Akay](https://avatars.discourse-cdn.com/v4/letter/r/b782af/32.png) [@Resul.Akay](https://discourse.julialang.org/u/Resul.Akay)\
**Post date:** [February 25, 2026, 9:27pm UTC](https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544/68 "2026-02-25T21:27:23Z")

</div>

# Kolmogorov-Wiener Optimal Filters — coming in the next release

The next version of Durbyn.jl will include Kolmogorov-Wiener optimal finite-sample filters, based on Schleicher (2002), “Kolmogorov-Wiener Filters for Finite Time-Series”.

The core problem: standard symmetric filters (HP, Baxter-King bandpass, Butterworth) lose observations at endpoints — exactly where you need estimates most. The KW approach computes MSE-optimal filter weights at every observation, including endpoints, using the autocovariance structure from an ARIMA model.

This is particularly relevant for macroeconomists and business cycle researchers working on output gaps, trend-cycle decomposition, or real-time filtering where endpoint bias directly affects policy conclusions.

```julia
 # Optimal HP filter with endpoint correction
r = kolmogorov_wiener(y, :hp; m=12, lambda=1600.0)

# Trend/cycle decomposition (trend + cycle = data, exact)
d = kw_decomposition(y; m=12)

# Bandpass for business cycle frequencies
r = kolmogorov_wiener(y, :bandpass; low=6, high=32, m=4)

# Forecasting with prediction intervals
fc = forecast(d; h=24)

plot(fc)
plot(d)

```

 ![image](https://global.discourse-cdn.com/julialang/original/3X/b/8/b85647e196c3ee4d1aa0fb6ebcaa5033bace93b9.png)

 ![image](https://global.discourse-cdn.com/julialang/original/3X/1/c/1c7b8dd94f704ae57c7f00b8afb4e625c0e3bef5.png)

Supports HP, bandpass, Butterworth, and custom transfer functions, seasonal/nonseasonal ARIMA, Box-Cox transforms, and multi-step-ahead Wiener-optimal forecasting.

Reference: Schleicher, C. (2002). Kolmogorov-Wiener Filters for Finite Time-Series. Working Paper, University of British Columbia.

[Previous page](https://discourse.julialang.org/t/ann-durbyn-jl-time-series-forecasting-in-julia/132544.md?page=3)
