Limitations and performance

This project targets transparency and reproducibility and is currently in an alpha stage.

Modeling limitations

  • Stochastic volatility coverage is still evolving: diagonal SV, triangular (time-invariant correlation) SV, and factor SV (time-varying full covariance) are supported. Factor SV is currently limited to prior.family: "niw" with RW dynamics; ELB, steady-state, and robust shocks are supported.

  • Structural analysis coverage is partial: reduced-form, Cholesky, and sign-restricted IRFs are supported via srvar.analysis (plus FEVD and Cholesky historical decompositions), but other workflows (e.g. sign-restricted historical decompositions) are not yet first-class.

  • Conditional/scenario forecasts are limited: srvar.scenario.conditional_forecast currently supports homoskedastic VARs. For ELB models, conditioning is applied to the latent (unfloored) process.

  • ELB treatment: ELB handling is implemented via latent shadow-rate augmentation for selected series.

  • Robust shocks limitations: Student‑t and outlier-mixture innovations are supported for homoskedastic VARs and for factor SV. They are not yet supported for diagonal/triangular SV; ELB/steady-state combinations require factor SV.

Statistical limitations / caveats

  • MCMC diagnostics are your responsibility: the toolkit returns draws, but does not currently ship full diagnostic tooling (R-hat, ESS, trace diagnostics). You should validate convergence and mixing.

  • Sensitivity to prior settings: results can change meaningfully with Minnesota hyperparameters, SSVS spike/slab variances, and SV priors.

Performance considerations

Runtime depends primarily on:

  • T: number of observations

  • N: number of variables

  • p: lag order

  • draws, burn_in, thin: sampler configuration

  • model features enabled (ELB and SV are more expensive than conjugate NIW)

Rules of thumb:

  • Start with small samplers to validate data plumbing and model stability.

  • Increase draws only once the model runs end-to-end and outputs look reasonable.

Backtesting can also be memory-heavy. For long backtests, prefer streaming evaluation:

  • output.save_plots: false

  • output.store_forecasts_in_memory: false

Numerical considerations

  • Some numerical constants/initializations are chosen for stability (e.g., latent ELB initialization uses a small offset below the bound).

  • The SV implementation uses an auxiliary mixture approximation (KSC) and banded linear algebra; extreme data scaling can still cause numerical issues.