Logo
Reference manual - version orea_version
SimmSensitivityStorageManager Class Reference
Inheritance diagram for SimmSensitivityStorageManager:

Public Member Functions

 SimmSensitivityStorageManager (const std::vector< std::string > &currencies, const QuantLib::Size firstCubeIndexToUse)
QuantLib::Size getRequiredSize () const override
void addSensitivities (QuantLib::ext::shared_ptr< ore::analytics::NPVCube > cube, const QuantLib::ext::shared_ptr< ore::data::Trade > &trade, const QuantLib::ext::shared_ptr< ore::data::Market > &market, const QuantLib::Size dateIndex=QuantLib::Null< QuantLib::Size >(), const QuantLib::Size sampleIndex=QuantLib::Null< QuantLib::Size >()) const override
QuantLib::ext::any getSensitivities (const QuantLib::ext::shared_ptr< ore::analytics::NPVCube > &cube, const std::string &nettingSetId, const QuantLib::Size dateIndex=QuantLib::Null< QuantLib::Size >(), const QuantLib::Size sampleIndex=QuantLib::Null< QuantLib::Size >()) const override
const std::vector< QuantLib::Period > & irDeltaTerms ()
const std::vector< QuantLib::Period > & irVegaTerms ()
const std::vector< QuantLib::Period > & irVegaUnderlyingTerms ()
const std::vector< QuantLib::Period > & fxVegaTerms ()

Member Function Documentation

◆ getRequiredSize()

QuantLib::Size getRequiredSize ( ) const
overridevirtual

Get required size (i.e. number of floats / reals) to store sensitivities in cube.

Implements SensitivityStorageManager.

◆ addSensitivities()

void addSensitivities ( QuantLib::ext::shared_ptr< ore::analytics::NPVCube > cube,
const QuantLib::ext::shared_ptr< ore::data::Trade > & trade,
const QuantLib::ext::shared_ptr< ore::data::Market > & market,
const QuantLib::Size dateIndex = QuantLib::Null< QuantLib::Size >(),
const QuantLib::Size sampleIndex = QuantLib::Null< QuantLib::Size >() ) const
overridevirtual

Add to the sensitivities for the given trade to the cube. The cube must contain an id matching the trade's netting set. The sensitivities are then added to this id. If dateIndex and sampleIndex are null, the T0 slice of the cube is populated, otherwise the cells for the given date and sample. The depth of the cube must at least be what getRequiredSize() returns.

Implements SensitivityStorageManager.

◆ getSensitivities()

QuantLib::ext::any getSensitivities ( const QuantLib::ext::shared_ptr< ore::analytics::NPVCube > & cube,
const std::string & nettingSetId,
const QuantLib::Size dateIndex = QuantLib::Null< QuantLib::Size >(),
const QuantLib::Size sampleIndex = QuantLib::Null< QuantLib::Size >() ) const
overridevirtual

Return delta and vega as an Array. The coordinates of the entries are

ccy_1 irDelta_1 ... irDelta_nCurveTenors

ccy_2 irDelta_1 ... irDelta_nCurveTenors

...

ccy_nCcys irDelta_1 ... irDelta_nCurveTenors

log(fx)-Delta_1 ... log(fx)-Delta_(nCcys-1)

theta

which means the number of components is nCurveTenors * nCurrencies + (nCurrencies - 1). All entries are in base ccy (= first ccy in currencies), the fx deltas against base ccy.

Implements SensitivityStorageManager.