Correcting the Third Error Term in CBOE SKEW Replication
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.