QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
List of all members
SabrInterpolatedSmileSection Class Reference

#include <sabrinterpolatedsmilesection.hpp>

+ Inheritance diagram for SabrInterpolatedSmileSection:
+ Collaboration diagram for SabrInterpolatedSmileSection:

Public Member Functions

Constructors
 SabrInterpolatedSmileSection (const Date &optionDate, Handle< Quote > forward, const std::vector< Rate > &strikes, bool hasFloatingStrikes, Handle< Quote > atmVolatility, const std::vector< Handle< Quote > > &volHandles, Real alpha, Real beta, Real nu, Real rho, bool isAlphaFixed=false, bool isBetaFixed=false, bool isNuFixed=false, bool isRhoFixed=false, bool vegaWeighted=true, ext::shared_ptr< EndCriteria > endCriteria=ext::shared_ptr< EndCriteria >(), ext::shared_ptr< OptimizationMethod > method=ext::shared_ptr< OptimizationMethod >(), const DayCounter &dc=Actual365Fixed(), Real shift=0.0)
 all market data are quotes More...
 
 SabrInterpolatedSmileSection (const Date &optionDate, const Rate &forward, const std::vector< Rate > &strikes, bool hasFloatingStrikes, const Volatility &atmVolatility, const std::vector< Volatility > &vols, Real alpha, Real beta, Real nu, Real rho, bool isAlphaFixed=false, bool isBetaFixed=false, bool isNuFixed=false, bool isRhoFixed=false, bool vegaWeighted=true, ext::shared_ptr< EndCriteria > endCriteria=ext::shared_ptr< EndCriteria >(), ext::shared_ptr< OptimizationMethod > method=ext::shared_ptr< OptimizationMethod >(), const DayCounter &dc=Actual365Fixed(), Real shift=0.0)
 no quotes More...
 
LazyObject interface
void performCalculations () const override
 
void update () override
 
SmileSection interface
Real minStrike () const override
 
Real maxStrike () const override
 
Real atmLevel () const override
 
Real varianceImpl (Rate strike) const override
 
Volatility volatilityImpl (Rate strike) const override
 
- Public Member Functions inherited from SmileSection
 SmileSection (const Date &d, DayCounter dc=DayCounter(), const Date &referenceDate=Date(), VolatilityType type=ShiftedLognormal, Rate shift=0.0)
 
 SmileSection (Time exerciseTime, DayCounter dc=DayCounter(), VolatilityType type=ShiftedLognormal, Rate shift=0.0)
 
 SmileSection ()=default
 
 ~SmileSection () override=default
 
void update () override
 
virtual Real minStrike () const =0
 
virtual Real maxStrike () const =0
 
Real variance (Rate strike) const
 
Volatility volatility (Rate strike) const
 
virtual Real atmLevel () const =0
 
virtual const DateexerciseDate () const
 
virtual VolatilityType volatilityType () const
 
virtual Rate shift () const
 
virtual const DatereferenceDate () const
 
virtual Time exerciseTime () const
 
virtual const DayCounterdayCounter () const
 
virtual Real optionPrice (Rate strike, Option::Type type=Option::Call, Real discount=1.0) const
 
virtual Real digitalOptionPrice (Rate strike, Option::Type type=Option::Call, Real discount=1.0, Real gap=1.0e-5) const
 
virtual Real vega (Rate strike, Real discount=1.0) const
 
virtual Real density (Rate strike, Real discount=1.0, Real gap=1.0E-4) const
 
Volatility volatility (Rate strike, VolatilityType type, Real shift=0.0) const
 
- Public Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (Observable &&)=delete
 
virtual ~Observable ()=default
 
void notifyObservers ()
 
- Public Member Functions inherited from Observer
 Observer ()=default
 
 Observer (const Observer &)
 
Observeroperator= (const Observer &)
 
virtual ~Observer ()
 
std::pair< iterator, boolregisterWith (const ext::shared_ptr< Observable > &)
 
void registerWithObservables (const ext::shared_ptr< Observer > &)
 
