Copula Parameters
Calibrate a bivariate copula between ticker_a and ticker_b, via maximum likelihood.
When ticker_a/ticker_b are not given, every unique pair among the Toolkit’s tickers is calibrated instead.
A copula separates the dependence structure between two assets from their individual (marginal) return distributions (Sklar’s theorem), letting the two be modeled independently. Five families are supported, each capturing a different shape of dependence:
- “gaussian”: zero tail dependence – crashes and rallies are no more likely to happen together than the correlation alone implies. Included mainly as a baseline, since real asset returns typically show more joint tail risk than this.
- “student-t”: symmetric, nonzero tail dependence in both tails.
- “clayton”: nonzero lower tail dependence only – assets crash together more than they rally together. The most common choice for equity return pairs.
- “gumbel”: nonzero upper tail dependence only – assets rally together more than they crash together.
- “frank”: zero tail dependence in both tails, but (unlike gaussian) can represent negative dependence and is symmetric around independence.
See get_best_fitting_copula to compare all five by AIC on the same pair of assets, and see get_copula_simulation to draw joint scenarios from the fitted copula.
For more information about the method, see:
- Sklar, A. (1959). Publications de l’Institut de Statistique de l’Universite de Paris, 8, 229-231.
- McNeil, A.J., Frey, R., & Embrechts, P. (2015). “Quantitative Risk Management: Concepts, Techniques and Tools.” Princeton University Press.
- Demarta, S., & McNeil, A.J. (2005). “The T Copula and Related Copulas.” International Statistical Review, 73(1), 111-129.
Also known as: copula calibration, copula fit, dependence modeling.
No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the Copula Parameters for you. Just ask in plain English.
Calculate the Copula Parameters in Python
The Copula Parameters is available in the Risk module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_copula_parameters as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AMZN", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.risk.get_copula_parameters("AAPL", "MSFT", copula="clayton", period="weekly")
Which returns:
| Value | |
|---|---|
| Theta | 0.7342 |
| Lower Tail Dependence | 0.389 |
| Upper Tail Dependence | 0 |
| Log-Likelihood | 33.6247 |
| AIC | -65.2495 |
| Observations | 314 |
Parameters
get_copula_parameters 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 calibrated (requires
ticker_bto also be None). - ticker_b (str, optional): The second asset. Defaults to None, see
ticker_a. - copula (str, optional): The copula family to fit, one of “gaussian”, “student-t”, “clayton”, “gumbel” or “frank”. Defaults to “gaussian”.
- 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”.
- rounding (int | None, optional): The number of decimals to round the results to. Defaults to None.
Related Risk Metrics
The Risk module page introduces the module, and the sidebar lists all of its functions.