Skip to main content

Clayton

Clayton(
    kendall_tau: float,
    rotation: str | systematica.models.arbitrage_index.utils.BaseCopulaRotation = BaseCopulaRotation.R0,
    start: float = 0.001,
    stop: float = 0.999,
    num: int = 100,
)
Bivariate Clayton Copula Estimation. The Clayton copula is an Archimedean copula characterized by strong lower tail dependence and little to no upper tail dependence. In its unrotated form, it is used for modeling extreme co-movements in the lower tail (i.e. simultaneous extreme losses). Rotations allow the copula to be adapted for different types of tail dependence:
  • A 180 rotation captures extreme co-movements in the upper tail (i.e. simultaneous extreme gains).
  • A 90 rotation captures scenarios where one variable exhibits extreme gains while the other shows extreme losses.
  • A 270 rotation captures the opposite scenario, where one variable experiences extreme losses while the other suffers extreme gains.
It is defined by: Cθ(u,v)=(uθ+vθ1)1/θC_{\theta}(u, v) = \Bigl(u^{-\theta} + v^{-\theta} - 1\Bigr)^{-1/\theta} where θ>0\theta > 0 is the dependence parameter. As θ>0\theta -> 0, the Clayton copula converges to the independence copula. Larger values of θ\theta result in stronger lower-tail dependence.
The Clayton copula is widely used in statistics and quantitative finance for modeling dependency structures between random variables, particularly those exhibiting lower-tail dependence .The conditional probability formulas derived from the Clayton copula describe the dependency between two variables XX and YY (or more generally, UU and VV, representing uniform marginals) conditional on one variable.
  1. Tail Dependence : Clayton copula is ideal for modeling lower-tail dependence, capturing the likelihood of extreme low values in XX and YY occurring simultaneously.
  2. Risk Management : In financial risk, conditional probabilities from the Clayton copula are used to assess joint default probabilities and systemic risk.
  3. Dependency Analysis : Quantifies the strength and nature of dependency between random variables.
Rotations are needed for Archimedean copulas (e.g., Joe, Gumbel, Clayton) because their parameters only model positive dependence, and they exhibit asymmetric tail behavior. To model negative dependence, one uses rotations to “flip” the copula’s tail dependence. References:
  • “An Introduction to Copulas (2nd ed.)”, Nelsen (2006)
  • “Multivariate Models and Dependence Concepts”, Joe, Chapman & Hall (1997)
  • “Quantitative Risk Management: Concepts, Techniques and Tools”, McNeil, Frey & Embrechts (2005)
  • “The t Copula and Related Copulas”, Demarta & McNeil (2005)
  • “Copula Methods in Finance”, Cherubini, Luciano & Vecchiato (2004)
Method generated by attrs for class Clayton.

Ancestors

  • systematica.models.arbitrage_index.base.BaseCopula
  • abc.ABC

Instance variables

  • lower_tail_dependence: float: Theoretical lower tail dependence coefficient.
  • upper_tail_dependence: float: Theoretical upper tail dependence coefficient.

Methods

density

density(
    self,
    u: numpy.ndarray,
    v: numpy.ndarray,
) ‑> numpy.ndarray
Calculate log probability density of the bivariate copula: P(U=u,V=v)P(U=u, V=v). Parameters:
NameTypeDefaultDescription
utp.Array1d--First uniform marginal.
vtp.Array1d--Second uniform marginal.
Returns:
TypeDescription
tp.Array1dLog probability density.
Raises:
TypeDescription
AssertionErrorClayton dependence (theta) must be > -1 and not 0.

cumulative_density

cumulative_density(
    self,
    u: numpy.ndarray,
    v: numpy.ndarray,
) ‑> numpy.ndarray
Calculate cumulative density of the bivariate copula: P(U<=u,V<=v)P(U<=u, V<=v). Parameters:
NameTypeDefaultDescription
utp.Array1d--First uniform marginal.
vtp.Array1d--Second uniform marginal.
Returns:
TypeDescription
tp.Array1dCumulative probability density.
Raises:
TypeDescription
AssertionErrorClayton dependence (theta) must be > -1 and not 0.

arbitrage

arbitrage(
    self,
    ui: float,
    vi: float,
) ‑> Tuple[floatfloat]
Compute the h-function (partial derivative) for the bivariate Clayton copula, a.k.a. the mispricing index, for every time step in the trading period using the estimated copula. Parameters:
NameTypeDefaultDescription
uifloat--The first component of the bivariate input.
vifloat--The second component of the bivariate input.
Returns:
TypeDescription
tp.Tuple[float, float]:The mispricing indices for the copula, a.k.a. arbitrage.
Raises:
TypeDescription
AssertionErrorClayton dependence (theta) must be > -1 and not 0.

partial_derivative

partial_derivative(
    self,
    u: numpy.ndarray,
    v: numpy.ndarray,
) ‑> numpy.ndarray
Compute the h-function (partial derivative) for the bivariate Clayton copula, a.k.a. the mispricing index, for every time step in the trading period using the estimated copula. Parameters:
NameTypeDefaultDescription
utp.Array1d--The first component of the bivariate input.
vtp.Array1d--The second component of the bivariate input.
Returns:
TypeDescription
tp.Array2dThe mispricing indices for the copula, a.k.a. arbitrage.
Raises:
TypeDescription
AssertionErroru and v must have the same shape.
AssertionErrorClayton dependence (theta) must be > -1 and not 0.

score

score(
    self,
    u: numpy.ndarray,
    v: numpy.ndarray,
) ‑> numpy.ndarray
Compute the log-likelihood score of each sample (log-pdf) under the model. For Clayton, the PDF is given by: c(u,v)=(θ+1)(uθ+vθ1)1θ2(u,v)θ1c(u,v) = (\theta+1) \Bigl(u^{- \theta} + v^{- \theta} - 1\Bigr)^{ -\frac{1}{\theta}-2} (u, v)^{-\theta-1}
u and v are bivariate inputs (u, v) where each row represents a bivariate observation. Both u and v must be in the interval [0, 1], having been transformed to uniform marginals.
Parameters:
NameTypeDefaultDescription
utp.Array1d--The first component of the bivariate input.
vtp.Array1d--The second component of the bivariate input.
Returns:
TypeDescription
tp.Array1dThe log-likelihood score of each sample under the fitted copula.
Raises:
TypeDescription
AssertionErroru and v must have the same shape.
AssertionErrorClayton dependence (theta) must be > -1 and not 0.