Size unregisterWith (const ext::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 
virtual void update ()=0
 
virtual void deepUpdate ()
 
- Public Member Functions inherited from LazyObject
 LazyObject ()
 
 ~LazyObject () override=default
 
bool isCalculated () const
 
void forwardFirstNotificationOnly ()
 
void alwaysForwardNotifications ()
 
void recalculate ()
 
void freeze ()
 
void unfreeze ()
 

Inspectors

ext::shared_ptr< SABRInterpolationsabrInterpolation_
 
const Handle< Quoteforward_
 Market data. More...
 
const Handle< QuoteatmVolatility_
 
std::vector< Handle< Quote > > volHandles_
 
std::vector< Ratestrikes_
 
std::vector< RateactualStrikes_
 Only strikes corresponding to valid market data. More...
 
bool hasFloatingStrikes_
 
Real forwardValue_
 
std::vector< Volatilityvols_
 
Real alpha_
 Sabr parameters. More...
 
Real beta_
 
Real nu_
 
Real rho_
 
bool isAlphaFixed_
 Sabr interpolation settings. More...
 
bool isBetaFixed_
 
bool isNuFixed_
 
bool isRhoFixed_
 
bool vegaWeighted_
 
const ext::shared_ptr< EndCriteriaendCriteria_
 
const ext::shared_ptr< OptimizationMethodmethod_
 
Date evaluationDate_
 
Real alpha () const
 
Real beta () const
 
Real nu () const
 
Real rho () const
 
Real rmsError () const
 
Real maxError () const
 
EndCriteria::Type endCriteria () const
 
void createInterpolation () const
 Creates the mutable SABRInterpolation. More...
 

Additional Inherited Members

- Public Types inherited from Observer
typedef set_type::iterator iterator
 
- Protected Member Functions inherited from SmileSection
virtual void initializeExerciseTime () const
 
virtual Real varianceImpl (Rate strike) const
 
virtual Volatility volatilityImpl (Rate strike) const =0
 
- Protected Member Functions inherited from LazyObject
virtual void calculate () const
 
- Protected Attributes inherited from LazyObject
bool calculated_ = false
 
bool frozen_ = false
 
bool alwaysForward_
 

Detailed Description

Definition at line 38 of file sabrinterpolatedsmilesection.hpp.

Constructor & Destructor Documentation

◆ SabrInterpolatedSmileSection() [1/2]

SabrInterpolatedSmileSection ( const Date optionDate,
Handle< Quote forward,
const std::vector< Rate > &  strikes,
bool  hasFloatingStrikes,
Handle< Quote atmVolatility,
const std::vector< Handle< Quote > > &  volHandles,
Real  alpha,
Real  beta,
Real  nu,
Real  rho,
bool  isAlphaFixed = false,
bool  isBetaFixed = false,
bool  isNuFixed = false,
bool  isRhoFixed = false,
bool  vegaWeighted = true,
ext::shared_ptr< EndCriteria endCriteria = ext::shared_ptr<EndCriteria>(),
ext::shared_ptr< OptimizationMethod method = ext::shared_ptr<OptimizationMethod>(),
const DayCounter dc = Actual365Fixed(),
Real  shift = 0.0 
)

all market data are quotes

Definition at line 29 of file sabrinterpolatedsmilesection.cpp.

+ Here is the call graph for this function:

◆ SabrInterpolatedSmileSection() [2/2]

SabrInterpolatedSmileSection ( const Date optionDate,
const Rate forward,
const std::vector< Rate > &  strikes,
bool  hasFloatingStrikes,
const Volatility atmVolatility,
const std::vector< Volatility > &  vols,
Real  alpha,
Real  beta,
Real  nu,
Real  rho,
bool  isAlphaFixed = false,
bool  isBetaFixed = false,
bool  isNuFixed = false,
bool  isRhoFixed = false,
bool  vegaWeighted = true,
ext::shared_ptr< EndCriteria endCriteria = ext::shared_ptr<EndCriteria>(),
ext::shared_ptr< OptimizationMethod method = ext::shared_ptr<OptimizationMethod>(),
const DayCounter dc = Actual365Fixed(),
Real  shift = 0.0 
)

no quotes

Definition at line 63 of file sabrinterpolatedsmilesection.cpp.

Member Function Documentation

◆ performCalculations()

void performCalculations ( ) const
overridevirtual

This method must implement any calculations which must be (re)done in order to calculate the desired results.

Implements LazyObject.

Definition at line 107 of file sabrinterpolatedsmilesection.cpp.

+ Here is the call graph for this function:

◆ update()

void update ( )
overridevirtual

This method must be implemented in derived classes. An instance of Observer does not call this method directly: instead, it will be called by the observables the instance registered with when they need to notify any changes.

Reimplemented from LazyObject.

Definition at line 138 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ minStrike()

Real minStrike ( ) const
overridevirtual

Implements SmileSection.

Definition at line 183 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ maxStrike()

Real maxStrike ( ) const
overridevirtual

Implements SmileSection.

Definition at line 189 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ atmLevel()

Real atmLevel ( ) const
overridevirtual

Implements SmileSection.

Definition at line 194 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ varianceImpl()

Real varianceImpl ( Rate  strike) const
overridevirtual

Reimplemented from SmileSection.

Definition at line 129 of file sabrinterpolatedsmilesection.cpp.

+ Here is the call graph for this function:

◆ volatilityImpl()

Real volatilityImpl ( Rate  strike) const
overridevirtual

Implements SmileSection.

Definition at line 143 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ alpha()

Real alpha ( ) const

Definition at line 148 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ beta()

Real beta ( ) const

Definition at line 153 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ nu()

Real nu ( ) const

Definition at line 158 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ rho()

Real rho ( ) const

Definition at line 163 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ rmsError()

Real rmsError ( ) const

Definition at line 168 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ maxError()

Real maxError ( ) const

Definition at line 173 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ endCriteria()

EndCriteria::Type endCriteria ( ) const

Definition at line 178 of file sabrinterpolatedsmilesection.hpp.

+ Here is the call graph for this function:

◆ createInterpolation()

void createInterpolation ( ) const
protected

Creates the mutable SABRInterpolation.

Definition at line 97 of file sabrinterpolatedsmilesection.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ sabrInterpolation_

ext::shared_ptr<SABRInterpolation> sabrInterpolation_
mutableprotected

Definition at line 114 of file sabrinterpolatedsmilesection.hpp.

◆ forward_

const Handle<Quote> forward_
protected

Market data.

Definition at line 117 of file sabrinterpolatedsmilesection.hpp.

◆ atmVolatility_

const Handle<Quote> atmVolatility_
protected

Definition at line 118 of file sabrinterpolatedsmilesection.hpp.

◆ volHandles_

std::vector<Handle<Quote> > volHandles_
protected

Definition at line 119 of file sabrinterpolatedsmilesection.hpp.

◆ strikes_

std::vector<Rate> strikes_
mutableprotected

Definition at line 120 of file sabrinterpolatedsmilesection.hpp.

◆ actualStrikes_

std::vector<Rate> actualStrikes_
mutableprotected

Only strikes corresponding to valid market data.

Definition at line 122 of file sabrinterpolatedsmilesection.hpp.

◆ hasFloatingStrikes_

bool hasFloatingStrikes_
protected

Definition at line 123 of file sabrinterpolatedsmilesection.hpp.

◆ forwardValue_

Real forwardValue_
mutableprotected

Definition at line 125 of file sabrinterpolatedsmilesection.hpp.

◆ vols_

std::vector<Volatility> vols_
mutableprotected

Definition at line 126 of file sabrinterpolatedsmilesection.hpp.

◆ alpha_

Real alpha_
protected

Sabr parameters.

Definition at line 128 of file sabrinterpolatedsmilesection.hpp.

◆ beta_

Real beta_
protected

Definition at line 128 of file sabrinterpolatedsmilesection.hpp.

◆ nu_

Real nu_
protected

Definition at line 128 of file sabrinterpolatedsmilesection.hpp.

◆ rho_

Real rho_
protected

Definition at line 128 of file sabrinterpolatedsmilesection.hpp.

◆ isAlphaFixed_

bool isAlphaFixed_
protected

Sabr interpolation settings.

Definition at line 130 of file sabrinterpolatedsmilesection.hpp.

◆ isBetaFixed_

bool isBetaFixed_
protected

Definition at line 130 of file sabrinterpolatedsmilesection.hpp.

◆ isNuFixed_

bool isNuFixed_
protected

Definition at line 130 of file sabrinterpolatedsmilesection.hpp.

◆ isRhoFixed_

bool isRhoFixed_
protected

Definition at line 130 of file sabrinterpolatedsmilesection.hpp.

◆ vegaWeighted_

bool vegaWeighted_
protected

Definition at line 131 of file sabrinterpolatedsmilesection.hpp.

◆ endCriteria_

const ext::shared_ptr<EndCriteria> endCriteria_
protected

Definition at line 132 of file sabrinterpolatedsmilesection.hpp.

◆ method_

const ext::shared_ptr<OptimizationMethod> method_
protected

Definition at line 133 of file sabrinterpolatedsmilesection.hpp.

◆ evaluationDate_

Date evaluationDate_
mutableprotected

Definition at line 135 of file sabrinterpolatedsmilesection.hpp.