Fits a GJR-GARCH(1, 1, 1) model to the historical returns and returns the estimated Omega, Alpha, Gamma and Beta parameters for each asset.

A positive Gamma indicates the presence of a leverage effect (negative shocks raise volatility by more than positive ones of the same size), which symmetric GARCH cannot represent.

The formula is as follows:

\[\sigma_{t} ^{2} = \text{Omega} + (\text{Alpha} + \text{Gamma} \cdot I_{t-1}) \cdot r_{t-1} ^{2} + \text{Beta} \cdot \sigma_{t-1} ^{2}\] \[\text{Log-Likelihood} = - \text{Σ} (\text{ln}\; \sigma_{t} ^{2} + r_{t} ^{2} / \sigma_{t} ^{2}) (\text{up to constants})\]

Where r_t are the returns (not demeaned) and I_(t-1) is 1 when r_(t-1) < 0 and 0 otherwise. The log-likelihood is maximized under Alpha + Gamma / 2 + Beta < 1 and Alpha + Gamma >= 0.

The variance recursion starts from a backcast, an exponentially weighted average (decay 0.94) of the first 75 squared returns, with the leverage term at its expectation (Gamma / 2) for the period before the first observation, and every observation enters the likelihood. This is the start the arch package uses, so the estimates agree with it.

For more information about the method, see the following paper:

  • Glosten, L.R., Jagannathan, R., and Runkle, D.E. (1993). “On the Relation between the Expected Value and the Volatility of the Nominal Excess Return on Stocks.” The Journal of Finance, 48(5), 1779-1801.

Also known as: GJR-GARCH weights, GJR-GARCH coefficients, leverage parameters.

GJR-GARCH Parameters in Python or via the MCP

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_gjr_garch_parameters as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["^GSPC", "^STOXX50E"],
    api_key="FINANCIAL_MODELING_PREP_KEY",
    start_date="2021-01-01",
    end_date="2025-12-31",
)

toolkit.risk.get_gjr_garch_parameters(rounding=6)

Or, after setting up the Finance Toolkit MCP, ask:

How strongly did negative returns raise the volatility of the S&P 500 and the Euro Stoxx 50 from 2021 to 2025, according to the parameters of a GJR-GARCH model?

Which returns:

  ^GSPC ^STOXX50E Benchmark
Omega 3e-06 1e-05 3e-06
Alpha 0 0 0
Gamma 0.210531 0.308907 0.221968
Beta 0.870765 0.764269 0.865708

Parameters

get_gjr_garch_parameters accepts the following parameters.

ParameterTypeDescriptionExample
periodstrThe data frequency for returns (daily, weekly, monthly, quarterly, or yearly). Defaults to “daily”."weekly"
optimization_tintTime steps of the returns series to use for the optimization. Defaults to the full length of the returns series.252
roundingint | NoneThe number of decimals to round the results to. Defaults to None.2
Share