Time-series in Julia (working list)

Here is a summary of time series in Julia. (Ported from this thread.)
This is a Julia version of CRAN Task View: Time Series Analysis .

TL;DR

  • ARCHModels is the most developed volatility model pkg in Julia
    (it also fits ARMA models & does auto tuning)
  • StateSpaceModels is the most developed univariate TS pkg in Julia
  • TSAnalysis 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 methods for working w TS data
Dates two types for working w dates: Date & DateTime Standard Library
Temporal TS class @dysonance
Indicators
RollingFunctions unmaintained but useful

2: Volatility models (univariate & multivariate):

Package Description Note
ARCHModels fit/sim ARMA-GARCH models @s-broda
Financial Risk Forecasting Textbook w code

3: Univariate TS models:

Package Description Note
StateSpaceModels fit/sim SARIMA, filters & smoothers @guilhermebodin
AutoARIMA Auto multi-seasonal ARIMA @pierrenodet
ARFIMA sim ARFIMA @ Datseris
RARIMA wraps R unmaintained
ARMA fit ARMA @joefowler

4: Multivariate TS models:

Package Description Note
TSAnalysis fit VARIMA, state-space @fipelle
Haroon Mumtaz VAR w SV/TVP/SignRestrictions often requested
Dynamic Factor Models FAVAR, SVAR Stock & Watson 2016
Bus-Cycle Anatomy VAR, VECM, IRF Angeletos etal, aer 2020
DTreplication VAR decomp etc Drechsel, Tenreyro, JIE 2018
VecAutoReg similar to STATA’s var @ alancrawford
VectorAutoregressions fit VAR, IRFs @ lucabrugnolini
VARmodels fit VAR unmaintained @tomaskrehlik
VectorAR VAR(p)
FactorAugmentedVectorAR FAVAR(p)
Cointegration Cointegration in VAR Models @andreasnoack
TVP_Julia tvp-VAR
SignRestrictionVAR sign-restriction VAR

5: TS Forecast Evaluation & Hypothesis Tests:

Package Description Note
ForecastEval dm/rc/mcs @colintbowers
HypothesisTests

Uncategorized packages/links/etc for TS in Julia:

57 Likes

@Albert_Zevelev Nice initiative!

1 Like

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

It would be nice to identify packages that can do time series decomposition as well. There are several methods described here and I only know of one implementation in Julia, which is STL decomposition that is implemented in Forecast (also linked in the last table above).

There’s a thread on the status of time series decomposition in Julia here.

3 Likes

GitHub stars I take it.

2 Likes

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

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.

1 Like

Thanks Paulito.
I removed the Github stars bc I decided they are too noisy of an indicator of package quality.
For example ARCHModels.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 :wink:) 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, another community I used to be part of…)

1 Like

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.

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…

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.

1 Like

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

1 Like

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

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

ok, seems Pkg3 will have these features.

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

2 Likes

https://github.com/samwycherley/ThresholdStability.jl

Anything for estimating univariate TAR / STAR / SETAR models?

1 Like

RollingFunctions.jl is maintained. It has been reasonably stable for a while. Please reflect this in your annotation.

1 Like

@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!

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.

2 Likes

Here is a link to FB’s Prophet:

Thank you @torfjelde

1 Like

thank you for this!

1 Like