Best Fitting Copula
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_bto 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.