# \[ANN\] Stranbo.jl - when time series get strange

**URL:** https://discourse.julialang.org/t/ann-stranbo-jl-when-time-series-get-strange/104458
**Category:** Package Announcements
**Tags:** package, announcement, time-series
**Created:** [October 1, 2023, 9:31am UTC](https://discourse.julialang.org/t/ann-stranbo-jl-when-time-series-get-strange/104458 "2023-10-01T09:31:11Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![gvdr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gvdr/32/6387_2.png) [@gvdr](https://discourse.julialang.org/u/gvdr)
#### Post date: [October 1, 2023, 9:31am UTC](https://discourse.julialang.org/t/ann-stranbo-jl-when-time-series-get-strange/104458/1 "2023-10-01T09:31:11Z")

</div>

[Stranbo.jl](https://github.com/Baffelan/Stranbo.jl)

I’m writing a little package for time series simulations. It’s one of those packages that does just ONE thing: simulate time series, possibly complicated ones, and possibly with anomalies.

It’s still in early development, so it might be quite unstable. For the moment it can do `sarima` and `sarimax` with a undetermined amount of seasonal and/or auxiliary components; and has a pre-built “mixed Dirac Normal” (something that is exactly zero most of the time, and it’s a Normal sometime) to create additive anomalies.

The generative noise of the processes (often called z or \omega in the literature) can either be created on the fly from a given distribution (usually gaussian), or passed by the user.

It tries to be fast, both in sampling trajectories for the time series and for the user to define the stochastic process.

Compare to the wonderful ecosystem of libraries out there, `Stranbo` does NOT do fitting, does NOT do learning, does NOT (easily) do forecastic. It does NOT do anything else but simulating. There are some similarities with [ARFIMA.jl](https://github.com/JuliaDynamics/ARFIMA.jl), but `ARFIMA`, while allowing for fractional integration, does not allow for seasonal or auxiliary processes (nor seems to be oriented to include explicitly anomaly processes).

---

<div class="post-metadata">

### Author: ![gvdr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gvdr/32/6387_2.png) [@gvdr](https://discourse.julialang.org/u/gvdr)
#### Post date: [October 1, 2023, 9:42am UTC](https://discourse.julialang.org/t/ann-stranbo-jl-when-time-series-get-strange/104458/2 "2023-10-01T09:42:15Z")

</div>

PS I’m announcing it before registration as I’m happily open to the idea of integrating Stranbo into some other package, if the community prefers that to a dedicated package. I wrote it because I couldn’t find these features anywhere else, but I’m not strongly opinionated about its fate.

---

<div class="post-metadata">

### Author: ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)
#### Post date: [October 1, 2023, 9:51am UTC](https://discourse.julialang.org/t/ann-stranbo-jl-when-time-series-get-strange/104458/3 "2023-10-01T09:51:16Z")

</div>

Thanks! I wrote the initial code for ARFIMA. I think it is better for everyone if we manage to combine both packages into one. If you would like to open an issue and post a design idea of how to combine them, and then tag me, I would review it.

ARFIMA was designed with multiple dispatch: this is how it decides which processes to incorporate. Surely there is a way to use multiple dispatch to add one more “option” for `s` (seasonal) and `x` (mixed Dirac Normal").

---

<div class="post-metadata">

### Author: ![gvdr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gvdr/32/6387_2.png) [@gvdr](https://discourse.julialang.org/u/gvdr)
#### Post date: [October 1, 2023, 9:58am UTC](https://discourse.julialang.org/t/ann-stranbo-jl-when-time-series-get-strange/104458/4 "2023-10-01T09:58:44Z")

</div>

I will try to look into it.

The complexity here manifests itself when trying to be very general (i.e., allowing for user defined distributions in generative noise, a possibly large number of seasonality effects/ auxiliary effects with different coefficients, …).

I wonder if it might be faster to go in the other direction and add the fractional integration component into Stranbo.

---

<div class="post-metadata">

### Author: ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)
#### Post date: [October 1, 2023, 10:04am UTC](https://discourse.julialang.org/t/ann-stranbo-jl-when-time-series-get-strange/104458/5 "2023-10-01T10:04:49Z")

</div>

> [@gvdr](#):
>
> I wonder if it might be faster to go in the other direction and add the fractional integration component into Stranbo.

Sure! I have no reason to favor improving ARFIMA instead of than putting its functionality to a more general package!
