Logo
Reference manual - version qle_version
Public Member Functions | List of all members
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 boost::shared_ptr< BlackVolTermStructure > &proxySurface, const boost::shared_ptr< EqFxIndexBase > &index, const boost::shared_ptr< EqFxIndexBase > &proxyIndex, const boost::shared_ptr< BlackVolTermStructure > &fxSurface=nullptr, const boost::shared_ptr< FxIndex > &fxIndex=nullptr, const boost::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

boost::shared_ptr< BlackVolTermStructureproxySurface () const
 
boost::shared_ptr< EqFxIndexBaseindex () const
 
boost::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.