Wrapper class for a BlackVolTermStructure that allows us to proxy one equity vol surface off another. More...
#include <qle/termstructures/blackvolsurfaceproxy.hpp>
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< BlackVolTermStructure > | proxySurface () const |
boost::shared_ptr< EqFxIndexBase > | index () const |
boost::shared_ptr< EqFxIndexBase > | proxyIndex () const |
Volatility | blackVolImpl (Time t, Real strike) const override |
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.