VECM Forecast
Fit a Vector Error Correction Model (VECM) across every (cointegrated) ticker in the Toolkit instance and forecast forecast_steps periods ahead.
Also known as: VECM, error correction model (for the multivariate/cointegrated case).
A VECM keeps a VAR’s short-run dynamics while ALSO letting each asset’s price change react to how far the system currently sits from its long-run equilibrium (the cointegrating relationship(s) among the tickers, taken from cointegration_model.get_johansen_cointegration) – see time_series_model.get_vecm_forecast for the full formula, estimation method and verification notes.
VECM Forecast in Python
get_vecm_forecast is part of the Econometrics module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_vecm_forecast as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AAPL", "MSFT"], api_key="FINANCIAL_MODELING_PREP_KEY")
# AAPL/MSFT alone aren't cointegrated in this sample -- add Benchmark to the
# system to get one that is.
toolkit.econometrics.get_vecm_forecast(period="quarterly", include_benchmark=True)
Which returns:
| Step | AAPL | MSFT | Benchmark |
|---|---|---|---|
| 1 | 131.672 | 237.052 | 380.084 |
| 2 | 136.414 | 266.892 | 404.920 |
| 3 | 147.872 | 281.265 | 413.975 |
| 4 | 154.833 | 289.048 | 413.568 |
| 5 | 152.306 | 273.929 | 396.546 |
Parameters
get_vecm_forecast 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
“Adj Close” – a VECM needs price LEVELS (non-stationary, cointegrated
series), not returns, the same input
get_johansen_cointegrationexpects. - k_ar_diff (int, optional): The number of lagged first differences to include as short-run dynamics. Defaults to 1.
- forecast_steps (int, optional): The number of periods ahead to forecast. Defaults to 5.
- significance (float, optional): The significance level (one of 0.01, 0.05, 0.10) at which the Johansen trace test determines the cointegrating rank. Defaults to 0.05.
- 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.