Skip to content

Commit 97e6af6

Browse files
committed
Merge branch 'feature/QPR-13614' into 'master'
QPR-13614 make indexed coupon fixing optional when fixingDate==valuationDate Closes QPR-13614 See merge request qs/oreplus!3079
2 parents efcae02 + db47aed commit 97e6af6

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

OREData/ored/portfolio/fixingdates.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -695,9 +695,10 @@ void FixingDateGetter::visit(QuantExt::SubPeriodsCoupon1& c) {
695695

696696
void FixingDateGetter::visit(IndexedCoupon& c) {
697697
// the coupon's index might be null if an initial fixing is provided
698-
if (c.index())
699-
requiredFixings_.addFixingDate(c.fixingDate(), IndexNameTranslator::instance().oreName(c.index()->name()),
700-
c.date());
698+
if (c.index()) {
699+
bool isTodaysFixing = Settings::instance().evaluationDate() == c.fixingDate();
700+
requiredFixings_.addFixingDate(c.fixingDate(), IndexNameTranslator::instance().oreName(c.index()->name()), c.date(), false, !isTodaysFixing);
701+
}
701702
QL_REQUIRE(c.underlying(), "FixingDateGetter::visit(IndexedCoupon): underlying() is null");
702703
c.underlying()->accept(*this);
703704
}
@@ -772,9 +773,11 @@ void FixingDateGetter::visit(CommodityCashFlow& c) {
772773

773774
void FixingDateGetter::visit(BondTRSCashFlow& bc) {
774775
if (bc.initialPrice() == Null<Real>() || requireFixingStartDates_) {
775-
requiredFixings_.addFixingDate(bc.fixingStartDate(), bc.index()->name(), bc.date());
776+
bool startTodaysFixing = Settings::instance().evaluationDate() == bc.fixingStartDate();
777+
requiredFixings_.addFixingDate(bc.fixingStartDate(), bc.index()->name(), bc.date(), false, !startTodaysFixing);
776778
}
777-
requiredFixings_.addFixingDate(bc.fixingEndDate(), bc.index()->name(), bc.date());
779+
bool endTodaysFixing = Settings::instance().evaluationDate() == bc.fixingEndDate();
780+
requiredFixings_.addFixingDate(bc.fixingEndDate(), bc.index()->name(), bc.date(), false, !endTodaysFixing);
778781
if (bc.fxIndex()) {
779782
requiredFixings_.addFixingDate(bc.fxFixingStartDate(),
780783
IndexNameTranslator::instance().oreName(bc.fxIndex()->name()), bc.date());

0 commit comments

Comments
 (0)