262 {
263
264
265
266 if (node.built)
267 return;
268
269 if (node.curveSpec == nullptr) {
270
271
272
274 "market object '" << node.obj << "' (" << node.name << ") without curve spec, this is unexpected.");
275 const string& swapIndexName = node.name;
276 const string& discountIndex = node.mapping;
277 addSwapIndex(swapIndexName, discountIndex, configuration);
278 DLOG(
"Added SwapIndex " << swapIndexName <<
" with DiscountingIndex " << discountIndex);
280 swapIndices_.at(std::make_pair(configuration, swapIndexName)).currentLink();
281
282 } else {
283
284
285
286 auto spec = node.curveSpec;
287 switch (spec->baseType()) {
288
289
291 QuantLib::ext::shared_ptr<YieldCurveSpec> ycspec = QuantLib::ext::dynamic_pointer_cast<YieldCurveSpec>(spec);
292 QL_REQUIRE(ycspec, "Failed to convert spec " << *spec << " to yield curve spec");
293
294 QuantLib::ext::shared_ptr<Conventions> conventions = InstrumentConventions::instance().conventions();
295
298 DLOG(
"Building YieldCurve for asof " <<
asof_);
299 QuantLib::ext::shared_ptr<YieldCurve>
yieldCurve = QuantLib::ext::make_shared<YieldCurve>(
304 DLOG(
"Added YieldCurve \"" << ycspec->name() <<
"\" to requiredYieldCurves map");
305 if (itr->second->currency().code() != ycspec->ccy()) {
306 WLOG(
"Warning: YieldCurve has ccy " << itr->second->currency() <<
" but spec has ccy "
307 << ycspec->ccy());
308 }
309 }
310
312 DLOG(
"Adding DiscountCurve(" << node.name <<
") with spec " << *ycspec <<
" to configuration "
313 << configuration);
315
317 DLOG(
"Adding YieldCurve(" << node.name <<
") with spec " << *ycspec <<
" to configuration "
318 << configuration);
320
322 DLOG(
"Adding Index(" << node.name <<
") with spec " << *ycspec <<
" to configuration "
323 << configuration);
324
328 QuantLib::ext::shared_ptr<IborIndex> rfrIndex;
329 auto f =
iborIndices_.find(make_pair(configuration, fallbackData.rfrIndex));
333 "Failed to build ibor fallback index '"
334 << node.name << "', did not find rfr index '" << fallbackData.rfrIndex
335 << "' in configuration '" << configuration
336 << "' or default - is the rfr index configuration in todays market parameters?");
337 }
338 auto oi = QuantLib::ext::dynamic_pointer_cast<OvernightIndex>(*f->second);
339 QL_REQUIRE(oi,
340 "Found rfr index '"
341 << fallbackData.rfrIndex << "' as fallback for ibor index '" << node.name
342 << "', but this is not an overnight index. Are the fallback rules correct here?");
343 if (auto original = QuantLib::ext::dynamic_pointer_cast<OvernightIndex>(tmpIndex))
344 tmpIndex = QuantLib::ext::make_shared<QuantExt::FallbackOvernightIndex>(
345 original, oi, fallbackData.spread, fallbackData.switchDate,
347 else
348 tmpIndex = QuantLib::ext::make_shared<QuantExt::FallbackIborIndex>(
349 tmpIndex, oi, fallbackData.spread, fallbackData.switchDate,
351 TLOG(
"built ibor fall back index for '" << node.name <<
"' in configuration " << configuration
352 << " using rfr index '" << fallbackData.rfrIndex
353 << "', spread " << fallbackData.spread
354 << ", will use rfr curve in t0 market: " << std::boolalpha
356 }
357 iborIndices_[make_pair(configuration, node.name)] = Handle<IborIndex>(tmpIndex);
358 } else {
359 QL_FAIL("unexpected market object type '"
360 << node.obj << "' for yield curve, should be DiscountCurve, YieldCurve, IndexCurve");
361 }
362 break;
363 }
364
365
367 DLOG(
"Building FXSpot (" << node.name <<
") does not require any action.");
368 break;
369 }
370
371
373 QuantLib::ext::shared_ptr<FXVolatilityCurveSpec> fxvolspec =
374 QuantLib::ext::dynamic_pointer_cast<FXVolatilityCurveSpec>(spec);
375 QL_REQUIRE(fxvolspec, "Failed to convert spec " << *spec);
376
377
380 DLOG(
"Building FXVolatility for asof " <<
asof_);
381 QuantLib::ext::shared_ptr<FXVolCurve> fxVolCurve = QuantLib::ext::make_shared<FXVolCurve>(
384 calibrationInfo_->fxVolCalibrationInfo[fxvolspec->name()] = fxVolCurve->calibrationInfo();
386 }
387
388 DLOG(
"Adding FXVol (" << node.name <<
") with spec " << *fxvolspec <<
" to configuration "
389 << configuration);
390 fxVols_[make_pair(configuration, node.name)] =
391 Handle<BlackVolTermStructure>(itr->second->volTermStructure());
392 break;
393 }
394
395
397 QuantLib::ext::shared_ptr<SwaptionVolatilityCurveSpec> swvolspec =
398 QuantLib::ext::dynamic_pointer_cast<SwaptionVolatilityCurveSpec>(spec);
399 QL_REQUIRE(swvolspec, "Failed to convert spec " << *spec);
400
403 DLOG(
"Building Swaption Volatility (" << node.name <<
") for asof " <<
asof_);
404 QuantLib::ext::shared_ptr<SwaptionVolCurve> swaptionVolCurve = QuantLib::ext::make_shared<SwaptionVolCurve>(
407 calibrationInfo_->irVolCalibrationInfo[swvolspec->name()] = swaptionVolCurve->calibrationInfo();
409 }
410
411 QuantLib::ext::shared_ptr<SwaptionVolatilityCurveConfig> cfg =
412 curveConfigs_->swaptionVolCurveConfig(swvolspec->curveConfigID());
413
414 DLOG(
"Adding SwaptionVol (" << node.name <<
") with spec " << *swvolspec <<
" to configuration "
415 << configuration);
417 Handle<SwaptionVolatilityStructure>(itr->second->volTermStructure());
419 cfg->proxySourceCurveId().empty()
420 ? make_pair(cfg->shortSwapIndexBase(), cfg->swapIndexBase())
421 : make_pair(cfg->proxyTargetShortSwapIndexBase(), cfg->proxyTargetSwapIndexBase());
422 break;
423 }
424
425
427 QuantLib::ext::shared_ptr<YieldVolatilityCurveSpec> ydvolspec =
428 QuantLib::ext::dynamic_pointer_cast<YieldVolatilityCurveSpec>(spec);
429 QL_REQUIRE(ydvolspec, "Failed to convert spec " << *spec);
432 DLOG(
"Building Yield Volatility for asof " <<
asof_);
433 QuantLib::ext::shared_ptr<YieldVolCurve> yieldVolCurve = QuantLib::ext::make_shared<YieldVolCurve>(
435 calibrationInfo_->irVolCalibrationInfo[ydvolspec->name()] = yieldVolCurve->calibrationInfo();
437 }
438 DLOG(
"Adding YieldVol (" << node.name <<
") with spec " << *ydvolspec <<
" to configuration "
439 << configuration);
441 Handle<SwaptionVolatilityStructure>(itr->second->volTermStructure());
442 break;
443 }
444
445
447 QuantLib::ext::shared_ptr<CapFloorVolatilityCurveSpec> cfVolSpec =
448 QuantLib::ext::dynamic_pointer_cast<CapFloorVolatilityCurveSpec>(spec);
449 QL_REQUIRE(cfVolSpec, "Failed to convert spec " << *spec);
450 QuantLib::ext::shared_ptr<CapFloorVolatilityCurveConfig> cfg =
451 curveConfigs_->capFloorVolCurveConfig(cfVolSpec->curveConfigID());
452
455 DLOG(
"Building cap/floor volatility for asof " <<
asof_);
456
457
458
459 std::string iborIndexName = cfg->index();
460 QuantLib::Period rateComputationPeriod = cfg->rateComputationPeriod();
463
464 if (!cfg->discountCurve().empty()) {
467 << cfg->discountCurve()
468 << ", not found in loaded yield curves");
470 }
471
472
473 QuantLib::ext::shared_ptr<IborIndex> sourceIndex, targetIndex;
474 if (!cfg->proxySourceCurveId().empty()) {
475 if (!cfg->proxySourceIndex().empty())
477 if (!cfg->proxyTargetIndex().empty()) {
479 iborIndexName = cfg->proxyTargetIndex();
480 rateComputationPeriod = cfg->proxyTargetRateComputationPeriod();
481 }
482 }
483
484
485 QuantLib::ext::shared_ptr<CapFloorVolCurve> capFloorVolCurve = QuantLib::ext::make_shared<CapFloorVolCurve>(
488 calibrationInfo_->irVolCalibrationInfo[cfVolSpec->name()] = capFloorVolCurve->calibrationInfo();
490 .insert(make_pair(
491 cfVolSpec->name(),
492 std::make_pair(capFloorVolCurve, std::make_pair(iborIndexName, rateComputationPeriod))))
493 .first;
494 }
495
496 DLOG(
"Adding CapFloorVol (" << node.name <<
") with spec " << *cfVolSpec <<
" to configuration "
497 << configuration);
499 Handle<OptionletVolatilityStructure>(itr->second.first->capletVolStructure());
501 break;
502 }
503
504
506 QuantLib::ext::shared_ptr<DefaultCurveSpec> defaultspec = QuantLib::ext::dynamic_pointer_cast<DefaultCurveSpec>(spec);
507 QL_REQUIRE(defaultspec, "Failed to convert spec " << *spec);
510
511 DLOG(
"Building DefaultCurve for asof " <<
asof_);
512 QuantLib::ext::shared_ptr<DefaultCurve>
defaultCurve = QuantLib::ext::make_shared<DefaultCurve>(
515 }
516 DLOG(
"Adding DefaultCurve (" << node.name <<
") with spec " << *defaultspec <<
" to configuration "
517 << configuration);
519 Handle<QuantExt::CreditCurve>(itr->second->creditCurve());
521 Handle<Quote>(QuantLib::ext::make_shared<SimpleQuote>(itr->second->recoveryRate()));
522 break;
523 }
524
525
527 QuantLib::ext::shared_ptr<CDSVolatilityCurveSpec> cdsvolspec =
528 QuantLib::ext::dynamic_pointer_cast<CDSVolatilityCurveSpec>(spec);
529 QL_REQUIRE(cdsvolspec, "Failed to convert spec " << *spec);
532 DLOG(
"Building CDSVol for asof " <<
asof_);
533 QuantLib::ext::shared_ptr<CDSVolCurve> cdsVolCurve = QuantLib::ext::make_shared<CDSVolCurve>(
536 }
537 DLOG(
"Adding CDSVol (" << node.name <<
") with spec " << *cdsvolspec <<
" to configuration "
538 << configuration);
539 cdsVols_[make_pair(configuration, node.name)] =
540 Handle<QuantExt::CreditVolCurve>(itr->second->volTermStructure());
541 break;
542 }
543
544
546 QuantLib::ext::shared_ptr<BaseCorrelationCurveSpec> baseCorrelationSpec =
547 QuantLib::ext::dynamic_pointer_cast<BaseCorrelationCurveSpec>(spec);
548 QL_REQUIRE(baseCorrelationSpec, "Failed to convert spec " << *spec);
551 DLOG(
"Building BaseCorrelation for asof " <<
asof_);
552 QuantLib::ext::shared_ptr<BaseCorrelationCurve> baseCorrelationCurve = QuantLib::ext::make_shared<BaseCorrelationCurve>(
554 itr =
556 .first;
557 }
558
559 DLOG(
"Adding Base Correlation (" << node.name <<
") with spec " << *baseCorrelationSpec
560 << " to configuration " << configuration);
562 Handle<QuantExt::BaseCorrelationTermStructure>(
563 itr->second->baseCorrelationTermStructure());
564 break;
565 }
566
567
569 QuantLib::ext::shared_ptr<InflationCurveSpec> inflationspec = QuantLib::ext::dynamic_pointer_cast<InflationCurveSpec>(spec);
570 QL_REQUIRE(inflationspec, "Failed to convert spec " << *spec << " to inflation curve spec");
573 DLOG(
"Building InflationCurve " << inflationspec->name() <<
" for asof " <<
asof_);
574 QuantLib::ext::shared_ptr<InflationCurve> inflationCurve = QuantLib::ext::make_shared<InflationCurve>(
578 inflationCurve->calibrationInfo();
579 }
580
582 DLOG(
"Adding ZeroInflationIndex (" << node.name <<
") with spec " << *inflationspec
583 << " to configuration " << configuration);
584 QuantLib::ext::shared_ptr<ZeroInflationTermStructure> ts =
585 QuantLib::ext::dynamic_pointer_cast<ZeroInflationTermStructure>(itr->second->inflationTermStructure());
586 QL_REQUIRE(ts,
587 "expected zero inflation term structure for index " << node.name << ", but could not cast");
588
591 }
592
594 DLOG(
"Adding YoYInflationIndex (" << node.name <<
") with spec " << *inflationspec
595 << " to configuration " << configuration);
596 QuantLib::ext::shared_ptr<YoYInflationTermStructure> ts =
597 QuantLib::ext::dynamic_pointer_cast<YoYInflationTermStructure>(itr->second->inflationTermStructure());
598 QL_REQUIRE(ts,
599 "expected yoy inflation term structure for index " << node.name << ", but could not cast");
601 Handle<YoYInflationIndex>(QuantLib::ext::make_shared<QuantExt::YoYInflationIndexWrapper>(
603 Handle<YoYInflationTermStructure>(ts)));
604 }
605 break;
606 }
607
608
610 QuantLib::ext::shared_ptr<InflationCapFloorVolatilityCurveSpec> infcapfloorspec =
611 QuantLib::ext::dynamic_pointer_cast<InflationCapFloorVolatilityCurveSpec>(spec);
612 QL_REQUIRE(infcapfloorspec, "Failed to convert spec " << *spec << " to inf cap floor spec");
615 DLOG(
"Building InflationCapFloorVolatilitySurface for asof " <<
asof_);
616 QuantLib::ext::shared_ptr<InflationCapFloorVolCurve> inflationCapFloorVolCurve =
620 .insert(make_pair(infcapfloorspec->name(), inflationCapFloorVolCurve))
621 .first;
622 }
623
625 DLOG(
"Adding InflationCapFloorVol (" << node.name <<
") with spec " << *infcapfloorspec
626 << " to configuration " << configuration);
628 Handle<CPIVolatilitySurface>(itr->second->cpiInflationCapFloorVolSurface());
629 }
630
632 DLOG(
"Adding YoYOptionletVolatilitySurface (" << node.name <<
") with spec " << *infcapfloorspec
633 << " to configuration " << configuration);
635 Handle<QuantExt::YoYOptionletVolatilitySurface>(itr->second->yoyInflationCapFloorVolSurface());
636 }
637 break;
638 }
639
640
642 QuantLib::ext::shared_ptr<EquityCurveSpec> equityspec = QuantLib::ext::dynamic_pointer_cast<EquityCurveSpec>(spec);
643 QL_REQUIRE(equityspec, "Failed to convert spec " << *spec);
646 DLOG(
"Building EquityCurve for asof " <<
asof_);
647 QuantLib::ext::shared_ptr<EquityCurve>
equityCurve = QuantLib::ext::make_shared<EquityCurve>(
651 }
652
653 DLOG(
"Adding EquityCurve (" << node.name <<
") with spec " << *equityspec <<
" to configuration "
654 << configuration);
656 itr->second->equityIndex()->equityDividendCurve();
657 equitySpots_[make_pair(configuration, node.name)] = itr->second->equityIndex()->equitySpot();
658 equityCurves_[make_pair(configuration, node.name)] = Handle<EquityIndex2>(itr->second->equityIndex());
659 IndexNameTranslator::instance().add(itr->second->equityIndex()->name(),
660 "EQ-" + itr->second->equityIndex()->name());
661 break;
662 }
663
664
666
667 QuantLib::ext::shared_ptr<EquityVolatilityCurveSpec> eqvolspec =
668 QuantLib::ext::dynamic_pointer_cast<EquityVolatilityCurveSpec>(spec);
669
670 QL_REQUIRE(eqvolspec, "Failed to convert spec " << *spec);
673 LOG(
"Building EquityVol for asof " <<
asof_);
674
675
676
677
678
679
681 QuantLib::ext::shared_ptr<EquityVolCurve> eqVolCurve = QuantLib::ext::make_shared<EquityVolCurve>(
686 calibrationInfo_->eqVolCalibrationInfo[eqvolspec->name()] = eqVolCurve->calibrationInfo();
687 }
688 string eqName = node.name;
689 DLOG(
"Adding EquityVol (" << eqName <<
") with spec " << *eqvolspec <<
" to configuration "
690 << configuration);
691
692 QuantLib::ext::shared_ptr<BlackVolTermStructure> bvts(itr->second->volTermStructure());
693
694
695
696
697
698 Handle<Quote> spot =
equitySpot(eqName, configuration);
699 Handle<YieldTermStructure> yts =
discountCurve(eqvolspec->ccy(), configuration);
701 bvts = QuantLib::ext::make_shared<QuantExt::BlackVolatilityWithATM>(bvts, spot, yts, divYts);
702
703 equityVols_[make_pair(configuration, node.name)] = Handle<BlackVolTermStructure>(bvts);
704 break;
705 }
706
707
709 QuantLib::ext::shared_ptr<SecuritySpec> securityspec = QuantLib::ext::dynamic_pointer_cast<SecuritySpec>(spec);
710 QL_REQUIRE(securityspec, "Failed to convert spec " << *spec << " to security spec");
713 DLOG(
"Building Securities for asof " <<
asof_);
714 QuantLib::ext::shared_ptr<Security> security =
717 }
718 DLOG(
"Adding Security (" << node.name <<
") with spec " << *securityspec <<
" to configuration "
719 << configuration);
720 if (!itr->second->spread().empty())
721 securitySpreads_[make_pair(configuration, node.name)] = itr->second->spread();
722 if (!itr->second->recoveryRate().empty())
723 recoveryRates_[make_pair(configuration, node.name)] = itr->second->recoveryRate();
724 if (!itr->second->cpr().empty())
725 cprs_[make_pair(configuration, node.name)] = itr->second->cpr();
726 break;
727 }
728
729
731 QuantLib::ext::shared_ptr<CommodityCurveSpec> commodityCurveSpec =
732 QuantLib::ext::dynamic_pointer_cast<CommodityCurveSpec>(spec);
733 QL_REQUIRE(commodityCurveSpec, "Failed to convert spec, " << *spec << ", to CommodityCurveSpec");
736 DLOG(
"Building CommodityCurve " << commodityCurveSpec->name() <<
" for asof " <<
asof_);
737 QuantLib::ext::shared_ptr<CommodityCurve> commodityCurve =
741 }
742
743 DLOG(
"Adding CommodityCurve, " << node.name <<
", with spec " << *commodityCurveSpec <<
" to configuration "
744 << configuration);
745 Handle<CommodityIndex> commIdx(itr->second->commodityIndex());
747 calibrationInfo_->commodityCurveCalibrationInfo[commodityCurveSpec->name()] = itr->second->calibrationInfo();
748 break;
749 }
750
751
753
754 QuantLib::ext::shared_ptr<CommodityVolatilityCurveSpec> commodityVolSpec =
755 QuantLib::ext::dynamic_pointer_cast<CommodityVolatilityCurveSpec>(spec);
756 QL_REQUIRE(commodityVolSpec, "Failed to convert spec " << *spec << " to commodity volatility spec");
759 DLOG(
"Building commodity volatility for asof " <<
asof_);
760 QuantLib::ext::shared_ptr<CommodityVolCurve> commodityVolCurve = QuantLib::ext::make_shared<CommodityVolCurve>(
764 calibrationInfo_->commVolCalibrationInfo[commodityVolSpec->name()] = commodityVolCurve->calibrationInfo();
765 }
766
767 string commodityName = node.name;
768 DLOG(
"Adding commodity volatility (" << commodityName <<
") with spec " << *commodityVolSpec
769 << " to configuration " << configuration);
770
771
772 QuantLib::ext::shared_ptr<BlackVolTermStructure> bvts(itr->second->volatility());
773 Handle<YieldTermStructure> discount =
discountCurve(commodityVolSpec->currency(), configuration);
775 Handle<YieldTermStructure> yield =
776 Handle<YieldTermStructure>(QuantLib::ext::make_shared<PriceTermStructureAdapter>(*priceCurve, *discount));
777 Handle<Quote> spot(QuantLib::ext::make_shared<SimpleQuote>(priceCurve->price(0, true)));
778
779 bvts = QuantLib::ext::make_shared<QuantExt::BlackVolatilityWithATM>(bvts, spot, discount, yield);
780 commodityVols_[make_pair(configuration, node.name)] = Handle<BlackVolTermStructure>(bvts);
781 break;
782 }
783
784
786 QuantLib::ext::shared_ptr<CorrelationCurveSpec> corrspec = QuantLib::ext::dynamic_pointer_cast<CorrelationCurveSpec>(spec);
789 DLOG(
"Building CorrelationCurve for asof " <<
asof_);
790 QuantLib::ext::shared_ptr<CorrelationCurve> corrCurve = QuantLib::ext::make_shared<CorrelationCurve>(
794 }
795
796 DLOG(
"Adding CorrelationCurve (" << node.name <<
") with spec " << *corrspec <<
" to configuration "
797 << configuration);
799 QL_REQUIRE(tokens.size() == 2, "Invalid correlation spec " << node.name);
801 Handle<QuantExt::CorrelationTermStructure>(itr->second->corrTermStructure());
802 break;
803 }
804
805 default: {
806 QL_FAIL("Unhandled spec " << *spec);
807 }
808
809 }
810 }
811
812 node.built = true;
813}
@ InflationCapFloorVolatility
const FallbackData & fallbackData(const string &iborIndex) const
bool useRfrCurveInTodaysMarket() const
bool isIndexReplaced(const string &iborIndex, const QuantLib::Date &asof=QuantLib::Date::maxDate()) const
Handle< YieldTermStructure > discountCurve(const string &ccy, const string &configuration=Market::defaultConfiguration) const
map< pair< string, string >, Handle< OptionletVolatilityStructure > > capFloorCurves_
Handle< QuantExt::EquityIndex2 > equityCurve(const string &eqName, const string &configuration=Market::defaultConfiguration) const override
map< tuple< string, string, string >, Handle< QuantExt::CorrelationTermStructure > > correlationCurves_
map< pair< string, string >, QuantLib::Handle< QuantExt::EquityIndex2 > > equityCurves_
map< pair< string, string >, Handle< CPIVolatilitySurface > > cpiInflationCapFloorVolatilitySurfaces_
map< pair< string, string >, Handle< BlackVolTermStructure > > fxVols_
map< tuple< string, YieldCurveType, string >, Handle< YieldTermStructure > > yieldCurves_
map< pair< string, string >, QuantLib::Handle< QuantExt::CommodityIndex > > commodityIndices_
map< pair< string, string >, Handle< QuantExt::CreditCurve > > defaultCurves_
Handle< YieldTermStructure > equityDividendCurve(const string &eqName, const string &configuration=Market::defaultConfiguration) const override
map< pair< string, string >, Handle< IborIndex > > iborIndices_
map< pair< string, string >, Handle< YoYOptionletVolatilitySurface > > yoyCapFloorVolSurfaces_
Handle< QuantExt::CreditCurve > defaultCurve(const string &, const string &configuration=Market::defaultConfiguration) const override
Default Curves and Recovery Rates.
map< pair< string, string >, Handle< YoYInflationIndex > > yoyInflationIndices_
map< pair< string, string >, Handle< QuantExt::CreditVolCurve > > cdsVols_
map< pair< string, string >, Handle< Quote > > equitySpots_
map< pair< string, string >, Handle< QuantLib::SwaptionVolatilityStructure > > swaptionCurves_
map< pair< string, string >, Handle< QuantExt::BaseCorrelationTermStructure > > baseCorrelations_
map< pair< string, string >, Handle< Quote > > cprs_
map< pair< string, string >, Handle< Quote > > recoveryRates_
QuantLib::Handle< QuantExt::PriceTermStructure > commodityPriceCurve(const string &commodityName, const string &configuration=Market::defaultConfiguration) const override
Commodity curves.
Handle< Quote > equitySpot(const string &eqName, const string &configuration=Market::defaultConfiguration) const override
Equity curves.
map< pair< string, string >, Handle< ZeroInflationIndex > > zeroInflationIndices_
map< pair< string, string >, pair< string, string > > swaptionIndexBases_
map< pair< string, string >, Handle< BlackVolTermStructure > > equityVols_
map< pair< string, string >, Handle< QuantLib::SwaptionVolatilityStructure > > yieldVolCurves_
map< pair< string, string >, Handle< SwapIndex > > swapIndices_
map< pair< string, string >, Handle< Quote > > securitySpreads_
Handle< YieldTermStructure > yieldCurve(const YieldCurveType &type, const string &ccy, const string &configuration=Market::defaultConfiguration) const override
Yield Curves.
Handle< IborIndex > iborIndex(const string &indexName, const string &configuration=Market::defaultConfiguration) const override
map< pair< string, string >, QuantLib::Handle< QuantLib::BlackVolTermStructure > > commodityVols_
void addSwapIndex(const string &swapindex, const string &discountIndex, const string &configuration=Market::defaultConfiguration) const
add a swap index to the market
map< pair< string, string >, std::pair< string, QuantLib::Period > > capFloorIndexBase_
map< string, QuantLib::ext::shared_ptr< GenericYieldVolCurve > > requiredGenericYieldVolCurves_
map< string, std::pair< QuantLib::ext::shared_ptr< CapFloorVolCurve >, std::pair< std::string, QuantLib::Period > > > requiredCapFloorVolCurves_
map< string, QuantLib::ext::shared_ptr< DefaultCurve > > requiredDefaultCurves_
map< string, QuantLib::ext::shared_ptr< FXVolCurve > > requiredFxVolCurves_
map< string, QuantLib::ext::shared_ptr< CommodityCurve > > requiredCommodityCurves_
map< string, map< string, QuantLib::ext::shared_ptr< SwapIndex > > > requiredSwapIndices_
map< string, QuantLib::ext::shared_ptr< CommodityVolCurve > > requiredCommodityVolCurves_
map< string, QuantLib::ext::shared_ptr< InflationCurve > > requiredInflationCurves_
map< string, QuantLib::ext::shared_ptr< BaseCorrelationCurve > > requiredBaseCorrelationCurves_
map< string, QuantLib::ext::shared_ptr< CorrelationCurve > > requiredCorrelationCurves_
map< string, QuantLib::ext::shared_ptr< EquityCurve > > requiredEquityCurves_
map< string, QuantLib::ext::shared_ptr< YieldCurve > > requiredYieldCurves_
map< string, QuantLib::ext::shared_ptr< CDSVolCurve > > requiredCDSVolCurves_
map< string, QuantLib::ext::shared_ptr< Security > > requiredSecurities_
map< string, QuantLib::ext::shared_ptr< InflationCapFloorVolCurve > > requiredInflationCapFloorVolCurves_
map< string, QuantLib::ext::shared_ptr< EquityVolCurve > > requiredEquityVolCurves_
QuantLib::ext::shared_ptr< ZeroInflationIndex > parseZeroInflationIndex(const string &s, const Handle< ZeroInflationTermStructure > &h)
Convert std::string to QuantLib::ZeroInflationIndex.
QuantLib::ext::shared_ptr< IborIndex > parseIborIndex(const string &s, const Handle< YieldTermStructure > &h)
Convert std::string to QuantLib::IborIndex.
@ YoYInflationCapFloorVol
@ ZeroInflationCapFloorVol