Skip to main content
A copula separates what each series looks like (its marginal distribution) from how the series move together (their dependence). CopulaGenerator imposes a target correlation structure across channels while leaving each channel’s marginal free — the right tool when the joint dependence matters more than any single series’ dynamics.
The model zN(0,R),ui=Φ(zi),xi=Fi1(ui)z \sim \mathcal{N}(0, R), \qquad u_i = \Phi(z_i), \qquad x_i = F_i^{-1}(u_i) A copula (copula_type="gaussian" or "t") couples the channels through a correlation_matrix, then maps each channel back to its marginal. A t-copula adds tail dependence — extremes that co-occur — which a Gaussian copula misses.

1. Gaussian copula with correlated normal variables

Generate three correlated variables with specified pairwise correlations using a Gaussian copula.

Verify correlations

Check that the empirical correlations match the specified correlation matrix.

2. t-copula with heavy tail dependence

A t-copula with the same correlation as a Gaussian copula makes joint extremes more likely: every time step, all channels share one chi-square variance-mixing draw, so large deviations tend to arrive together. That shared mixing also means a t-copula exhibits some dependence even at zero nominal correlation — always pass an explicit correlation_matrix so the dependence you observe is the dependence you configured. Below, both copulas use the same 0.7 correlation and standard-normal marginals. Correlation alone cannot tell them apart; the joint tails can: we measure how often one channel sits in its worst (or best) 5% of values given that the other one does.

3. Gaussian copula with mixed marginal distributions

Copulas decouple the dependency structure from the marginals, allowing different distribution types for each variable.

4. Generating multiple correlated series

Generate multiple independent draws of correlated multivariate series.
Related generators
  • VAR — dependence that plays out over time (lead-lag), not just contemporaneously.
  • Multivariatize — turn any univariate generator into coupled channels.
Full parameters are in the generator reference.