Variance Decomposition
Fit a Vector Autoregression (VAR) across every ticker in the Toolkit instance and compute the (orthogonalized) Forecast Error Variance Decomposition (FEVD) – what fraction of each ticker’s h-step-ahead forecast error variance is attributable to each ticker’s own structural shock, for h = 1, ..., periods.
Also known as: FEVD, variance decomposition.
The other natural companion to get_var_forecast (alongside get_impulse_response_function, which the FEVD is built from) – see time_series_model.get_variance_decomposition for the full formula. A large own-shock share at short horizons that decays as the horizon grows is the classic signature of a ticker that is initially self-driven but increasingly explained by the rest of the system over time.
No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the Variance Decomposition for you. Just ask in plain English.
Calculate the Variance Decomposition in Python
The Variance Decomposition is available in the Econometrics module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_variance_decomposition as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AAPL", "MSFT"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.econometrics.get_variance_decomposition(period="quarterly", periods=5)
Which returns:
| Horizon | (‘AAPL’, ‘AAPL’) | (‘AAPL’, ‘MSFT’) | (‘MSFT’, ‘AAPL’) | (‘MSFT’, ‘MSFT’) |
|---|---|---|---|---|
| 1 | 1 | 0 | 0.5984 | 0.4016 |
| 2 | 0.7993 | 0.2007 | 0.4935 | 0.5065 |
| 3 | 0.7965 | 0.2035 | 0.5049 | 0.4951 |
| 4 | 0.7942 | 0.2058 | 0.502 | 0.498 |
| 5 | 0.7936 | 0.2064 | 0.5022 | 0.4978 |
Parameters
get_variance_decomposition 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 forecast horizon to decompose out to. Defaults to 10.
- 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.
Related Time Series Forecasting
The Econometrics module page introduces the module, and the sidebar lists all of its functions.