Skip to content

VineCopulas.jlNative Julia vine copula models

Explicit C-vine, D-vine and R-vine copula constructions built on Copulas.jl.

VineCopulas.jl

VineCopulas.jl

VineCopulas.jl is a native Julia package for explicit vine copula models built on top of Copulas.jl. It focuses on constructing vine copulas from known bivariate building blocks, evaluating densities, simulating observations, and using conditional distribution transforms.

A vine copula is useful when a single multivariate copula family is too restrictive. Instead of forcing all dependence into one parametric object, a vine decomposes a multivariate copula density into many bivariate pair-copula densities, each placed on an edge of a tree sequence.

What is implemented?

  • 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, hinv2.

  • Elliptical, Archimedean, BB, survival/rotated and bivariate extreme-value pair-copulas where the required conditional primitives are available. The pair-copula source layout is organized by family to make performance specializations local and auditable.

  • Lightweight model summaries: loglikelihood, npars, aic, and bic.

What is not implemented yet?

VineCopulas.jl v0.1 is not an automatic fitting package. It does not yet provide automatic family selection, parameter estimation, structure selection or truncation selection. These are planned for later versions. See Simulation vs fitting and Limitations.

First example

julia
using VineCopulas
using Distributions: logpdf, pdf
using Random

C12 = GaussianCopula([1.0 0.5; 0.5 1.0])
C23 = ClaytonCopula(2, 2.0)
C13_2 = FrankCopula(2, 3.0)

vine = DVineCopula([1, 2, 3], [[C12, C23], [C13_2]])
u = [0.2, 0.5, 0.7]

(logpdf(vine, u), pdf(vine, u))
(-0.3370957517155749, 0.7138404851791286)