@@ -218,15 +218,15 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
218218 auto itr = sensiParams.fxShiftData ().find (keylabel);
219219 QL_REQUIRE (itr != sensiParams.fxShiftData ().end (), " shiftData not found for " << keylabel);
220220 shiftSize = itr->second .shiftSize ;
221- if (parseShiftType ( itr->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
221+ if (itr->second .shiftType == ShiftType::Relative) {
222222 shiftMult = simMarket->fxRate (keylabel, marketConfiguration)->value ();
223223 }
224224 } break ;
225225 case RiskFactorKey::KeyType::EquitySpot: {
226226 auto itr = sensiParams.equityShiftData ().find (keylabel);
227227 QL_REQUIRE (itr != sensiParams.equityShiftData ().end (), " shiftData not found for " << keylabel);
228228 shiftSize = itr->second .shiftSize ;
229- if (parseShiftType ( itr->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
229+ if (itr->second .shiftType == ShiftType::Relative) {
230230 shiftMult = simMarket->equitySpot (keylabel, marketConfiguration)->value ();
231231 }
232232 } break ;
@@ -235,7 +235,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
235235 auto itr = sensiParams.discountCurveShiftData ().find (ccy);
236236 QL_REQUIRE (itr != sensiParams.discountCurveShiftData ().end (), " shiftData not found for " << ccy);
237237 shiftSize = itr->second ->shiftSize ;
238- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
238+ if (itr->second ->shiftType == ShiftType::Relative) {
239239 Size keyIdx = key.index ;
240240 Period p = itr->second ->shiftTenors [keyIdx];
241241 Handle<YieldTermStructure> yts = simMarket->discountCurve (ccy, marketConfiguration);
@@ -249,7 +249,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
249249 auto itr = sensiParams.indexCurveShiftData ().find (idx);
250250 QL_REQUIRE (itr != sensiParams.indexCurveShiftData ().end (), " shiftData not found for " << idx);
251251 shiftSize = itr->second ->shiftSize ;
252- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
252+ if (itr->second ->shiftType == ShiftType::Relative) {
253253 Size keyIdx = key.index ;
254254 Period p = itr->second ->shiftTenors [keyIdx];
255255 Handle<YieldTermStructure> yts = simMarket->iborIndex (idx, marketConfiguration)->forwardingTermStructure ();
@@ -263,7 +263,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
263263 auto itr = sensiParams.yieldCurveShiftData ().find (yc);
264264 QL_REQUIRE (itr != sensiParams.yieldCurveShiftData ().end (), " shiftData not found for " << yc);
265265 shiftSize = itr->second ->shiftSize ;
266- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
266+ if (itr->second ->shiftType == ShiftType::Relative) {
267267 Size keyIdx = key.index ;
268268 Period p = itr->second ->shiftTenors [keyIdx];
269269 Handle<YieldTermStructure> yts = simMarket->yieldCurve (yc, marketConfiguration);
@@ -278,7 +278,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
278278 QL_REQUIRE (itr != sensiParams.dividendYieldShiftData ().end (), " shiftData not found for " << eq);
279279 shiftSize = itr->second ->shiftSize ;
280280
281- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
281+ if (itr->second ->shiftType == ShiftType::Relative) {
282282 Size keyIdx = key.index ;
283283 Period p = itr->second ->shiftTenors [keyIdx];
284284 Handle<YieldTermStructure> ts = simMarket->equityDividendCurve (eq, marketConfiguration);
@@ -292,7 +292,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
292292 auto itr = sensiParams.fxVolShiftData ().find (pair);
293293 QL_REQUIRE (itr != sensiParams.fxVolShiftData ().end (), " shiftData not found for " << pair);
294294 shiftSize = itr->second .shiftSize ;
295- if (parseShiftType ( itr->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
295+ if (itr->second .shiftType == ShiftType::Relative) {
296296 vector<Real> strikes = sensiParams.fxVolShiftData ().at (pair).shiftStrikes ;
297297 QL_REQUIRE (strikes.size () == 1 && close_enough (strikes[0 ], 0 ), " Only ATM FX vols supported" );
298298 Real atmFwd = 0.0 ; // hardcoded, since only ATM supported
@@ -309,7 +309,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
309309 auto itr = sensiParams.equityVolShiftData ().find (pair);
310310 QL_REQUIRE (itr != sensiParams.equityVolShiftData ().end (), " shiftData not found for " << pair);
311311 shiftSize = itr->second .shiftSize ;
312- if (parseShiftType ( itr->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
312+ if (itr->second .shiftType == ShiftType::Relative) {
313313 Size keyIdx = key.index ;
314314 Period p = itr->second .shiftExpiries [keyIdx];
315315 Handle<BlackVolTermStructure> vts = simMarket->equityVol (pair, marketConfiguration);
@@ -322,7 +322,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
322322 auto itr = sensiParams.swaptionVolShiftData ().find (keylabel);
323323 QL_REQUIRE (itr != sensiParams.swaptionVolShiftData ().end (), " shiftData not found for " << keylabel);
324324 shiftSize = itr->second .shiftSize ;
325- if (parseShiftType ( itr->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
325+ if (itr->second .shiftType == ShiftType::Relative) {
326326 vector<Real> strikes = itr->second .shiftStrikes ;
327327 vector<Period> tenors = itr->second .shiftTerms ;
328328 vector<Period> expiries = itr->second .shiftExpiries ;
@@ -342,7 +342,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
342342 auto itr = sensiParams.yieldVolShiftData ().find (securityId);
343343 QL_REQUIRE (itr != sensiParams.yieldVolShiftData ().end (), " shiftData not found for " << securityId);
344344 shiftSize = itr->second .shiftSize ;
345- if (parseShiftType ( itr->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
345+ if (itr->second .shiftType == ShiftType::Relative) {
346346 vector<Real> strikes = itr->second .shiftStrikes ;
347347 QL_REQUIRE (strikes.size () == 1 && close_enough (strikes[0 ], 0.0 ),
348348 " shift strikes should be {0.0} for yield volatilities" );
@@ -364,7 +364,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
364364 auto itr = sensiParams.capFloorVolShiftData ().find (ccy);
365365 QL_REQUIRE (itr != sensiParams.capFloorVolShiftData ().end (), " shiftData not found for " << ccy);
366366 shiftSize = itr->second ->shiftSize ;
367- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
367+ if (itr->second ->shiftType == ShiftType::Relative) {
368368 vector<Real> strikes = itr->second ->shiftStrikes ;
369369 vector<Period> expiries = itr->second ->shiftExpiries ;
370370 QL_REQUIRE (strikes.size () > 0 , " Only strike capfloor vols supported" );
@@ -377,7 +377,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
377377 auto itr = sensiParams.cdsVolShiftData ().find (name);
378378 QL_REQUIRE (itr != sensiParams.cdsVolShiftData ().end (), " shiftData not found for " << name);
379379 shiftSize = itr->second .shiftSize ;
380- if (parseShiftType ( itr->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
380+ if (itr->second .shiftType == ShiftType::Relative) {
381381 vector<Period> expiries = itr->second .shiftExpiries ;
382382 Size keyIdx = key.index ;
383383 Size expIdx = keyIdx;
@@ -393,7 +393,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
393393 auto itr = sensiParams.creditCurveShiftData ().find (name);
394394 QL_REQUIRE (itr != sensiParams.creditCurveShiftData ().end (), " shiftData not found for " << name);
395395 shiftSize = itr->second ->shiftSize ;
396- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
396+ if (itr->second ->shiftType == ShiftType::Relative) {
397397 Size keyIdx = key.index ;
398398 Period p = itr->second ->shiftTenors [keyIdx];
399399 Handle<DefaultProbabilityTermStructure> ts = simMarket->defaultCurve (name, marketConfiguration)->curve ();
@@ -407,7 +407,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
407407 auto itr = sensiParams.baseCorrelationShiftData ().find (name);
408408 QL_REQUIRE (itr != sensiParams.baseCorrelationShiftData ().end (), " shiftData not found for " << name);
409409 shiftSize = itr->second .shiftSize ;
410- if (parseShiftType ( itr->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
410+ if (itr->second .shiftType == ShiftType::Relative) {
411411 vector<Real> lossLevels = itr->second .shiftLossLevels ;
412412 vector<Period> terms = itr->second .shiftTerms ;
413413 Size keyIdx = key.index ;
@@ -425,7 +425,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
425425 auto itr = sensiParams.zeroInflationCurveShiftData ().find (idx);
426426 QL_REQUIRE (itr != sensiParams.zeroInflationCurveShiftData ().end (), " shiftData not found for " << idx);
427427 shiftSize = itr->second ->shiftSize ;
428- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
428+ if (itr->second ->shiftType == ShiftType::Relative) {
429429 Size keyIdx = key.index ;
430430 Period p = itr->second ->shiftTenors [keyIdx];
431431 Handle<ZeroInflationTermStructure> yts =
@@ -440,7 +440,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
440440 auto itr = sensiParams.yoyInflationCurveShiftData ().find (idx);
441441 QL_REQUIRE (itr != sensiParams.yoyInflationCurveShiftData ().end (), " shiftData not found for " << idx);
442442 shiftSize = itr->second ->shiftSize ;
443- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
443+ if (itr->second ->shiftType == ShiftType::Relative) {
444444 Size keyIdx = key.index ;
445445 Period p = sensiParams.yoyInflationCurveShiftData ().at (idx)->shiftTenors [keyIdx];
446446 Handle<YoYInflationTermStructure> yts =
@@ -455,7 +455,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
455455 auto itr = sensiParams.yoyInflationCapFloorVolShiftData ().find (name);
456456 QL_REQUIRE (itr != sensiParams.yoyInflationCapFloorVolShiftData ().end (), " shiftData not found for " << name);
457457 shiftSize = itr->second ->shiftSize ;
458- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
458+ if (itr->second ->shiftType == ShiftType::Relative) {
459459 vector<Real> strikes = itr->second ->shiftStrikes ;
460460 vector<Period> expiries = itr->second ->shiftExpiries ;
461461 QL_REQUIRE (strikes.size () > 0 , " Only strike yoy inflation capfloor vols supported" );
@@ -474,7 +474,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
474474 auto itr = sensiParams.zeroInflationCapFloorVolShiftData ().find (name);
475475 QL_REQUIRE (itr != sensiParams.zeroInflationCapFloorVolShiftData ().end (), " shiftData not found for " << name);
476476 shiftSize = itr->second ->shiftSize ;
477- if (parseShiftType ( itr->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
477+ if (itr->second ->shiftType == ShiftType::Relative) {
478478 vector<Real> strikes = itr->second ->shiftStrikes ;
479479 vector<Period> expiries = itr->second ->shiftExpiries ;
480480 QL_REQUIRE (strikes.size () > 0 , " Only strike zc inflation capfloor vols supported" );
@@ -493,7 +493,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
493493 auto it = sensiParams.commodityCurveShiftData ().find (keylabel);
494494 QL_REQUIRE (it != sensiParams.commodityCurveShiftData ().end (), " shiftData not found for " << keylabel);
495495 shiftSize = it->second ->shiftSize ;
496- if (parseShiftType ( it->second ->shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
496+ if (it->second ->shiftType == ShiftType::Relative) {
497497 Period p = it->second ->shiftTenors [key.index ];
498498 Handle<PriceTermStructure> priceCurve = simMarket->commodityPriceCurve (keylabel, marketConfiguration);
499499 Time t = priceCurve->dayCounter ().yearFraction (asof, asof + p);
@@ -505,7 +505,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
505505 QL_REQUIRE (it != sensiParams.commodityVolShiftData ().end (), " shiftData not found for " << keylabel);
506506
507507 shiftSize = it->second .shiftSize ;
508- if (parseShiftType ( it->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
508+ if (it->second .shiftType == ShiftType::Relative) {
509509 Size moneynessIndex = key.index / it->second .shiftExpiries .size ();
510510 Size expiryIndex = key.index % it->second .shiftExpiries .size ();
511511 Real moneyness = it->second .shiftStrikes [moneynessIndex];
@@ -521,7 +521,7 @@ Real getShiftSize(const RiskFactorKey& key, const SensitivityScenarioData& sensi
521521 auto itr = sensiParams.securityShiftData ().find (keylabel);
522522 QL_REQUIRE (itr != sensiParams.securityShiftData ().end (), " shiftData not found for " << keylabel);
523523 shiftSize = itr->second .shiftSize ;
524- if (parseShiftType ( itr->second .shiftType ) == SensitivityScenarioGenerator:: ShiftType::Relative) {
524+ if (itr->second .shiftType == ShiftType::Relative) {
525525 shiftMult = 1.0 ;
526526 try {
527527 shiftMult = simMarket->securitySpread (keylabel, marketConfiguration)->value ();
0 commit comments