@@ -42,20 +42,39 @@ namespace analytics {
4242using RiskType = CrifRecord::RiskType;
4343
4444// Helper variable for switching risk type before lookup
45- const map<RiskType, RiskType> nonVolRiskTypeMap = {
46- {RiskType::IRVol, RiskType::IRCurve}, {RiskType::InflationVol, RiskType::IRCurve},
47- {RiskType::CreditVol, RiskType::CreditQ}, {RiskType::CreditVolNonQ, RiskType::CreditNonQ},
48- {RiskType::EquityVol, RiskType::Equity}, {RiskType::CommodityVol, RiskType::Commodity}};
45+ const map<RiskType, RiskType> nonVolRiskTypeMap = {{RiskType::IRVol, RiskType::IRCurve},
46+ {RiskType::InflationVol, RiskType::IRCurve},
47+ {RiskType::CreditVol, RiskType::CreditQ},
48+ {RiskType::CreditVolNonQ, RiskType::CreditNonQ},
49+ {RiskType::EquityVol, RiskType::Equity},
50+ {RiskType::CommodityVol, RiskType::Commodity},
51+ {RiskType::CSR_NS_VEGA, RiskType::CSR_NS_DELTA},
52+ {RiskType::CSR_SC_VEGA, RiskType::CSR_SC_DELTA},
53+ {RiskType::CSR_SNC_VEGA, RiskType::CSR_SNC_DELTA},
54+ {RiskType::EQ_VEGA, RiskType::EQ_DELTA},
55+ {RiskType::COMM_VEGA, RiskType::COMM_DELTA},
56+ {RiskType::GIRR_CURV, RiskType::GIRR_DELTA},
57+ {RiskType::CSR_NS_CURV, RiskType::CSR_NS_DELTA},
58+ {RiskType::CSR_SC_CURV, RiskType::CSR_SC_VEGA},
59+ {RiskType::CSR_SNC_CURV, RiskType::CSR_SNC_DELTA},
60+ {RiskType::EQ_CURV, RiskType::EQ_DELTA},
61+ {RiskType::COMM_CURV, RiskType::COMM_DELTA},
62+ {RiskType::FX_CURV, RiskType::FX_DELTA}};
4963
5064SimmBucketMapperBase::SimmBucketMapperBase (
5165 const boost::shared_ptr<ore::data::ReferenceDataManager>& refDataManager,
5266 const boost::shared_ptr<SimmBasicNameMapper>& nameMapper) :
5367 refDataManager_ (refDataManager), nameMapper_(nameMapper){
5468
5569 // Fill the set of risk types that have buckets
56- rtWithBuckets_ = {RiskType::IRCurve, RiskType::CreditQ, RiskType::CreditNonQ, RiskType::Equity,
57- RiskType::Commodity, RiskType::IRVol, RiskType::InflationVol, RiskType::CreditVol,
58- RiskType::CreditVolNonQ, RiskType::EquityVol, RiskType::CommodityVol};
70+ rtWithBuckets_ = {RiskType::IRCurve, RiskType::CreditQ, RiskType::CreditNonQ, RiskType::Equity,
71+ RiskType::Commodity, RiskType::IRVol, RiskType::InflationVol, RiskType::CreditVol,
72+ RiskType::CreditVolNonQ, RiskType::EquityVol, RiskType::CommodityVol, RiskType::GIRR_DELTA,
73+ RiskType::GIRR_CURV, RiskType::CSR_NS_DELTA, RiskType::CSR_NS_VEGA, RiskType::CSR_NS_CURV,
74+ RiskType::COMM_DELTA, RiskType::COMM_VEGA, RiskType::COMM_CURV, RiskType::CSR_SC_CURV,
75+ RiskType::CSR_SC_DELTA, RiskType::CSR_SC_VEGA, RiskType::CSR_SNC_CURV, RiskType::CSR_SNC_DELTA,
76+ RiskType::CSR_SNC_VEGA, RiskType::CSR_SNC_CURV, RiskType::EQ_CURV, RiskType::EQ_DELTA,
77+ RiskType::EQ_VEGA, RiskType::FX_CURV, RiskType::FX_DELTA};
5978}
6079
6180std::string BucketMapping::name () const {
@@ -94,7 +113,7 @@ string SimmBucketMapperBase::bucket(const RiskType& riskType, const string& qual
94113 }
95114
96115 // Deal with RiskType::IRCurve
97- if (lookupRiskType == RiskType::IRCurve) {
116+ if (lookupRiskType == RiskType::IRCurve || lookupRiskType == RiskType::GIRR_DELTA ) {
98117 return irBucket (qualifier);
99118 }
100119
@@ -105,12 +124,12 @@ string SimmBucketMapperBase::bucket(const RiskType& riskType, const string& qual
105124 bool haveFallback = has (lookupRiskType, lookupName, true );
106125 bool noBucket = !haveMapping && !haveFallback;
107126
108- if (noBucket && nameMapper_ != nullptr && lookupRiskType == RiskType::Equity) {
127+ if (noBucket && nameMapper_ != nullptr &&
128+ (lookupRiskType == RiskType::Equity || lookupRiskType == RiskType::EQ_DELTA)) {
109129 // if we have a simm name mapping we do a reverse lookup on the name as the CRIF qualifier isn't in reference data
110130 lookupName = nameMapper_->externalName (qualifier);
111131 haveMapping = has (lookupRiskType, lookupName, false );
112- haveFallback = has (lookupRiskType, lookupName, true );
113- noBucket = !haveMapping && ! haveFallback;
132+ noBucket = !haveMapping && !haveFallback;
114133 }
115134
116135 // Do some checks and return the lookup
0 commit comments