Skip to content

Commit 5225838

Browse files
pcaspersjenkins
authored andcommitted
QPR-12127 take gearing and spread into account
1 parent 51a6468 commit 5225838

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

QuantExt/qle/pricingengines/mcmultilegbaseengine.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -566,8 +566,8 @@ McMultiLegBaseEngine::CashflowInfo McMultiLegBaseEngine::createCashflowInfo(boos
566566
info.amountCalculator = [this, indexCcyIdx, sub, simTime, isFxLinked, fxLinkedForeignNominal,
567567
fxLinkedSourceCcyIdx, fxLinkedTargetCcyIdx, fxLinkedFixedFxRate](
568568
const Size n, const std::vector<std::vector<const RandomVariable*>>& states) {
569-
RandomVariable effectiveRate = lgmVectorised_[indexCcyIdx].subPeriodsRate(sub->index(), sub->fixingDates(),
570-
simTime, *states.at(0).at(0));
569+
RandomVariable fixing = lgmVectorised_[indexCcyIdx].subPeriodsRate(sub->index(), sub->fixingDates(),
570+
simTime, *states.at(0).at(0));
571571
RandomVariable fxFixing(n, 1.0);
572572
if (isFxLinked) {
573573
if (fxLinkedFixedFxRate != Null<Real>()) {
@@ -582,6 +582,7 @@ McMultiLegBaseEngine::CashflowInfo McMultiLegBaseEngine::createCashflowInfo(boos
582582
fxFixing = fxSource / fxTarget;
583583
}
584584
}
585+
RandomVariable effectiveRate = RandomVariable(n, sub->gearing()) * fixing + RandomVariable(n, sub->spread());
585586
return RandomVariable(n, (isFxLinked ? fxLinkedForeignNominal : sub->nominal()) * sub->accrualPeriod()) *
586587
effectiveRate * fxFixing;
587588
};

0 commit comments

Comments
 (0)