JandT_2007_smoothing_method: Extend and fill in the option quotes using Jiang & Tian...

View source: R/JandT_smoothing.R

JandT_2007_smoothing_methodR Documentation

Extend and fill in the option quotes using Jiang & Tian (2005, 2007) Implied Volatility Curve Fitting \loadmathjax

Description

Intrapolates and extrapolates the option_quotes over the strike price range using the Jiang & Tian (2007) smoothing method. The given quotes are transformed into Black & Scholes implied volatilities, on which intra/extrapolation takes place.

Usage

JandT_2007_smoothing_method(
  option_quotes,
  K_0,
  price,
  R,
  maturity,
  F_0,
  tail_length = 15,
  flat_tails = T,
  increment = "min"
)

Arguments

option_quotes

A data.table or "nest" of option quotes with three columns:

  • K (numeric) - strike price in ascending order

  • c (numeric) - call option price

  • p (numeric) - put option price

K_0

numeric scalar, giving the theoretical at-the-money strike price (see CBOE_K_0)

price

numeric scalar giving the underlying stock price.

R

numeric scalar giving the risk-free rate \mjseqnR corresponding to the maturity \mjseqnT in decimal

maturity

numeric scalar giving the time to maturity \mjseqnT in years

F_0

numeric scalar, giving the theoretical at-the-money forward \mjseqnF_0 (see CBOE_F_0)

tail_length

numeric scalar giving the strike-price range of the returned option quotes in \mjseqnSD units (see details). If the tail length doesn't exceed the the range of the given option quotes, no extrapolation takes place.

flat_tails

logical scalar determining whether the extrapolation in the tails is sloped or flat (see details)

increment

character or numeric scalar giving the strike-price increment of the returned option quotes in \mjseqnSD units (see details). Options are:

  • x (numeric) - any number giving the strike-price increment in price units

  • "JT" (character) - the increment from Jiang & Tian (2007) i.e. \mjseqnSD \cdot \sqrtmaturity \cdot price \cdot 0.35

  • "real" (character) - the smallest increment found in the "real" data

  • "min" (character) - the smaller one of "JT" and "min"

The increment is at least 0.5, unless a numeric value is provided.

Details

Inside the given range of strike prices, (natural) cubic spline intrapolation takes place.

The tails are extrapolated linearly. For flat extrapolation, the "outer-most" implied volatility is used, for sloped extrapolation the slope of the two "outer-most" implied volatilities is used.

After intra/extrapolation, the implied volatilities are transformed back into option prices via Black&Scholes, i.e. out-of-the-money puts and calls.

Jiang & Tian (2007) define the range and increment of the strike prices in \mjseqnSD units. This \mjseqnSD is the Black & Scholes implied volatility of the at-the-money option. As an example, the increment recommended by Jiang & Tian (2007) is \mjseqn0.35 units: \mjseqnSD \cdot \sqrtmaturity \cdot price \cdot 0.35. The range is calculated accordingly as \mjseqnSD \cdot \sqrtmaturity \cdot price \cdot tail_length.

Value

Returns a data.table of intra- and extrapolated option quotes with the following columns:

  • K (numeric) - evenly spaced strike price in ascending order

  • Q (numeric) - OTM option price

References

doi: 10.1093/rfs/hhi027 Jiang & Tian (2005) - The Model-Free Implied Volatility and Its Information Content

doi: 10.3905/jod.2007.681813 Jiang & Tian (2007) - Extracting Model-Free Volatility from Option Prices: An Examination of the VIX Index

Examples


library(R.MFIV)

## LOAD EXAMPLE OPTION_QUOTES
nest <- option_dataset$option_quotes[[1]]

## EXTRAPOLATE DATA
JandT_2007_smoothing_method(option_quotes = nest,
                            maturity = 0.06644802,
                            K_0 = 147,
                            R = 0.008769736,
                            F_0 = 147.5697,
                            price = 147.39)

m-g-h/R.MFIV documentation built on July 4, 2022, 3:35 a.m.