Calculates volatility forecasts based on the GJR-GARCH model.

GJR-GARCH extends GARCH with a leverage term that lets negative shocks (bad news) raise volatility by more than positive shocks of the same size, a well documented asymmetry in equity returns that symmetric GARCH cannot capture.

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, threshold GARCH, TGARCH.

No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the GJR-GARCH Volatility Model for you. Just ask in plain English.

Calculate the GJR-GARCH Volatility Model in Python

The GJR-GARCH Volatility Model is available in the Risk module of the open-source Finance Toolkit. Install it with:

pip install financetoolkit -U

Then call get_gjr_garch as shown below.

from financetoolkit import Toolkit

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

toolkit.risk.get_gjr_garch(period="quarterly")

Which returns:

Date AMZN TSLA Benchmark
2024Q2 0.027 0.1542 0.0053
2024Q3 0.0267 0.1513 0.0047
2024Q4 0.0266 0.1642 0.0048
2025Q1 0.0264 0.1937 0.0046
2025Q2 0.027 0.1603 0.0065
2025Q3 0.0267 0.157 0.0053
2025Q4 0.0265 0.173 0.005
2026Q1 0.0264 0.1503 0.0046
2026Q2 0.0267 0.1506 0.0066
2026Q3 0.0265 0.1513 0.0061

Parameters

get_gjr_garch accepts the following parameters:

  • period (str, optional): The data frequency for returns (daily, weekly, monthly, quarterly, or yearly). Defaults to “quarterly” if the Toolkit is initialised with quarterly=True, otherwise “yearly”.
  • time_steps (int, optional): Time steps to calculate GJR-GARCH for.
  • optimization_t (int, optional): Time steps to optimize GJR-GARCH for. It is only used if no weights are given.
  • within_period (bool, optional): Whether to calculate GJR-GARCH within the specified period or for the entire period. Defaults to False.
  • rounding (int | None, optional): The number of decimals to round the results to. Defaults to 4.
  • growth (bool, optional): Whether to calculate the growth of the GJR-GARCH values over time. Defaults to False.
  • lag (int | list[int], optional): The lag to use for the growth calculation. Defaults to 1.
  • standardize (bool, optional): Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False.

The Risk module page introduces the module, and the sidebar lists all of its functions.

Share