# Time-series in Julia (working list)

**URL:** <https://discourse.julialang.org/t/time-series-in-julia-working-list/62539>\
**Category:** Statistics\
**Tags:** time-series\
**Created:** [June 7, 2021, 6:56pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539 "2021-06-07T18:56:28Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [June 7, 2021, 6:56pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/1 "2021-06-07T18:56:28Z")

</div>

Here is a summary of time series in Julia. (Ported from [this thread](https://discourse.julialang.org/t/how-can-we-create-a-leaner-ecosystem-for-julia/32904).)  
This is a Julia version of [CRAN Task View: Time Series Analysis](https://cran.r-project.org/web/views/TimeSeries.html).

**TL;DR**

- [ARCHModels](https://github.com/s-broda/ARCHModels.jl) is the most developed volatility model pkg in Julia  
(it also fits ARMA models & does auto tuning)
- [StateSpaceModels](https://github.com/LAMPSPUC/StateSpaceModels.jl) is the most developed univariate TS pkg in Julia
- [TSAnalysis](https://github.com/fipelle/TSAnalysis.jl) is the most developed multivariate TS pkg in Julia

Please comment w/ relevant code I missed

1: **Working with TS data in Julia** :

| Package | Description | Note |
| --- | --- | --- |
| [TimeSeries](https://github.com/JuliaStats/TimeSeries.jl) | methods for working w TS data | |
| [Dates](https://docs.julialang.org/en/v1/stdlib/Dates/) | two types for working w dates: [`Date`](https://docs.julialang.org/en/v1/stdlib/Dates/#Dates.Date) & [`DateTime`](https://docs.julialang.org/en/v1/stdlib/Dates/#Dates.DateTime) | Standard Library |
| [Temporal](https://github.com/dysonance/Temporal.jl) | `TS` class | @dysonance |
| [Indicators](https://github.com/dysonance/Indicators.jl) | | |
| [RollingFunctions](https://github.com/JeffreySarnoff/RollingFunctions.jl) | | unmaintained but useful |

2: **Volatility models (univariate & multivariate)**:

| Package | Description | Note |
| --- | --- | --- |
| [ARCHModels](https://github.com/s-broda/ARCHModels.jl) | fit/sim ARMA-GARCH models | @s-broda |
| [Financial Risk Forecasting](https://www.financialriskforecasting.com/book-code/) | Textbook w code | |

3: **Univariate TS models** :

| Package | Description | Note |
| --- | --- | --- |
| [StateSpaceModels](https://github.com/LAMPSPUC/StateSpaceModels.jl) | fit/sim SARIMA, filters & smoothers | @guilhermebodin |
| [AutoARIMA](https://github.com/pierrenodet/AutoARIMA.jl) | Auto multi-seasonal ARIMA | @pierrenodet |
| [ARFIMA](https://github.com/Datseris/ARFIMA.jl) | sim ARFIMA | @ Datseris |
| [RARIMA](https://github.com/colintbowers/RARIMA.jl) | wraps R | unmaintained |
| [ARMA](https://github.com/joefowler/ARMA.jl) | fit ARMA | @joefowler |

4: **Multivariate TS models** :

| Package | Description | Note |
| --- | --- | --- |
| [TSAnalysis](https://github.com/fipelle/TSAnalysis.jl) | fit VARIMA, state-space | @fipelle |
| [Haroon Mumtaz](https://sites.google.com/site/hmumtaz77/home?authuser=0) | VAR w SV/TVP/SignRestrictions | [often requested](https://discourse.julialang.org/t/sign-restrictions-on-structural-vars/39268) |
| [Dynamic Factor Models](https://notes.quantecon.org/submission/5c475481a1045e000f50751e) | FAVAR, SVAR | [Stock & Watson 2016](http://www.princeton.edu/~mwatson/papers/Stock_Watson_HOM_Vol2) |
| [Bus-Cycle Anatomy](https://www.openicpsr.org/openicpsr/project/118082/version/V1/view) | VAR, VECM, IRF | [Angeletos etal, aer 2020](https://www.aeaweb.org/articles?id=10.1257/aer.20181174) |
| [DTreplication](https://github.com/miguel-acosta/DTreplication) | VAR decomp etc | [Drechsel, Tenreyro, JIE 2018](https://www.sciencedirect.com/science/article/pii/S0022199617301630) |
| [VecAutoReg](https://github.com/alancrawford/VecAutoReg) | similar to STATA’s var | @ alancrawford |
| [VectorAutoregressions](https://github.com/lucabrugnolini/VectorAutoregressions.jl) | fit VAR, IRFs | @ lucabrugnolini |
| [VARmodels](https://github.com/tomaskrehlik/VARmodels.jl) | fit VAR | unmaintained @tomaskrehlik |
| [VectorAR](https://github.com/justinjoliver/julia-VectorAR.jl) | VAR(p) | |
| [FactorAugmentedVectorAR](https://github.com/justinjoliver/julia-FactorAugmentedVectorAR.jl) | FAVAR(p) | |
| [Cointegration](https://github.com/andreasnoack/Cointegration.jl) | Cointegration in VAR Models | @andreasnoack |
| [TVP\_Julia](https://github.com/davidheart/TVP_Julia/tree/master/Julia) | tvp-VAR | |
| [SignRestrictionVAR](https://github.com/davidgaut/SignRestrictionVAR) | sign-restriction VAR | |

5: **TS Forecast Evaluation & Hypothesis Tests** :

| Package | Description | Note |
| --- | --- | --- |
| [ForecastEval](https://github.com/colintbowers/ForecastEval.jl) | dm/rc/mcs | @colintbowers |
| [HypothesisTests](https://github.com/JuliaStats/HypothesisTests.jl) | | |

Uncategorized packages/links/etc for TS in Julia:

| Package | Description | Note |
| --- | --- | --- |
| [TSML](https://github.com/IBM/TSML.jl) | interface | @ppalmes |
| [ForecastingCombinations](https://github.com/lucabrugnolini/ForecastingCombinations.jl) | | @ lucabrugnolini |
| [TimeModels](https://github.com/JuliaStats/TimeModels.jl) | fit ARIMA, GARCH | unmaintained |
| [ARMAProcesses](https://bitbucket.org/cgeoga/armaprocesses.jl/src/master/) | sim ARMA | |
| [QuantEcon](https://github.com/QuantEcon/lecture-source-jl/blob/master/source/rst/time_series_models/arma.rst) | | |
| [Creel Econometrics](https://github.com/mcreel/Econometrics) | Textbook | |
| [Paul Soderlind](https://github.com/PaulSoderlind?tab=repositories) | Teaching notes | |
| [TimeSeriesClassification](https://github.com/alan-turing-institute/TimeSeriesClassification.jl) | MLJ interface | |
| [SmoothLocalProjections](https://github.com/justinjoliver/julia-SmoothLocalProjections) | | |
| [TemporalGPs](https://github.com/JuliaGaussianProcesses/TemporalGPs.jl) | Gaussian processes for TS | |
| [ScoreDrivenModels](https://github.com/LAMPSPUC/ScoreDrivenModels.jl) | | |
| [DistributionalForecasts](https://github.com/barunik/DistributionalForecasts.jl) | | |
| [EntropyHub](https://github.com/MattWillFlood/EntropyHub.jl) | | |
| [DCCA](https://github.com/johncwok/DCCA.jl) | | |
| [SerialDependence](https://github.com/johncwok/SerialDependence.jl) | | |
| [TimeseriesPrediction](https://github.com/JuliaDynamics/TimeseriesPrediction.jl) | | |
| [DependentBootstrap](https://github.com/colintbowers/DependentBootstrap.jl) | | |
| | | |
| [Forecast](https://github.com/viraltux/Forecast.jl) | STL decomposition | |
| [X13](https://github.com/julianjohs/X13) | Wraps R | |
| [SingularSpectrumAnalysis](https://github.com/baggepinnen/SingularSpectrumAnalysis.jl) | | |
| | | |
| [SMC](https://github.com/FRBNY-DSGE/SMC.jl) | | |
| [StateSpaceRoutines](https://github.com/FRBNY-DSGE/StateSpaceRoutines.jl) | Filters, smoothers | |
| [LowLevelParticleFilters](https://github.com/baggepinnen/LowLevelParticleFilters.jl) | | |
| [Kalman](https://github.com/mschauer/Kalman.jl) | | |
| [HPFilter](https://github.com/sdBrinkmann/HPFilter.jl) | | |
| [Hamilton Filter](https://notes.quantecon.org/submission/5ba3de34c4ffbc000f71e7aa) | | |
| | | |
| [Dynamic Factor Models](https://notes.quantecon.org/submission/5c475481a1045e000f50751e) | Stock, Watson 2016 | |
| [CommonFactorModelStats](https://github.com/colintbowers/CommonFactorModelStats.jl) | | |
| [FactorModels](https://github.com/joidegn/FactorModels.jl) | used in [thesis](https://github.com/joidegn/Masterarbeit) | unmaintained |
| [Factotum](https://github.com/gragusa/Factotum.jl) | Static factor models | |

---

<div class="post-metadata">

**Author:** ![guilhermebodin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/guilhermebodin/32/6982_2.png) [@guilhermebodin](https://discourse.julialang.org/u/guilhermebodin)\
**Post date:** [June 8, 2021, 2:28pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/2 "2021-06-08T14:28:29Z")

</div>

@Albert_Zevelev Nice initiative!

---

<div class="post-metadata">

**Author:** ![Skoffer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/skoffer/32/378_2.png) [@Skoffer](https://discourse.julialang.org/u/Skoffer)\
**Post date:** [June 8, 2021, 2:46pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/3 "2021-06-08T14:46:32Z")

</div>

What is the meaning of the numbers 240\*, 79\* etc in the Note section of the table?

---

<div class="post-metadata">

**Author:** ![mthelm85](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mthelm85/32/224164_2.png) [@mthelm85](https://discourse.julialang.org/u/mthelm85)\
**Post date:** [June 8, 2021, 2:47pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/4 "2021-06-08T14:47:29Z")

</div>

It would be nice to identify packages that can do time series decomposition as well. There are several methods described [here](https://otexts.com/fpp2/decomposition.html) and I only know of one implementation in Julia, which is [STL decomposition](https://otexts.com/fpp2/stl.html) that is implemented in [Forecast](https://github.com/viraltux/Forecast.jl) (also linked in the last table above).

There’s a thread on the status of time series decomposition in Julia [here](https://discourse.julialang.org/t/is-there-a-julia-package-that-can-decompose-a-time-series-data-into-trend-seasonality-and-random/9518).

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [June 8, 2021, 2:47pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/5 "2021-06-08T14:47:31Z")

</div>

GitHub stars I take it.

---

<div class="post-metadata">

**Author:** ![ppalmes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ppalmes/32/6838_2.png) [@ppalmes](https://discourse.julialang.org/u/ppalmes)\
**Post date:** [June 10, 2021, 6:19pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/6 "2021-06-10T18:19:20Z")

</div>

in the note column for completeness, either you include github stars of all packages you listed or none at all because having incomplete information may indicate to some that the package is not useful for those with missing stars because you failed to indicate it.

regarding discoverability of time-series packages or make it to have common API, i think it is not straightforward because each has specific application and their development is driven by addressing specific issues. this is the inductive part of development which is normal from the grassroot level. this is how typical open source packages like linux packages evolve. then you have redhat/debian/ubuntu that creates metapackage to weave together related packages similar to this: [https://wiki.debian.org/DebianScience](https://wiki.debian.org/DebianScience)

i’m sure rpm packages have meta-package too. debian uses debtags to discover related packages.

maybe, julia package system should also allow meta tagging and add support for searching tags in the package repl?

with easy discovery of related packages, we developers can take a look of the clusters our package belongs to and maybe check the common API we can adapt by organically or intentionally adapting some popular API in the cluster.

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [June 10, 2021, 6:36pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/7 "2021-06-10T18:36:15Z")

</div>

> [@ppalmes](#):
>
> in the note column for completeness, either you include github stars of all packages you listed or none at all because having incomplete information may indicate to some that the package is not useful for those with missing stars because you failed to indicate it.

Thanks Paulito.  
I removed the Github stars bc I decided they are too noisy of an indicator of package quality.  
For example [ARCHModels](https://github.com/s-broda/ARCHModels.jl).jl is one of the best packages I ever used (not just out of Julia packages), however it doesn’t have that many stars.

I created this table for myself a few times when I needed to use TS in Julia. I uploaded it here in case it’s useful to anyone else.

Anyone (including you 😉) can easily `copy-paste` the table above & edit it to their heart’s content. Then they can post their edited table below.  
(Many users have done this @ [Styleforum](https://www.styleforum.net/threads/the-styleforum-working-hierarchical-suit-quality-list-sfwhsql.140387/), another community I used to be part of…)

---

<div class="post-metadata">

**Author:** ![ppalmes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ppalmes/32/6838_2.png) [@ppalmes](https://discourse.julialang.org/u/ppalmes)\
**Post date:** [June 10, 2021, 6:41pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/8 "2021-06-10T18:41:23Z")

</div>

i wish julia package repl can search metadata of the package or its tags so that you can have ideas of what the package does. some package names are not obvious so tagging can help.

maintaining a manual table won’t scale well. it is better to really have some metadata for each package with certain important info.

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [June 10, 2021, 6:44pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/9 "2021-06-10T18:44:23Z")

</div>

Packages are not enough.  
I found a lot of useful code on (non-package) GitHub repos, people’s websites, and journal data-code replication archives.  
I have examples of all three above…

---

<div class="post-metadata">

**Author:** ![ppalmes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ppalmes/32/6838_2.png) [@ppalmes](https://discourse.julialang.org/u/ppalmes)\
**Post date:** [June 10, 2021, 6:47pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/10 "2021-06-10T18:47:17Z")

</div>

yeah. packages are not enough but if you have to google everytime you are in julia repl to discover packages and their description, it is not smooth sailing. with metadata including tags which are searchable in repl, you can get certain clusters of them based in their tags and makes discovery easy. also, many of these packages will reference papers and notes which can help you discover papers starting from discovering the package that references those papers.

---

<div class="post-metadata">

**Author:** ![ppalmes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ppalmes/32/6838_2.png) [@ppalmes](https://discourse.julialang.org/u/ppalmes)\
**Post date:** [June 10, 2021, 6:51pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/11 "2021-06-10T18:51:03Z")

</div>

this person has good curation of julia packages. with metadata, you can create more info similar to what this person did: [svaksha/Julia.jl - NotABug.org: Free code hosting](https://notabug.org/svaksha/Julia.jl)

---

<div class="post-metadata">

**Author:** ![ppalmes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ppalmes/32/6838_2.png) [@ppalmes](https://discourse.julialang.org/u/ppalmes)\
**Post date:** [June 10, 2021, 6:52pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/12 "2021-06-10T18:52:12Z")

</div>

you can create an automatic curation in julia to do this instead of doing it manually by datamining the metadata of packages. i think this person is using a webcrawler to discover and curate julia packages.

i created an issue in Pkg.jl: [add support to search package tag/metadata/description for easy discoverability · Issue #2613 · JuliaLang/Pkg.jl · GitHub](https://github.com/JuliaLang/Pkg.jl/issues/2613)

hopefully, certain technology that allows searching of package metadata will be available in the future.

ok, seems Pkg3 will have these features.

---

<div class="post-metadata">

**Author:** ![colintbowers](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/colintbowers/32/8033_2.png) [@colintbowers](https://discourse.julialang.org/u/colintbowers)\
**Post date:** [June 11, 2021, 12:17am UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/13 "2021-06-11T00:17:12Z")

</div>

Great list. Thanks for taking the time to put it together. You might want to add my package [DependentBootstrap](https://github.com/colintbowers/DependentBootstrap.jl) to the list. It’s actually a dependency of one of the packages you’ve already got on the list (ForecastEval).

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [September 19, 2021, 1:15pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/14 "2021-09-19T13:15:47Z")

</div>

[https://github.com/samwycherley/ThresholdStability.jl](https://github.com/samwycherley/ThresholdStability.jl)

---

<div class="post-metadata">

**Author:** ![tbeason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tbeason/32/15898_2.png) [@tbeason](https://discourse.julialang.org/u/tbeason)\
**Post date:** [December 3, 2021, 2:17pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/15 "2021-12-03T14:17:28Z")

</div>

Anything for estimating univariate TAR / STAR / SETAR models?

---

<div class="post-metadata">

**Author:** ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)\
**Post date:** [December 3, 2021, 4:10pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/16 "2021-12-03T16:10:06Z")

</div>

[RollingFunctions.jl](https://github.com/JeffreySarnoff/RollingFunctions.jl) is maintained. It has been reasonably stable for a while. Please reflect this in your annotation.

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [December 3, 2021, 4:57pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/17 "2021-12-03T16:57:52Z")

</div>

@JeffreySarnoff

1. thanks for bringing this up
2. I can no longer edit the original post
3. I deliberately created this list so it can be updated by the Julia community as needed.  
Please feel free to copy/paste & edit!

---

<div class="post-metadata">

**Author:** ![fipelle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/fipelle/32/4772_2.png) [@fipelle](https://discourse.julialang.org/u/fipelle)\
**Post date:** [December 3, 2021, 8:32pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/19 "2021-12-03T20:32:13Z")

</div>

Hi there, I am going to open a new post tonight to announce it properly, but I have renamed TSAnalysis.jl to MessyTimeSeries.jl and released an additional package called MessyTimeSeriesOptim.jl for model estimation and validation.

EDIT

Here it is [MessyTimeSeries.jl and MessyTimeSeriesOptim.jl](https://discourse.julialang.org/t/messytimeseries-jl-and-messytimeseriesoptim-jl/72546).

---

<div class="post-metadata">

**Author:** ![Albert\_Zevelev](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/albert_zevelev/32/11844_2.png) [@Albert\_Zevelev](https://discourse.julialang.org/u/Albert_Zevelev)\
**Post date:** [January 8, 2022, 7:35pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/20 "2022-01-08T19:35:50Z")

</div>

Here is a link to FB’s Prophet:

> [@API for FB Prophet model](https://discourse.julialang.org/t/api-for-fb-prophet-model/74138/4):
>
> Aight, so here it is: [https://github.com/torfjelde/Prophet.jl](https://github.com/torfjelde/Prophet.jl) It’s in a very raw form atm, but at least it’s something we can work with. We might want to make it more similar to Python’s prophet, but atm it’s just the bare bones to get up and running with inference. It’s also missing certain functionalities, e.g. using logit-likelihood, etc., which I just haven’t gotten around to yet, but will be trivial to add.

Thank you @torfjelde

---

<div class="post-metadata">

**Author:** ![Dominic\_Pazzula](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dominic_pazzula/32/12783_2.png) [@Dominic\_Pazzula](https://discourse.julialang.org/u/Dominic_Pazzula)\
**Post date:** [January 10, 2022, 8:46pm UTC](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539/21 "2022-01-10T20:46:23Z")

</div>

thank you for this!

[Next page](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539.md?page=2)
