Skip to content
All library documents

Estimating FX Option Smiles from ATM, Risk Reversal, and Butterfly Quotes

Article Quant Q&A · Author: Sargera

Summary

The document asks how to estimate an implied volatility at a chosen strike and maturity when only FX forward rates, domestic and foreign zero rates, at-the-money volatility, and 25-delta risk reversal and butterfly quotes are available. It frames the task as reconstructing a volatility smile from a small set of market quotes for approximate option valuation.

The responses describe this as a conventional OTC FX volatility-surface construction problem, where quoting conventions matter. They recommend using an existing pricing tool if possible, or consulting published work comparing methods for building smiles from these inputs. A simpler Malz formula is mentioned as an option for a quick approximation, and the data provider may offer an API to retrieve a specific volatility point directly. The document gives no derivation, worked estimate, or accuracy evidence, and notes that conventions and available quote points vary; the resulting estimate should not be treated as a precise surface or trading valuation.

Key ideas

  • ATM volatility, risk reversals, and butterflies can serve as inputs for approximating an FX option volatility smile.
  • The target volatility depends on strike and maturity, alongside FX-specific market conventions.
  • Existing pricing tools or vendor APIs may provide point volatilities and avoid custom surface construction.
  • A Malz-based approximation is suggested for a simple implementation.
  • The document provides no implementation details or validation of the approximation’s accuracy.

Tags

Full text
# Using FX ATM/RR/BF Volatility to Estimate Smile


# Using FX ATM/RR/BF Volatility to Estimate Smile












Suppose $S$ is some FX rate, EUR/USD say, and $\sigma_{S}(K,T)$ is the implied volatility for some option written on $S$, sourced from the surface $\sigma_{S}(\cdot,\cdot)$ (alternatively, consider the implied volatility surface $(\Delta,T)\mapsto\sigma_{S}(\Delta,T)$, commonly used for FX implied volatility data).

Suppose we have the following term-structure data (maturity tenors $T$ for 1D, 1W, 2W, 3W, 1M, ..., 1Y, ..., 10Y):

- Forward rates $F(\cdot)$

- Risk-free zero rates $r_{d}(\cdot)$ and $r_{f}(\cdot)$ for both currencies

- ATM volatilities $\sigma_{S}(K^{*},\cdot)$ or $\sigma_{S}(\Delta^{*},\cdot)$ (the ATM strike or delta, denoted with the asterisk, is not known)

- $25\Delta$ "Risk Reversal" $RR(\cdot)$

- $25\Delta$ "Butterfly" $BF(\cdot)$

Is there anyway to use (1)-(5) to approximate $\sigma_{S}(K,T)$ given the option's $(K,T)$?

(The motivation for asking this question is that I have access to (1)-(5) through an automated data import tool, but not the entire surface, and would like to price some options using the data that can be imported automatically. The valuation is not being done for trading purposes, so an absolutely precise valuation is not needed, only an estimate.)

## Answer by q.t.f. (score 2, accepted)

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

This is pretty much exactly the problem description for a standard over-the-counter FX option pricing tool from 10-20 years ago. (For more modern contexts, the data would almost surely contain also 10 delta RR and BF, and perhaps more points as well.)

The best solution is, don't build this yourself, but instead use a prexisting tool. FX conventions are somewhat tricky and poorly documented; it takes some effort to build a tool to do this right. Unfortunately I don't know of any free tools, but there are many vendors who have solutions, so maybe you have access to something already.

If you really want to hack something together yourself, I suggest this paper by Reiswich and Wystup : http://www.thfinance.de/Playground/fxblog/website/wp-content/uploads/2009/09/CPQF_Arbeits20.pdf. They detail the most common variants of FX quoting conventions and compare several simple techniques for building complete option smiles from ATM/RR/BF data.

## Answer by AKdemy (score 0)

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

If quick and simple works, the formula by Malz is quite easy to implement.

If you have access to an automated data import tool, I suspect you use one of the common vendors. In this case it may be worth to ask if they have an API that pulls you the exact value based on a request for say 35DC with expiry in x days.

E.g. Bloomberg would allow you to pull single point vol via `=BDP("EURUSD Curncy","SP_VOL_SURF_MID", "VOL_SURF_DELTA_OVR=25.000", "VOL_SURF_CALLPUT_OVR=C", "VOL_SURF_EXPIRY_OVR=20210824")`. This example pulls 25DC with expiry on October 24th 2021 (as of the time of querying but even historically works).

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.