Impulse Response Function (IRF)
Fit a Vector Autoregression (VAR) across every ticker in the Toolkit instance and trace out the Impulse Response Function (IRF) – how a one-standard- deviation shock to each ticker propagates through the whole system over periods periods ahead.
Also known as: IRF.
A natural companion to get_var_forecast: rather than forecasting the levels forward, this traces out each ticker’s dynamic response to a shock in every ticker (including itself) – see time_series_model.get_impulse_response_function for the full formula, the Cholesky-orthogonalization used to identify the shocks, and why the ordering of tickers is an identifying assumption.
Impulse Response Function (IRF) in Python
get_impulse_response_function is part of the Econometrics module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_impulse_response_function as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AAPL", "MSFT"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.econometrics.get_impulse_response_function(period="quarterly", periods=5)
Which returns:
| Horizon | (‘AAPL’, ‘AAPL’) | (‘AAPL’, ‘MSFT’) | (‘MSFT’, ‘AAPL’) | (‘MSFT’, ‘MSFT’) |
|---|---|---|---|---|
| 0 | 0.1667 | 0.0865 | 0 | 0.0708 |
| 1 | 0.0075 | -0.0196 | 0.0836 | 0.0553 |
| 2 | -0.0274 | -0.0192 | 0.0178 | -0.0006 |
| 3 | -0.0071 | -0.0007 | -0.0108 | -0.0097 |
| 4 | 0.0033 | 0.0032 | -0.0054 | -0.002 |
| 5 | 0.0019 | 0.0008 | 0.0007 | 0.0013 |
Parameters
get_impulse_response_function accepts the following parameters:
- period (str, optional): The data frequency (daily, weekly, monthly, quarterly, or yearly). Defaults to “daily”.
- column (str, optional): The historical data column to model. Defaults to “Return”.
- lags (int, optional): The VAR order. Defaults to 1.
- periods (int, optional): The number of periods ahead to trace the response out to. Defaults to 10.
- orthogonalized (bool, optional): Whether to orthogonalize the shocks via a
Cholesky decomposition of the residual covariance matrix – see
time_series_model.get_impulse_response_function. Defaults to True. - include_benchmark (bool, optional): Whether to include “Benchmark” among the tickers modeled jointly. Defaults to False.
- rounding (int | None, optional): The number of decimals to round the results to. Defaults to None.