Calibrate all five supported copula families (see get_copula_parameters) between ticker_a and ticker_b, and compare them by AIC (Akaike Information Criterion) – the lower the AIC, the better the fit relative to its number of parameters, so the top row is the best-fitting family.

When ticker_a/ticker_b are not given, every unique pair among the Toolkit’s tickers is compared instead.

Also known as: copula selection, copula comparison.

Best Fitting Copula in Python

get_best_fitting_copula is part of the Risk module of the open-source Finance Toolkit. Install it with:

pip install financetoolkit -U

Then call get_best_fitting_copula as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(["AMZN", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")

toolkit.risk.get_best_fitting_copula("AAPL", "MSFT", period="weekly")

Which returns:

Copula Lower Tail Dependence Upper Tail Dependence Log-Likelihood AIC
Student-T 0.1915 0.1915 51.9971 -99.9942
Frank 0 0 49.2452 -96.4903
Gumbel 0 0.4256 48.9139 -95.8277
Gaussian 0 0 42.908 -83.816
Clayton 0.389 0 33.6247 -65.2495

Parameters

get_best_fitting_copula accepts the following parameters:

  • ticker_a (str, optional): The first asset. Defaults to None, meaning every unique pair of tickers in the Toolkit instance is compared (requires ticker_b to also be None).
  • ticker_b (str, optional): The second asset. Defaults to None, see ticker_a.
  • period (str, optional): The data frequency (daily, weekly, monthly, quarterly, or yearly). Defaults to “daily”, since a dependence estimate needs far more observations than a lower frequency provides – at “yearly” a decade of history is only ten observations.
  • column (str, optional): The historical data column to use. Defaults to “Return”.
  • show_full_results (bool, optional): Only relevant when neither ticker is given. When False (the default), returns a square ticker-by-ticker grid of just the winning copula family per pair. When True, returns one row per pair instead, with the winning family’s fitted parameter(s), Lower and Upper Tail Dependence, Log-Likelihood, AIC and the number of observations used. Defaults to False.
  • rounding (int | None, optional): The number of decimals to round the results to. Defaults to None.
Share