@@ -558,10 +558,12 @@ const std::map<std::string, boost::any>& CapFloor::additionalData() const {
558558 vector<Rate> caps;
559559 vector<Rate> effectiveCaps;
560560 vector<Volatility> capletVols;
561+ vector<Volatility> effectiveCapletVols;
561562 vector<Real> capletAmounts;
562563 vector<Rate> floors;
563564 vector<Rate> effectiveFloors;
564565 vector<Volatility> floorletVols;
566+ vector<Volatility> effectiveFloorletVols;
565567 vector<Real> floorletAmounts;
566568
567569 try {
@@ -655,6 +657,7 @@ const std::map<std::string, boost::any>& CapFloor::additionalData() const {
655657 pricer->capletVolatility ()->volatility (tmp->fixingDate (), effectiveCap));
656658 capletAmounts.push_back (pricer->capletRate (effectiveCap) * coupon->accrualPeriod () *
657659 coupon->nominal ());
660+ effectiveCapletVols.push_back (tmp->effectiveCapletVolatility ());
658661 }
659662 if (tmp->isFloored ()) {
660663 floors.push_back (tmp->floor ());
@@ -664,6 +667,7 @@ const std::map<std::string, boost::any>& CapFloor::additionalData() const {
664667 pricer->capletVolatility ()->volatility (tmp->fixingDate (), effectiveFloor));
665668 floorletAmounts.push_back (pricer->floorletRate (effectiveFloor) *
666669 coupon->accrualPeriod () * coupon->nominal ());
670+ effectiveFloorletVols.push_back (tmp->effectiveFloorletVolatility ());
667671 }
668672 }
669673 } else if (auto tmp =
@@ -682,6 +686,7 @@ const std::map<std::string, boost::any>& CapFloor::additionalData() const {
682686 pricer->capletVolatility ()->volatility (tmp->fixingDate (), effectiveCap));
683687 capletAmounts.push_back (pricer->capletRate (effectiveCap) * coupon->accrualPeriod () *
684688 coupon->nominal ());
689+ effectiveCapletVols.push_back (tmp->effectiveCapletVolatility ());
685690 }
686691 if (tmp->isFloored ()) {
687692 floors.push_back (tmp->floor ());
@@ -691,6 +696,7 @@ const std::map<std::string, boost::any>& CapFloor::additionalData() const {
691696 pricer->capletVolatility ()->volatility (tmp->fixingDate (), effectiveFloor));
692697 floorletAmounts.push_back (pricer->floorletRate (effectiveFloor) *
693698 coupon->accrualPeriod () * coupon->nominal ());
699+ effectiveFloorletVols.push_back (tmp->effectiveFloorletVolatility ());
694700 }
695701 }
696702
@@ -709,6 +715,7 @@ const std::map<std::string, boost::any>& CapFloor::additionalData() const {
709715 pricer->capletVolatility ()->volatility (tmp->fixingDate (), effectiveCap));
710716 capletAmounts.push_back (pricer->capletRate (effectiveCap) * coupon->accrualPeriod () *
711717 coupon->nominal ());
718+ effectiveCapletVols.push_back (tmp->effectiveCapletVolatility ());
712719 }
713720 if (tmp->isFloored ()) {
714721 floors.push_back (tmp->floor ());
@@ -718,6 +725,7 @@ const std::map<std::string, boost::any>& CapFloor::additionalData() const {
718725 pricer->capletVolatility ()->volatility (tmp->fixingDate (), effectiveFloor));
719726 floorletAmounts.push_back (pricer->floorletRate (effectiveFloor) *
720727 coupon->accrualPeriod () * coupon->nominal ());
728+ effectiveFloorletVols.push_back (tmp->effectiveFloorletVolatility ());
721729 }
722730 }
723731 }
@@ -738,12 +746,14 @@ const std::map<std::string, boost::any>& CapFloor::additionalData() const {
738746 additionalData_[" effectiveCaps" ] = effectiveCaps;
739747 additionalData_[" capletVols" ] = capletVols;
740748 additionalData_[" capletAmounts" ] = capletAmounts;
749+ additionalData_[" effectiveCapletVols" ] = effectiveCapletVols;
741750 }
742751 if (floors.size () > 0 ) {
743752 additionalData_[" floors" ] = floors;
744753 additionalData_[" effectiveFloors" ] = effectiveFloors;
745754 additionalData_[" floorletVols" ] = floorletVols;
746755 additionalData_[" floorletAmounts" ] = floorletAmounts;
756+ additionalData_[" effectiveFloorletVols" ] = effectiveFloorletVols;
747757 }
748758
749759 } catch (std::exception& e) {
0 commit comments