Logo
Reference manual - version qle_version
BlackVolatilitySurfaceProxy Class Reference

Wrapper class for a BlackVolTermStructure that allows us to proxy one equity vol surface off another. More...

#include <qle/termstructures/blackvolsurfaceproxy.hpp>

Inheritance diagram for BlackVolatilitySurfaceProxy:

Public Member Functions

 BlackVolatilitySurfaceProxy (const QuantLib::ext::shared_ptr< BlackVolTermStructure > &proxySurface, const QuantLib::ext::shared_ptr< EqFxIndexBase > &index, const QuantLib::ext::shared_ptr< EqFxIndexBase > &proxyIndex, const QuantLib::ext::shared_ptr< BlackVolTermStructure > &fxSurface=nullptr, const QuantLib::ext::shared_ptr< FxIndex > &fxIndex=nullptr, const QuantLib::ext::shared_ptr< CorrelationTermStructure > &correlation=nullptr)
 Constructor. This is a floating term structure (settlement days is zero).
TermStructure interface
DayCounter dayCounter () const override
Date maxDate () const override
Time maxTime () const override
const Date & referenceDate () const override
Calendar calendar () const override
Natural settlementDays () const override
VolatilityTermStructure interface
Rate minStrike () const override
Rate maxStrike () const override

Inspectors

QuantLib::ext::shared_ptr< BlackVolTermStructureproxySurface () const
QuantLib::ext::shared_ptr< EqFxIndexBaseindex () const
QuantLib::ext::shared_ptr< EqFxIndexBaseproxyIndex () const
Volatility blackVolImpl (Time t, Real strike) const override

Detailed Description

Wrapper class for a BlackVolTermStructure that allows us to proxy one equity vol surface off another.

This class implements BlackVolatilityTermStructure and takes a surface (well, any BlackVolTermStructure) as an input. It also takes Handles to two EquityIndices (index and proxyIndex), where index is the 'EquityIndex' of the underlying for the surface being constructed and proxyIndex is the 'EquityIndex' for the surface being proxied off.

The vol returned from the new surface is proxied from the base, adjusting by the forward prices to match ATM:

\begin{eqnarray} \sigma_2(K,T) = \sigma_1(\frac{K}{F_2}*F_1,T) \end{eqnarray}

Where

\( \sigma_1 = \text{Volatility of underlying being proxied against}\)
\( \sigma_2 = \text{Volatility of underlying being proxied}\)
\( F_1 = \text{Forward at time T of the underlying being proxied against}\)
\( F_2 = \text{Forward at time T of the underlying being proxied}\)
\( T = \text{Time}\)
Note: This surface only proxies equity volatilities, this is because we are forced to look up the equity fixings using time instead of date and use the forecastFixing method in an EquityIndex. A more general class could be developed if need, using Index instead of EquityIndex, if the time lookup could be overcome.