Constructing an Inverted FX Volatility Surface from Its Original
Summary
The document explains why an FX volatility surface for an inverted currency pair cannot generally be built by simply swapping quoted call and put volatilities. Delta is defined relative to the option’s notional and hedge currency, so expressing the same option in the inverted pair changes its delta as well as its strike. The example shows a EURUSD call represented as a USD-notional option: its inverted-pair delta is lower than the original quote delta.
The suggested workflow is to build the primary surface from market quotes, then create the inverted surface by retaining the volatility values and replacing each strike with its reciprocal. The example illustrates the delta conversion issue, while the recommendation aims to preserve equivalent strike volatilities across pair conventions. The discussion assumes a particular delta convention in its example and does not specify interpolation, smile dynamics, or treatment of other market conventions; those details still matter in a production pricing setup.
Key ideas
- Swapping call and put volatility quotes does not preserve equivalent strikes and volatilities for an inverted FX pair.
- An option’s delta changes when its notional and hedge currency are expressed in the inverted pair.
- Build the primary volatility surface first, then invert its strike axis by taking reciprocal strikes.
- The example uses spot delta and shows that the inverted option need not retain its original delta quote.
Tags
Full text
# FX vol surface construction of an inverted pair # FX vol surface construction of an inverted pair When building an FX vol surface for an FX pair, say EURUSD, we can use market quoted skew data (risk reversals and butterflies etc) to arrive at a vol dataset which usually comprises of something like 10d/25d puts, ATMs, 10d/25d calls (or variations thereof). We can then perform some strike/delta conversion procedures to build a familiar vol surface (call it surface A) where a strike/maturity enquiry returns a volatility value. Let's assume bilinear interpolation for simplicity. Now if we wanted to build a vol surface for the inverted pair (USDEUR), we could simply use the same market data as above but swap the delta quotes (so e.g. 25d calls become 25d puts ...etc) while the ATMs would be the same. Then following a similar strike/delta conversion procedure we could procure an inverted vol surface (call it surface B). However doing this in practice leads to mild inconsistencies in the strike vol returned by the aforementioned two vol surfaces (only in the presence of skew of course - the flat case is trivially true). So for example a 1m EUR call USD put 1.2500 strike from surface A should in theory have exactly the same vol as a 1m USD put EUR call 0.8000 strike from surface B, but it doesn't. Unless I'm messing something up in my implementation, I'm guessing this is coming from the strike/delta conversion (which is a non-linear procedure and is numerical rather than analytical) as well as the interpolation being preformed but I don't know enough about it. Would be curious to know how this is dealt with in practice and if anyone else has any insights on this. If so, how can can one go about minimizing this error? ## Answer by user35980 (score 4) https://quant.stackexchange.com/a/82364 Just to follow up on this: it is in fact incorrect to assume that a simple swapping of, say, 25D call vols to 25D put vols for the inverted pair would produce the same strike vols (for the inverted strike) in surface B. The put delta will need to be modified and, moreover, would be dependent on the 25D call strike value of the uninverted pair. To illustrate: let's say we're talking about spot deltas here. Suppose EURUSD spot is 1.10; and also suppose that a EURUSD 25d call (EUR call USD put) in 100mm EUR notional has a strike value of 1.20. This means we need to sell 25mm EUR on the delta hedge for this option. Conversely, the same option in USD terms is a (100 x 1.20 =) 120mm USD notional USD put EUR call with a strike of 0.8333 (=1/1.20). The delta of the option looked in this way means we have to buy (25x1.10)=27.5mm USD on the hedge. This makes it a 27.5/120=22.9D option (not a 25D option as I was thinking!). So to build the inverted vol surface in the manner described in my original question makes it unfeasible (we don't have a systematic means of converting the call to put deltas). As AKademy points out in their comment the sensible approach is to construct a primary vol surface (surface A). What I would add is you can then extract an inverted vol surface B by using the same vols but replacing the strikes with inverted strikes on the strike axis. This step can be important because (depending on the setup of your FX option pricing infrastructure) EURUSD and USDEUR come about as different "assets" in automated pricing systems and therefore may require calls to different vol curves. For the record, my dive into why all of the above questioning was necessary was because I was setting up a quanto feature into an existing vanilla pricer by having an option to just switch the accounting currency from domestic to something else.
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.