Skip to content

Commit ec54d7c

Browse files
pcaspersjenkins
authored andcommitted
QPR-11622 add a few add results to bond option
1 parent 8d62561 commit ec54d7c

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

QuantExt/qle/pricingengines/blackbondoptionengine.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ void BlackBondOptionEngine::calculate() const {
9393

9494
// compute price vol from yield vol
9595
Volatility fwdPriceVol;
96+
Real shift = 0.0;
9697
if (volatility_->volatilityType() == VolatilityType::Normal)
9798
fwdPriceVol = yieldVol * fwdDur;
9899
else {
@@ -101,7 +102,7 @@ void BlackBondOptionEngine::calculate() const {
101102
<< fwdYtm << ")");
102103
fwdPriceVol = yieldVol * fwdDur * fwdYtm;
103104
} else {
104-
Real shift = volatility_->shift(exerciseDate, underlyingLength);
105+
shift = volatility_->shift(exerciseDate, underlyingLength);
105106
QL_REQUIRE(fwdYtm > -shift, "BlackBondOptionEngine: input yield vols are shifted lognormal "
106107
<< shift << ", but yield (" << fwdYtm << ") is not greater than -shift ("
107108
<< -shift);
@@ -154,6 +155,13 @@ void BlackBondOptionEngine::calculate() const {
154155
results_.additionalResults["CashStrike"] = cashStrike;
155156
results_.additionalResults["FwdCashPrice"] = fwdNpv;
156157
results_.additionalResults["PriceVol"] = fwdPriceVol;
158+
results_.additionalResults["timeToExpiry"] = volatility_->timeFromReference(exerciseDate);
159+
results_.additionalResults["optionValue"] = optionValue;
160+
results_.additionalResults["yieldVol"] = yieldVol;
161+
results_.additionalResults["yieldVolShift"] = shift;
162+
results_.additionalResults["fwdDuration"] = fwdDur;
163+
results_.additionalResults["fwdYieldToMaturity"] = fwdYtm;
164+
157165
results_.additionalResults["AccruedAtExercise"] = arguments_.underlying->accruedAmount(exerciseDate)/100;
158166
// results_.additionalResults["CleanBondPrice"] = arguments_.underlying->cleanPrice();
159167
// results_.additionalResults["DirtyBondPrice"] = arguments_.underlying->dirtyPrice();

0 commit comments

Comments
 (0)