#include <orea/simm/simmconfigurationcalibration.hpp>
Public Member Functions | |
SimmConfigurationCalibration (const QuantLib::ext::shared_ptr< SimmBucketMapper > &simmBucketMapper, const QuantLib::ext::shared_ptr< SimmCalibration > &simmCalibration, const QuantLib::Size &mporDays=10, const std::string &name="SIMM Calibration") | |
std::string | label2 (const QuantLib::ext::shared_ptr< QuantLib::InterestRateIndex > &irIndex) const override |
Return the SIMM Label2 value for the given interest rate index. More... | |
void | addLabels2 (const CrifRecord::RiskType &rt, const std::string &label_2) override |
Add SIMM Label2 values under certain circumstances. More... | |
QuantLib::Real | curvatureMarginScaling () const override |
QuantLib::Real | weight (const CrifRecord::RiskType &rt, boost::optional< std::string > qualifier=boost::none, boost::optional< std::string > label_1=boost::none, const std::string &calculationCurrency="") const override |
QuantLib::Real | correlation (const CrifRecord::RiskType &firstRt, const std::string &firstQualifier, const std::string &firstLabel_1, const std::string &firstLabel_2, const CrifRecord::RiskType &secondRt, const std::string &secondQualifier, const std::string &secondLabel_1, const std::string &secondLabel_2, const std::string &calculationCurrency="") const override |
virtual bool | isSimmConfigCalibration () const override |
Public Member Functions inherited from SimmConfigurationBase | |
const std::string & | name () const override |
Returns the SIMM configuration name. More... | |
const std::string & | version () const override |
Returns the SIMM configuration version. More... | |
const QuantLib::ext::shared_ptr< SimmBucketMapper > & | bucketMapper () const override |
Returns the SIMM bucket mapper used by the configuration. More... | |
bool | hasBuckets (const CrifRecord::RiskType &rt) const override |
Return true if the SIMM risk type rt has buckets. More... | |
std::string | bucket (const CrifRecord::RiskType &rt, const std::string &qualifier) const override |
const bool | checkValue (const std::string &, const std::vector< std::string > &) const |
std::vector< std::string > | buckets (const CrifRecord::RiskType &rt) const override |
std::vector< std::string > | labels1 (const CrifRecord::RiskType &rt) const override |
std::vector< std::string > | labels2 (const CrifRecord::RiskType &rt) const override |
void | addLabels2 (const CrifRecord::RiskType &rt, const std::string &label_2) override |
Add SIMM Label2 values under certain circumstances. More... | |
QuantLib::Real | weight (const CrifRecord::RiskType &rt, boost::optional< std::string > qualifier=boost::none, boost::optional< std::string > label_1=boost::none, const std::string &calculationCurrency="") const override |
QuantLib::Real | curvatureWeight (const CrifRecord::RiskType &rt, const std::string &label_1) const override |
QuantLib::Real | historicalVolatilityRatio (const CrifRecord::RiskType &rt) const override |
QuantLib::Real | sigma (const CrifRecord::RiskType &rt, boost::optional< std::string > qualifier=boost::none, boost::optional< std::string > label_1=boost::none, const std::string &calculationCurrency="") const override |
QuantLib::Real | curvatureMarginScaling () const override |
QuantLib::Real | concentrationThreshold (const CrifRecord::RiskType &rt, const std::string &qualifier) const override |
bool | isValidRiskType (const CrifRecord::RiskType &rt) const override |
QuantLib::Real | correlationRiskClasses (const RiskClass &rc_1, const RiskClass &rc_2) const override |
Return the correlation between SIMM risk classes rc_1 and rc_2 . More... | |
QuantLib::Real | correlation (const CrifRecord::RiskType &firstRt, const std::string &firstQualifier, const std::string &firstLabel_1, const std::string &firstLabel_2, const CrifRecord::RiskType &secondRt, const std::string &secondQualifier, const std::string &secondLabel_1, const std::string &secondLabel_2, const std::string &calculationCurrency="") const override |
QuantLib::Size | mporDays () const |
MPOR in days. More... | |
Public Member Functions inherited from SimmConfiguration | |
virtual | ~SimmConfiguration () |
virtual std::vector< std::string > | buckets (const CrifRecord::RiskType &rt) const =0 |
virtual bool | hasBuckets (const CrifRecord::RiskType &rt) const =0 |
Return true if the SIMM risk type rt has buckets. More... | |
bool | hasBucketMapping (const CrifRecord::RiskType &rt, const std::string &qualifier) const override |
Return true if the SIMM risk type rt has buckets. More... | |
virtual std::vector< std::string > | labels1 (const CrifRecord::RiskType &rt) const =0 |
virtual std::vector< std::string > | labels2 (const CrifRecord::RiskType &rt) const =0 |
virtual void | addLabels2 (const CrifRecord::RiskType &rt, const std::string &label_2)=0 |
virtual QuantLib::Real | weight (const CrifRecord::RiskType &rt, boost::optional< std::string > qualifier=boost::none, boost::optional< std::string > label_1=boost::none, const std::string &calculationCurrency="") const =0 |
virtual QuantLib::Real | curvatureWeight (const CrifRecord::RiskType &rt, const std::string &label_1) const =0 |
virtual QuantLib::Real | historicalVolatilityRatio (const CrifRecord::RiskType &rt) const =0 |
virtual QuantLib::Real | sigma (const CrifRecord::RiskType &rt, boost::optional< std::string > qualifier=boost::none, boost::optional< std::string > label_1=boost::none, const std::string &calculationCurrency="") const =0 |
virtual QuantLib::Real | curvatureMarginScaling () const =0 |
virtual QuantLib::Real | concentrationThreshold (const CrifRecord::RiskType &rt, const std::string &qualifier) const =0 |
virtual bool | isValidRiskType (const CrifRecord::RiskType &rt) const =0 |
virtual QuantLib::Real | correlationRiskClasses (const RiskClass &rc_1, const RiskClass &rc_2) const =0 |
Return the correlation between SIMM risk classes rc_1 and rc_2 . More... | |
virtual QuantLib::Real | correlation (const CrifRecord::RiskType &firstRt, const std::string &firstQualifier, const std::string &firstLabel_1, const std::string &firstLabel_2, const CrifRecord::RiskType &secondRt, const std::string &secondQualifier, const std::string &secondLabel_1, const std::string &secondLabel_2, const std::string &calculationCurrency="") const =0 |
virtual bool | isSimmConfigCalibration () const |
Public Member Functions inherited from CrifConfiguration | |
virtual | ~CrifConfiguration () |
virtual const std::string & | name () const =0 |
Returns the SIMM configuration name. More... | |
virtual const std::string & | version () const =0 |
Returns the SIMM configuration version. More... | |
virtual std::string | bucket (const ore::analytics::CrifRecord::RiskType &rt, const std::string &qualifier) const =0 |
virtual bool | hasBucketMapping (const ore::analytics::CrifRecord::RiskType &rt, const std::string &qualifier) const =0 |
virtual const QuantLib::ext::shared_ptr< SimmBucketMapper > & | bucketMapper () const =0 |
Returns the SIMM bucket mapper used by the configuration. More... | |
virtual std::string | label2 (const QuantLib::ext::shared_ptr< QuantLib::InterestRateIndex > &irIndex) const |
virtual std::string | label2 (const QuantLib::Period &p) const |
Private Member Functions | |
std::string | group (const std::string &qualifier, const std::map< std::string, std::set< std::string > > &groups) const |
Find the group of the qualifier . More... | |
Private Attributes | |
std::map< std::string, std::set< std::string > > | ccyGroups_ |
QuantLib::Real | hvr_ir_ |
IR Historical volatility ratio. More... | |
Additional Inherited Members | |
Public Types inherited from SimmConfigurationBase | |
typedef std::map< std::tuple< std::string, std::string, std::string >, QuantLib::Real > | Amounts |
Public Types inherited from SimmConfiguration | |
enum class | SimmSide { Call , Post } |
Enum indicating the relevant side of the SIMM calculation. More... | |
enum class | RiskClass { InterestRate , CreditQualifying , CreditNonQualifying , Equity , Commodity , FX , All } |
enum class | MarginType { Delta , Vega , Curvature , BaseCorr , AdditionalIM , All } |
enum class | IMModel { Schedule , SIMM , SIMM_R , SIMM_P } |
enum | Regulation { APRA , CFTC , ESA , FINMA , KFSC , HKMA , JFSA , MAS , OSFI , RBI , SEC , SEC_unseg , USPR , NONREG , BACEN , SANT , SFC , UK , AMFQ , Included , Unspecified , Invalid } |
SIMM regulators. More... | |
Static Public Member Functions inherited from SimmConfiguration | |
static std::set< RiskClass > | riskClasses (bool includeAll=false) |
Give back a set containing the RiskClass values optionally excluding 'All'. More... | |
static std::set< CrifRecord::RiskType > | riskTypes (bool includeAll=false) |
Give back a set containing the RiskType values optionally excluding 'All'. More... | |
static std::set< MarginType > | marginTypes (bool includeAll=false) |
Give back a set containing the MarginType values optionally excluding 'All'. More... | |
static std::set< CrifRecord::ProductClass > | productClasses (bool includeAll=false) |
Give back a set containing the ProductClass values optionally excluding 'All'. More... | |
static std::pair< CrifRecord::RiskType, CrifRecord::RiskType > | riskClassToRiskType (const RiskClass &rc) |
For a given risk class, return the corresponding risk types. More... | |
static RiskClass | riskTypeToRiskClass (const CrifRecord::RiskType &rt) |
For a given rirsk type, return the corresponding risk class. More... | |
static bool | less_than (const CrifRecord::ProductClass &lhs, const CrifRecord::ProductClass &rhs) |
Define ordering for ProductClass according to a waterfall: More... | |
static bool | greater_than (const CrifRecord::ProductClass &lhs, const CrifRecord::ProductClass &rhs) |
static bool | less_than_or_equal_to (const CrifRecord::ProductClass &lhs, const CrifRecord::ProductClass &rhs) |
static bool | greater_than_or_equal_to (const CrifRecord::ProductClass &lhs, const CrifRecord::ProductClass &rhs) |
static CrifRecord::ProductClass | maxProductClass (CrifRecord::ProductClass pc1, CrifRecord::ProductClass pc2) |
Return the "worse" ProductClass using a waterfall logic: More... | |
Protected Member Functions inherited from SimmConfigurationBase | |
SimmConfigurationBase (const QuantLib::ext::shared_ptr< SimmBucketMapper > &simmBucketMapper, const std::string &name, const std::string version, QuantLib::Size mporDays=10) | |
Constructor taking the SIMM configuration name and version . More... | |
const std::tuple< std::string, std::string, std::string > | makeKey (const std::string &, const std::string &, const std::string &) const |
QuantLib::Size | labelIndex (const std::string &label, const std::vector< std::string > &labels) const |
Helper method to find the index of the label in labels . More... | |
void | addLabels2Impl (const CrifRecord::RiskType &rt, const std::string &label_2) |
A base implementation of addLabels2 that can be shared by derived classes. More... | |
Protected Attributes inherited from SimmConfigurationBase | |
std::string | version_ |
SIMM configuration version. More... | |
QuantLib::ext::shared_ptr< SimmBucketMapper > | simmBucketMapper_ |
Used to map SIMM Qualifier names to SIMM bucket values. More... | |
QuantLib::ext::shared_ptr< SimmConcentration > | simmConcentration_ |
Used to get the concentration thresholds for a given risk type and qualifier. More... | |
std::map< CrifRecord::RiskType, std::vector< std::string > > | mapBuckets_ |
std::map< CrifRecord::RiskType, std::vector< std::string > > | mapLabels_1_ |
std::map< CrifRecord::RiskType, std::vector< std::string > > | mapLabels_2_ |
std::map< CrifRecord::RiskType, QuantLib::Real > | rwRiskType_ |
std::map< CrifRecord::RiskType, Amounts > | rwBucket_ |
std::map< CrifRecord::RiskType, Amounts > | rwLabel_1_ |
std::map< CrifRecord::RiskType, std::vector< QuantLib::Real > > | curvatureWeights_ |
std::map< CrifRecord::RiskType, QuantLib::Real > | historicalVolatilityRatios_ |
Map from risk type to a historical volatility ratio. More... | |
std::set< CrifRecord::RiskType > | validRiskTypes_ |
Set of valid risk types for the current configuration. More... | |
Amounts | riskClassCorrelation_ |
Risk class correlation matrix. More... | |
std::map< CrifRecord::RiskType, Amounts > | interBucketCorrelation_ |
std::map< CrifRecord::RiskType, Amounts > | intraBucketCorrelation_ |
QuantLib::Size | mporDays_ |
QuantLib::Real | xccyCorr_ |
QuantLib::Real | infCorr_ |
Correlation between any yield and inflation in same currency. More... | |
QuantLib::Real | infVolCorr_ |
Correlation between any yield volatility and inflation volatility in same currency. More... | |
QuantLib::Real | irSubCurveCorr_ |
IR Label2 level i.e. sub-curve correlation. More... | |
QuantLib::Real | irInterCurrencyCorr_ |
IR correlation across currencies. More... | |
QuantLib::Real | crqResidualIntraCorr_ |
Credit-Q residual intra correlation. More... | |
QuantLib::Real | crqSameIntraCorr_ |
Credit-Q non-residual intra correlation when same qualifier but different vertex/source. More... | |
QuantLib::Real | crqDiffIntraCorr_ |
Credit-Q non-residual intra correlation when different qualifier. More... | |
QuantLib::Real | crnqResidualIntraCorr_ |
Credit-NonQ residual intra correlation. More... | |
QuantLib::Real | crnqSameIntraCorr_ |
Credit-NonQ non-residual intra correlation when same underlying names. More... | |
QuantLib::Real | crnqDiffIntraCorr_ |
Credit-NonQ non-residual intra correlation when different underlying names. More... | |
QuantLib::Real | crnqInterCorr_ |
Credit-NonQ non-residual inter bucket correlation. More... | |
QuantLib::Real | fxCorr_ |
FX correlation. More... | |
QuantLib::Real | basecorrCorr_ |
Base correlation risk factor correlation. More... | |
Static Protected Attributes inherited from SimmConfiguration | |
static const QuantLib::Size | numberOfRiskClasses = riskClassMap.size() |
Number of risk classes including RiskClass::All. More... | |
static const QuantLib::Size | numberOfMarginTypes = marginTypeMap.size() |
Number of margin types including MarginType::All. More... | |
static const QuantLib::Size | numberOfRegulations = regulationsMap.size() |
Number of regulations. More... | |
Class giving the SIMM configuration as outlined in the document ISDA SIMM Methodology, version 2.6. Effective Date: December 2, 2023.
Definition at line 35 of file simmconfigurationcalibration.hpp.
SimmConfigurationCalibration | ( | const QuantLib::ext::shared_ptr< SimmBucketMapper > & | simmBucketMapper, |
const QuantLib::ext::shared_ptr< SimmCalibration > & | simmCalibration, | ||
const QuantLib::Size & | mporDays = 10 , |
||
const std::string & | name = "SIMM Calibration" |
||
) |
Definition at line 86 of file simmconfigurationcalibration.cpp.
|
overridevirtual |
Return the SIMM Label2 value for the given interest rate index.
Reimplemented from CrifConfiguration.
Definition at line 363 of file simmconfigurationcalibration.cpp.
|
overridevirtual |
Add SIMM Label2 values under certain circumstances.
Reimplemented from SimmConfigurationBase.
Definition at line 358 of file simmconfigurationcalibration.cpp.
|
overridevirtual |
Give back the scaling factor for the Interest Rate curvature margin
Reimplemented from SimmConfigurationBase.
Definition at line 356 of file simmconfigurationcalibration.cpp.
|
overridevirtual |
Return the SIMM risk weight for the given risk type rt
with the given qualifier
and the given label_1
. Three possibilities:
rt
rt
and qualifier
Reimplemented from SimmConfigurationBase.
Definition at line 43 of file simmconfigurationcalibration.cpp.
|
overridevirtual |
Return the correlation between the firstQualifier
with risk type firstRt
, Label1 value of firstLabel_1
and Label2 value of firstLabel_2
and the secondQualifier
with risk type secondRt
, Label1 value of secondLabel_1
and Label2 value of secondLabel_2
firstLabel_1
and secondLabel_1
, just enter an empty string for both. Similarly for firstLabel_2
and secondLabel_2
.Reimplemented from SimmConfigurationBase.
Definition at line 60 of file simmconfigurationcalibration.cpp.
|
overridevirtual |
Reimplemented from SimmConfiguration.
Definition at line 60 of file simmconfigurationcalibration.hpp.
|
private |
Find the group of the qualifier
.
Definition at line 25 of file simmconfigurationcalibration.cpp.
|
private |
Map giving a currency's FX Volatility group (High or Regular). This concept was introduced in ISDA Simm 2.2
Definition at line 69 of file simmconfigurationcalibration.hpp.
|
private |
IR Historical volatility ratio.
Definition at line 72 of file simmconfigurationcalibration.hpp.