Winsorized ARMA Estimation for Higher-Order Stochastic Volatility Models
Overview
Estimation, simulation, hypothesis testing, AR-order selection, and forecasting for univariate higher-order stochastic volatility SV(p) models. Supports Gaussian, Student-t, and Generalized Error Distribution (GED) innovations, with optional leverage effects. Estimation uses closed-form Winsorized ARMA-SV (W-ARMA-SV) moment-based methods that avoid numerical optimization. Hypothesis testing includes Local Monte Carlo (LMC) and Maximized Monte Carlo (MMC) procedures for leverage effects, heavy tails, and autoregressive order. AR-order selection is also available via information criteria (BIC/AIC) using the Kalman-filter quasi-likelihood and the Hannan-Rissanen ARMA residual variance. Forecasting is based on Kalman filtering and smoothing. See Ahsan and Dufour (2021) doi:10.1016/j.jeconom.2021.03.008, Ahsan, Dufour, and Rodriguez-Rondon (2025) doi:10.1111/jtsa.12851, and Ahsan, Dufour, and Rodriguez-Rondon (2026) doi:10.34989/swp-2026-8 for details.
New features
svp_IC()andsvp_AR_order(): AR-order selection for SV(p) models via information criteria. Four criteria are returned by default (BIC_Kalman,AIC_Kalman,BIC_HR,AIC_HR), spanning state-space QML and Hannan-Rissanen estimation families; four more (AICc_Kalman,BIC_Whittle,BIC_YW,AIC_YW) are available opt-in via thecriteriaargument.svp_AR_order()sweeps overp = 1, ..., pmax; both functions readerrorTypeandleveragefrom the fitted model.lmc_ar()/mmc_ar()now accepterrorType = "Gaussian","Student-t", or"GED". The tail parameter is held fixed at the null MLE during simulation; innovations are pre-drawn from the corresponding distribution.
Breaking changes
Show all changes in 0.2.0Hide the rest of the changes in 0.2.0
sim_svp()now always returns a named listlist(y, h, z, v)of length-n vectors (observed returns, log-volatility path, return innovation, volatility innovation). TheK(multiple-replicate) argument has been removed; wrap the call in a loop for replicates. Callers that previously relied onsim_svp()returning a bare vector must now extract$y.
Defaults
filter_svp()andforecast_svp()gain aproxyargument and now default toproxy = "bayes_optimal"(was the paper-faithful"u"-proxy). For Student-t leverage this uses the posterior meanE[zeta | u]rather than the rawu-proxy, which has marginal variancenu/(nu-2) > 1. No effect for Gaussian, GED, or non-leverage models.
Bug fixes
- GMKF: corrected the Student-t leverage parameterization in the Gaussian mixture Kalman filter.
- Filtering / forecasting: corrected the state-innovation variance
Qunder leverage. The filter uses the conditionalQ = sigma_v^2 (1 - delta^2); the forecaster uses the conditionalQat horizon 1 and the marginalQ = sigma_v^2at horizons >= 2. - Bootstrap particle filter: Student-t leverage recovery now samples the mixing variable from its posterior rather than its prior.
- GED leverage: the CKF/GMKF leverage shift now applies the copula proxy rather than using the raw innovation.
- MMC: the observed test statistic S0 is kept fixed during optimization, per Dufour (2006, eq. 4.22). Previously recomputed at each optimizer evaluation in the leverage, Student-t, and GED tests.
- MMC: default
eps[sigma_y] = 0in all MMC functions (was 0.3). The simulated null distribution is sigma_y-invariant, so varying it is unnecessary.
Performance
- The KSC mixture EM step used by the GMKF (
fit_ksc_mixture()) is now implemented in C++, giving roughly a 12x speedup for Student-t and GED filtering.
Documentation
DESCRIPTION: added the DOI for the JTSA 2025 reference per CRAN reviewer feedback.- Updated the introductory vignette with an AR-order-selection section.
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-04
- NOTE12 OK, 1 NOTE2026-08-01
- OK13 OK2026-05-02
- NOTE9 OK, 1 NOTE2026-04-25
- ERROR6 OK, 1 NOTE, 1 ERROR2026-04-23
Documentation
- Help pages
- 34 (19 internal)includes a package overview page
- Examples that run
- 0%15 only when donttest examples are enabled (R CMD check --as-cran)
- Exported functions with examples
- 100%
- Documented parameters
- 96%
- Return-value docs
- 100%
- Help pages citing references
- 9%
Downloads
Repository
Stars over time
Commits over time
4 development-tooling and community-health practices detected across 3 families in the upstream repository
Checks run against github.com/roga11/warmasvp on 2026-10-18.
This repository shows signs of AI coding tools.
- Claude Codefirst seen 2026-08-02Commits: at least 3 crediting it in the message
- Claude Opus 53 commits · Aug 2026
Dependencies
Installing wARMASVp adds 4 packages (3 with compiled code, 4.5 MB of source tarballs). Heaviest: Rcpp 1.8 MB, gsignal 1.3 MB, RcppArmadillo 1.0 MB.
Code & Tests
People & History
Maintainer since 0.1.0 (2026)
Pick two releases to compare their code metrics.
- 0.2.0Latest
- RR 4.6.0 released · 2026-04-24
- 0.1.02026-04-22
- RR 4.5.0 released · 2025-04-11
Package metadata
- First published
- 2026-04-22
- Total releases
- 2 / 1 yrs
- License
- GPL (>= 3) OSI
- Download size
- 237 KB
Cite
Cite this package
Run in R for the authors' entry:
citation("wARMASVp")The package provides a citation file, so citation() returns the authors' own entry.
It points to 10.1016/j.jeconom.2021.03.008, 10.1111/jtsa.12851, 10.34989/swp-2026-8.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-21, which the citation names so these numbers can be found later. More on citing and the projects behind them.