Logo
Reference manual - version orea_version
SimmResults Class Reference

#include <orea/simm/simmresults.hpp>

Public Types

typedef CrifRecord::ProductClass ProductClass
typedef SimmConfiguration::RiskClass RiskClass
typedef SimmConfiguration::MarginType MarginType
typedef std::tuple< ProductClass, RiskClass, MarginType, std::string > Key

Public Member Functions

 SimmResults (const std::string &resultCcy="", const std::string &calcCcy="")
 SimmResults (const SimmResults &simmResults)
void add (const CrifRecord::ProductClass &pc, const SimmConfiguration::RiskClass &rc, const SimmConfiguration::MarginType &mt, const std::string &b, QuantLib::Real im, const std::string &resultCurrency, const std::string &calculationCurrency, const bool overwrite)
void add (const Key &key, QuantLib::Real im, const std::string &resultCurrency, const std::string &calculationCurrency, const bool overwrite)
void convert (const QuantLib::ext::shared_ptr< ore::data::Market > &market, const std::string &currency)
 Convert SIMM amounts to a different currency.
void convert (QuantLib::Real fxSpot, const std::string &currency)
QuantLib::Real get (const CrifRecord::ProductClass &pc, const SimmConfiguration::RiskClass &rc, const SimmConfiguration::MarginType &mt, const std::string b) const
bool has (const CrifRecord::ProductClass &pc, const SimmConfiguration::RiskClass &rc, const SimmConfiguration::MarginType &mt, const std::string b) const
bool empty () const
 Return true if the container is empty, otherwise false.
void clear ()
 Clear the results from the container.
const std::map< Key, QuantLib::Real > & data () const
 Return the map containing the results.
std::map< Key, QuantLib::Real > & data ()
std::string & resultCurrency ()
const std::string & resultCurrency () const
std::string & calculationCurrency ()
const std::string & calculationCurrency () const

Detailed Description

A container for SIMM results broken down by product class, risk class and margin type.

Member Function Documentation

◆ add()

void add ( const CrifRecord::ProductClass & pc,
const SimmConfiguration::RiskClass & rc,
const SimmConfiguration::MarginType & mt,
const std::string & b,
QuantLib::Real im,
const std::string & resultCurrency,
const std::string & calculationCurrency,
const bool overwrite )

Add initial margin value im to the results container for the given combination of SIMM product class, risk class and margin type

Remarks
If there is already a result in the container for that combination, it is overwritten if overwrite=true. Otherwise, the amounts are added together. Can check this using the has method before adding.

◆ get()

QuantLib::Real get ( const CrifRecord::ProductClass & pc,
const SimmConfiguration::RiskClass & rc,
const SimmConfiguration::MarginType & mt,
const std::string b ) const

Get the initial margin value from the results container for the given combination of SIMM product class, risk class and margin type

Warning
returns QuantLib::Null<QuantLib::Real> if there is no initial margin value in the results for the given combination. Can avoid this by first checking the results using the has method.

◆ has()

bool has ( const CrifRecord::ProductClass & pc,
const SimmConfiguration::RiskClass & rc,
const SimmConfiguration::MarginType & mt,
const std::string b ) const

Check if there is an initial margin value in the results container for the given combination of SIMM product class, risk class and margin type