Skip to content
All library documents

Simulation Methods for Keeping Stochastic Variance Nonnegative

Article Quant Q&A · Author: mscnvrsy

Summary

The document considers how to simulate a variance process that can turn negative under a discretized stochastic volatility model with a variance-gamma jump term. Rather than forcing the jump component itself to be nonnegative, the answer presents ways to handle negative variance values during simulation. Full truncation replaces negative values with zero wherever variance enters the discretization. Reflection instead uses the absolute value, mapping negative values back to positive ones.

Each adjustment has a modeling cost: truncation can produce zero variance, while reflection can turn a large negative draw into an implausibly large positive variance. The answer also suggests simulating the logarithm or square root of variance and transforming back to enforce positivity. It gives no derivation, comparison, or numerical evidence about bias or accuracy, and does not specify how these alternatives interact with the jump specification. The choice therefore depends on the model and desired behavior, rather than a universally best scheme.

Key ideas

  • Full truncation floors negative variance values at zero throughout the discretization.
  • Reflection maps negative variance values to their absolute values.
  • Truncation can create zero variance, while reflection can produce very large positive values.
  • Simulating log variance or its square root and transforming back can enforce positivity.

Tags

Full text
# Strictly positive variance gamma process?


# Strictly positive variance gamma process?












My goal is to obtain a strictly positive variance-gamma process for the variance process such that, $$Y_{t+1} = Y_t + \mu\Delta + \sqrt{v_t\Delta}\,\,\varepsilon^y_{t+1}\\ \qquad \qquad\quad \,\,\qquad v_{t+1} = v_t + \kappa (\theta-v_t)\Delta + \sigma_v\sqrt{v_t\Delta}\,\,\varepsilon^v_{t+1} + J^v_{t+1} \\ J^v_{t+1} = \gamma G_{t+1} + \sigma \sqrt{G_{t+1}}\,\, \varepsilon^g_{t+1} \\ G_{t+1} \sim \Gamma ( \frac{\Delta}{\nu}, \nu)$$ However, $J^v_{t+1}$ has to be non-negative in order to prevent the volatility from becoming negative. Does anyone have an idea about how to obtain such a process?

## Answer by user16651 (score 0, accepted)

https://quant.stackexchange.com/a/30025

The simplest way to deal with negative variance-gamma process is to override them as they arise. There are at least two ways to do this

- In the full truncation scheme, a negative value for $v_t$ is floored at zero. Hence $v_t$ is replaced by $v_t^+=\max\{0,v_t\}$ everywhere in the discretization.

- In the reflection scheme, a negative value for $v_t$ is reflected with $-v_t$ . Hence $v_t$ is replaced by $|v_t|$ everywhere in the discretization.

The disadvantage of the full truncation scheme is that it creates zero variances, which is unrealistic because $Y_t$ never exhibit zero variance.

The disadvantage of the reflection scheme is that it reflects a large negative variance to a large positive variance. Hence, it transforms realizations of low volatility into high volatility.

Yet another way is to simulate $\ln v_t$ or $\sqrt{v_t}$ and then exponentiate or square the result.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.