Skip to content
All library documents

Correcting the Third Error Term in CBOE SKEW Replication

Article Quant Q&A · Author: HJA24

Summary

The document addresses a discrepancy in the third adjustment term used when reproducing the CBOE SKEW Index. The adjustment accounts for the difference between the at-the-money strike and the forward level. The questioner reports that their first two error-term formulas match a reference example, while the third does not, despite trying a version without a factor in the logarithmic expression.

The accepted response identifies the issue as a missing one-third factor in the questioned expression: the published form used for the example omits that factor, leaving the logarithm, minus one, and forward-to-strike ratio grouped together before multiplication by the squared log term and three. Substituting the stated forward and strike values then reproduces the cited third error-term value. This is a narrow correction tied to the referenced convention and example; the document does not explain the full SKEW methodology or validate the other components of an index replication.

Key ideas

  • The SKEW adjustment terms account for the gap between the forward level and the at-the-money strike.
  • The questioned third term differs from a version that includes a one-third factor inside its parentheses.
  • The response says the example’s matching expression omits that one-third factor.
  • Matching this example does not establish that an entire SKEW replication is correct.

Tags

Full text
# Determine the error term of SKEW-calculation


# Determine the error term of SKEW-calculation












I am trying to recreate the CBOE's SKEW Index in Python. I need to calculate the errors terms that are adjustment terms for the differences between the `atm strike` and the `forward`.

My formula's

```
error_term_1 = -1 * (1 + np.log(forward / atm_strike) - (forward / atm_strike))
error_term_2 = 2 * np.log(atm_strike / forward) * ((forward / atm_strike) - 1) + ((np.log(atm_strike / forward) ** 2) / 2)
error_term_3 = 3 * (np.log(atm_strike / forward) ** 2) * ((np.log(atm_strike / forward) / 3) - 1 + (forward / atm_strike))
```

According to the example when the `forward` is equal to `1106.85` and the `atm_strik`e is equal to `1105`, the correct values are:

```
epilson_1 = 1.40E-06
epilson_2 = -4.2E-0.6
epilson_3 = 1.176E-11
```

My first and second formula gives the correct answer. My third formula doesn't however. What do I need to change?

I see in different source that the definition is as follows:

Still I am getting a different result when I remove `3`.. Please help!

## Answer by Wouter Kroneman (score 2, accepted)

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

In the third equation they somehow did not put the 1/3 in front of the second ln-term.

Without the 1/3, the equation looks at follows:

```
error_term_3 = 3 * (np.log(atm_strike / forward) ** 2) * (np.log(atm_strike / forward) - 1 + (forward / atm_strike))
```

Filling in `F0 = 1106.85` and `K0 = 1105` gives `Epsilon3 = 1.1752170209137409e-11`, which is the answer you are looking for.

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.