[ANN] VineCopulas.jl: C-vines, D-vines, and experimental R-vines in Julia

Hi everyone,

I’m happy to announce that VineCopulas.jl is now registered in the Julia General registry.

VineCopulas.jl is a pure-Julia package for explicit vine copula models, built on top of Copulas.jl. The current release focuses on constructing vine copulas from bivariate pair-copulas, evaluating densities, simulating observations, and working with Rosenblatt and inverse Rosenblatt transforms.

Package installation:

using Pkg
Pkg.add("VineCopulas")

Documentation:

Repository:

The current version includes:

  • stable CVineCopula and DVineCopula model types;
  • experimental RVineCopula support for explicit structures;
  • pdf, logpdf, rand, numerical cdf, and simulate_qmc;
  • Rosenblatt and inverse Rosenblatt transforms;
  • truncated C-vines and D-vines;
  • pair-copula conditional primitives: hfunc1, hfunc2, hinv1, and hinv2;
  • model summaries such as loglikelihood, npars, aic, and bic;
  • reproducible benchmark and validation scripts against rvinecopulib.

This is an early release, so feedback, bug reports, suggestions, and contributions are very welcome.

One important note: VineCopulas.jl is currently focused on explicit vine construction and simulation/transform workflows. It does not yet provide automatic structure selection, family selection, or parameter estimation. These are planned for future versions.

Thanks to the Julia copula ecosystem, especially Copulas.jl, which made it much easier to build this package in a modular way.

What a large effort, GG @Santymax98 !

I will be taking a look as soon as I can :slight_smile:

Thank you @lrnv! I really appreciate it.

Any comments, suggestions, or feedback would be very welcome once you have the chance to take a look :grin::grin:

This is awesome, i’ve been waiting for something like this to implement synthetic data priors for PortfolioOptimisers.jl

Looks like there are plans to fit parameters and select copula families/dependence structure so I’ll hold off on it until then.

Also, sick logo, what did you use to design it?

Thanks a lot! I really appreciate the kind words.

That sounds like a very nice use case. I’m actually already working on the first tests for parameter fitting, family selection, and dependence-structure selection, with quite promising results so far. I’m also trying to optimize things as much as possible, because I’d like VineCopulas.jl to be competitive and genuinely useful in practice.

And thanks about the logo! I made it in Canva :rofl::rofl:

I’m not a great designer but Canva with AI is very util and intuitive…