Skip to content

Commit b7db1d7

Browse files
pcaspersjenkins
authored andcommitted
QPR-12192 set additional results in cap floor trade
1 parent 6f44d49 commit b7db1d7

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

OREData/ored/portfolio/capfloor.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)