#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. | |
void | addLabels2 (const CrifRecord::RiskType &rt, const std::string &label_2) override |
Add SIMM Label2 values under certain circumstances. | |
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. | |
const std::string & | version () const override |
Returns the SIMM configuration version. | |
const QuantLib::ext::shared_ptr< SimmBucketMapper > & | bucketMapper () const override |
Returns the SIMM bucket mapper used by the configuration. | |
bool | hasBuckets (const CrifRecord::RiskType &rt) const override |
Return true if the SIMM risk type rt has buckets. | |
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 |
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 | 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 . | |
QuantLib::Size | mporDays () const |
MPOR in days. | |
Public Member Functions inherited from SimmConfiguration | |
bool | hasBucketMapping (const CrifRecord::RiskType &rt, const std::string &qualifier) const override |
Return true if the SIMM risk type rt has buckets. | |
Public Member Functions inherited from CrifConfiguration | |
virtual std::string | label2 (const QuantLib::Period &p) const |
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. | |
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. | |
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'. | |
static std::set< CrifRecord::RiskType > | riskTypes (bool includeAll=false) |
Give back a set containing the RiskType values optionally excluding 'All'. | |
static std::set< MarginType > | marginTypes (bool includeAll=false) |
Give back a set containing the MarginType values optionally excluding 'All'. | |
static std::set< CrifRecord::ProductClass > | productClasses (bool includeAll=false) |
Give back a set containing the ProductClass values optionally excluding 'All'. | |
static std::pair< CrifRecord::RiskType, CrifRecord::RiskType > | riskClassToRiskType (const RiskClass &rc) |
For a given risk class, return the corresponding risk types. | |
static RiskClass | riskTypeToRiskClass (const CrifRecord::RiskType &rt) |
For a given rirsk type, return the corresponding risk class. | |
static bool | less_than (const CrifRecord::ProductClass &lhs, const CrifRecord::ProductClass &rhs) |
Define ordering for ProductClass according to a waterfall: | |
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: | |
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 . | |
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 . | |
void | addLabels2Impl (const CrifRecord::RiskType &rt, const std::string &label_2) |
A base implementation of addLabels2 that can be shared by derived classes. | |
Protected Attributes inherited from SimmConfigurationBase | |
std::string | version_ |
SIMM configuration version. | |
QuantLib::ext::shared_ptr< SimmBucketMapper > | simmBucketMapper_ |
Used to map SIMM Qualifier names to SIMM bucket values. | |
QuantLib::ext::shared_ptr< SimmConcentration > | simmConcentration_ |
Used to get the concentration thresholds for a given risk type and qualifier. | |
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. | |
std::set< CrifRecord::RiskType > | validRiskTypes_ |
Set of valid risk types for the current configuration. | |
Amounts | riskClassCorrelation_ |
Risk class correlation matrix. | |
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. | |
QuantLib::Real | infVolCorr_ |
Correlation between any yield volatility and inflation volatility in same currency. | |
QuantLib::Real | irSubCurveCorr_ |
IR Label2 level i.e. sub-curve correlation. | |
QuantLib::Real | irInterCurrencyCorr_ |
IR correlation across currencies. | |
QuantLib::Real | crqResidualIntraCorr_ |
Credit-Q residual intra correlation. | |
QuantLib::Real | crqSameIntraCorr_ |
Credit-Q non-residual intra correlation when same qualifier but different vertex/source. | |
QuantLib::Real | crqDiffIntraCorr_ |
Credit-Q non-residual intra correlation when different qualifier. | |
QuantLib::Real | crnqResidualIntraCorr_ |
Credit-NonQ residual intra correlation. | |
QuantLib::Real | crnqSameIntraCorr_ |
Credit-NonQ non-residual intra correlation when same underlying names. | |
QuantLib::Real | crnqDiffIntraCorr_ |
Credit-NonQ non-residual intra correlation when different underlying names. | |
QuantLib::Real | crnqInterCorr_ |
Credit-NonQ non-residual inter bucket correlation. | |
QuantLib::Real | fxCorr_ |
FX correlation. | |
QuantLib::Real | basecorrCorr_ |
Base correlation risk factor correlation. | |
Static Protected Attributes inherited from SimmConfiguration | |
static const QuantLib::Size | numberOfRiskClasses |
Number of risk classes including RiskClass::All. | |
static const QuantLib::Size | numberOfMarginTypes |
Number of margin types including MarginType::All. | |
static const QuantLib::Size | numberOfRegulations |
Number of regulations. | |
Class giving the SIMM configuration as outlined in the document ISDA SIMM Methodology, version 2.6. Effective Date: December 2, 2023.
|
overridevirtual |
Give back the scaling factor for the Interest Rate curvature margin
Reimplemented from SimmConfigurationBase.
|
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.
|
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.