Skip to content
All library documents

Constructing Recombining Binomial Trees with Time-Varying Volatility

Article Quant Q&A · Author: Siron

Summary

The document asks how to construct a recombining Cox-style binomial tree when volatility changes over time. In the standard setup, up and down moves use a constant volatility and equal time steps. For a recombining tree with varying volatility, the interval’s volatility-scaled step must remain constant, which links the choices of time-step length and forward volatility. The author relates interval variance to changes in total implied variance across option expiries, but notes that unknown time nodes make the calculation appear circular.

A proposed approach fixes the first interval and then determines later interval lengths sequentially. At each node, hold the current time fixed and increase the next time step until its implied interval volatility matches the initial interval’s value. The suggestion relies on smoothness and monotonicity assumptions and is described as a rough procedure rather than a proven general construction. It does not establish that a suitable step always exists or address practical issues such as smile dynamics and calibration.

Key ideas

  • A recombining tree with changing volatility requires the volatility-scaled interval size to be constant across steps.
  • Forward interval variance can be inferred from changes in total implied variance across expiries.
  • The proposed construction fixes the first interval and solves subsequent step lengths sequentially.
  • The search procedure depends on assumptions about smoothness and increasing interval volatility, which are not demonstrated generally.

Tags

Full text
# Binomial tree with time dependent volatility


# Binomial tree with time dependent volatility












In the Cox approach for binomial trees, the up move $u$ and down move $d$ are given by: $u = e^{\sigma \sqrt{dt}}$ and $d = e^{-\sigma \sqrt{dt}}$. In this approach the volatility $\sigma$ is assumed constant. I am trying to build a tree with time dependent volatility.

Let volatility $\sigma(t)$ be time dependent. To have a recombined tree it requires that the variance $\sigma_i \sqrt{dt_i}$ is independent of $i$. This means that there are 2 degrees of freedom to choose because varying either $dt_i$ or $\sigma_i$ will result in a non-recombining tree. It is not clear to me how we can choose these?

As I understand it, $\sigma_i$ is the "forward" volatility on the time interval $[t_i, t_{i+1}]$. If I consider the volatility smile today and denote $\sigma(K,t)$ the implied volatility of an option with strike $K$ and expiry $t$, then we have the relationship: $$\sigma_{i}^2dt_i = \sigma(K,t_{i+1})^2t_{i+1} - \sigma(K,t_{i})^2t_{i}$$

The computation of these forward volatilities is then straightforward given that I know $t_i$ since I can compute the implied volatility $\sigma(K,t)$ for any $t$. However, given that $t_i$ are unknown I can't determine $\sigma(K,t_i)$ before first knowing $t_i$ ... I am dealing with an equation with too many unknowns.

## Answer by Bennnn (score 1)

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

There's likely something far less crude than this but:

Fixing some initial time interval $[t_0, t_1]$ we have the volatility over that time interval as being given by:

Let the volatility over a time interval be denoted by: $$ vol(t_i, dt_{i}) = \sigma_i \sqrt{d t_i} = \sigma_i \sqrt{(t_i + d t_i) - t_i} = \sigma_i \sqrt{t_{i+1} - t_i} $$

To be recombinant we require that, for any $i$: $$ vol(t_i, dt_{i}) = vol(t_0, d t_0) $$

where we need $vol$ to satisfy:

$$ vol(t_i, dt_{i}) = \sqrt{\sigma(K, t_{i} + d t_i)^2 (t_i+dt_{i}) - \sigma(K, t_i)^2t_i}$$

Since $t_i$ will be fixed we can only vary $dt_i$.

The time interval volatility will be equal to $0$ when $dt = 0$ and by increase to $\infty$ as $t \to \infty$ (by assumption). Assuming smoothness of $\sigma(K, t)$ and some other assumptions, $vol(t_i, dt_i)$ should be increasing in $dt_i$.

Hence just slowly increase $dt_i$ from $0$ until you satisfy $vol(t_i, dt_{i}) = vol(t_0, d t_0)$, do this at each step.

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.