Skip to content
All library documents

Replicating FX Implied Volatility Surfaces and Delta Conventions

Article Quant Q&A · Author: APMATH24

Summary

The note concerns reproducing an implied volatility surface for foreign exchange options, with the intention of using it to calculate local volatility. The questioner suspects that strike discrepancies may stem from the forward exchange rate calculation or the maturity fraction used in the quoted formulas. The answer cannot diagnose the implementation because the exact formula was not supplied, so it offers a working example and says the resulting strike is near the expected value, contrasting it with the questioner's much larger output.

The response also distinguishes FX volatility quotes that include the premium in the delta convention. In that case, the strike cannot necessarily be recovered by a direct closed-form inversion; a numerical root finder such as Brent's method is used to solve the relevant equation. The example is a troubleshooting pointer rather than a full derivation or validation of the surface. It does not provide the underlying formulas or enough implementation detail to reproduce the result independently, and conventions and day-count treatment need to be checked against the quote source.

Key ideas

  • Strike errors when building an FX volatility surface may come from forward or maturity calculations.
  • A precise diagnosis requires the formulas and implementation details used to compute the strike.
  • Premium-included delta quotes can require numerical root finding to recover the strike.
  • The response provides a troubleshooting example but not a complete derivation or surface validation.

Tags

Full text
# Help needed in replicating FX Implied Vol Surface


# Help needed in replicating FX Implied Vol Surface












I am relatively new to this area and am doing some self studying on SLV model. I am however getting stuck on trying to replicate this implied vol surface (which I will use to calculate the local vol)

The strikes and implied vols are calculated using the equations on slide 7 here. For the most part, I am getting close but my strikes appear to be wrong. I feel like the issue is coming from how am I calculating the forward rates: $f = S_0 e^{\tau(r_d- r_f)}$. I am not entirely sure where I am going wrong and hoping someone can shed some light on how I can replicate this. I think it may be in how I am calculating $\tau$ (I am just taking the maturity column in units of years). Any help would go a long way, thanks!

## Answer by AKdemy (score 0)

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

You still did not post your exact formula, which means it's impossible to determine what is wrong. Therefore, I'll post a working example.

I used Julia and manually defined the ppf. This is equivalent to python's norm.ppf() or excel's NORMSINV().

Afterwards, I simply copied your formula. This gives a strike of $\approx$ 1.256 which should be correct. Since you get values around 3.5, there is something wrong in your code.

As a side remark, for Vols quoted with premium included in the delta quote, one must use a root finder (e.g. Brent) and solve numerically as explained for example by Wystup and Reiswich, 2009.

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.