|
From: Peter C. <pca...@gm...> - 2012-11-03 18:09:40
|
Hi,
I think the in arrears adjustment in couponpricer.cpp is computed
slightly wrong. Shouldn't it be like in the adjusted code below?
Thanks, Peter
ql/cashflows/couponpricer.cpp
// see Hull, 4th ed., page 550
QL_REQUIRE(!capletVolatility().empty(),
"missing optionlet volatility");
Date d1 = coupon_->fixingDate(),
+ d2 = coupon_->index()->valueDate(d1),
referenceDate = capletVolatility()->referenceDate();
if (d1 <= referenceDate) {
adjustement = 0.0;
} else {
- Date d2 = coupon_->index()->maturityDate(d1);
- Time tau =
coupon_->index()->dayCounter().yearFraction(d1, d2);
+ Date d3 = coupon_->index()->maturityDate(d2);
+ Time tau =
coupon_->index()->dayCounter().yearFraction(d2, d3);
Real variance = capletVolatility()->blackVariance(d1,
fixing);
adjustement = fixing*fixing*variance*tau/(1.0+fixing*tau);
}
|
|
From: pan z. <pan...@ga...> - 2012-11-03 18:11:15
|
http://www.xfcbbs.com/plugin.php?id=dsu_paulpromotionpro:dsu_paulpromotionpro On Sat, Nov 3, 2012 at 2:09 PM, Peter Caspers <pca...@gm...>wrote: > Hi, > > I think the in arrears adjustment in couponpricer.cpp is computed > slightly wrong. Shouldn't it be like in the adjusted code below? > > Thanks, Peter > > ql/cashflows/couponpricer.cpp > > // see Hull, 4th ed., page 550 > QL_REQUIRE(!capletVolatility().empty(), > "missing optionlet volatility"); > Date d1 = coupon_->fixingDate(), > + d2 = coupon_->index()->valueDate(d1), > referenceDate = capletVolatility()->referenceDate(); > if (d1 <= referenceDate) { > adjustement = 0.0; > } else { > - Date d2 = coupon_->index()->maturityDate(d1); > - Time tau = > coupon_->index()->dayCounter().yearFraction(d1, d2); > + Date d3 = coupon_->index()->maturityDate(d2); > + Time tau = > coupon_->index()->dayCounter().yearFraction(d2, d3); > Real variance = capletVolatility()->blackVariance(d1, > fixing); > adjustement = > fixing*fixing*variance*tau/(1.0+fixing*tau); > } > > > > > ------------------------------------------------------------------------------ > LogMeIn Central: Instant, anywhere, Remote PC access and management. > Stay in control, update software, and manage PCs from one command center > Diagnose problems and improve visibility into emerging IT issues > Automate, monitor and manage. Do more in less time with Central > http://p.sf.net/sfu/logmein12331_d2d > _______________________________________________ > QuantLib-dev mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > |
|
From: Luigi B. <lui...@gm...> - 2012-11-09 16:53:17
|
Hi Peter,
yes, your changes look correct to me. Can anyone else validate
them? Ferdinando?
Luigi
On Sat, Nov 3, 2012 at 7:09 PM, Peter Caspers <pca...@gm...> wrote:
> Hi,
>
> I think the in arrears adjustment in couponpricer.cpp is computed
> slightly wrong. Shouldn't it be like in the adjusted code below?
>
> Thanks, Peter
>
> ql/cashflows/couponpricer.cpp
>
> // see Hull, 4th ed., page 550
> QL_REQUIRE(!capletVolatility().empty(),
> "missing optionlet volatility");
> Date d1 = coupon_->fixingDate(),
> + d2 = coupon_->index()->valueDate(d1),
> referenceDate = capletVolatility()->referenceDate();
> if (d1 <= referenceDate) {
> adjustement = 0.0;
> } else {
> - Date d2 = coupon_->index()->maturityDate(d1);
> - Time tau =
> coupon_->index()->dayCounter().yearFraction(d1, d2);
> + Date d3 = coupon_->index()->maturityDate(d2);
> + Time tau =
> coupon_->index()->dayCounter().yearFraction(d2, d3);
> Real variance = capletVolatility()->blackVariance(d1,
> fixing);
> adjustement = fixing*fixing*variance*tau/(1.0+fixing*tau);
> }
>
>
>
> ------------------------------------------------------------------------------
> LogMeIn Central: Instant, anywhere, Remote PC access and management.
> Stay in control, update software, and manage PCs from one command center
> Diagnose problems and improve visibility into emerging IT issues
> Automate, monitor and manage. Do more in less time with Central
> http://p.sf.net/sfu/logmein12331_d2d
> _______________________________________________
> QuantLib-dev mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-dev
|
|
From: Luigi B. <lui...@gm...> - 2013-03-25 16:07:23
|
Peter,
I committed the fix. Thanks for the heads-up.
Luigi
On Sat, Nov 3, 2012 at 7:09 PM, Peter Caspers <pca...@gm...> wrote:
> Hi,
>
> I think the in arrears adjustment in couponpricer.cpp is computed
> slightly wrong. Shouldn't it be like in the adjusted code below?
>
> Thanks, Peter
>
> ql/cashflows/couponpricer.cpp
>
> // see Hull, 4th ed., page 550
> QL_REQUIRE(!capletVolatility().empty(),
> "missing optionlet volatility");
> Date d1 = coupon_->fixingDate(),
> + d2 = coupon_->index()->valueDate(d1),
> referenceDate = capletVolatility()->referenceDate();
> if (d1 <= referenceDate) {
> adjustement = 0.0;
> } else {
> - Date d2 = coupon_->index()->maturityDate(d1);
> - Time tau =
> coupon_->index()->dayCounter().yearFraction(d1, d2);
> + Date d3 = coupon_->index()->maturityDate(d2);
> + Time tau =
> coupon_->index()->dayCounter().yearFraction(d2, d3);
> Real variance = capletVolatility()->blackVariance(d1,
> fixing);
> adjustement = fixing*fixing*variance*tau/(1.0+fixing*tau);
> }
>
>
>
> ------------------------------------------------------------------------------
> LogMeIn Central: Instant, anywhere, Remote PC access and management.
> Stay in control, update software, and manage PCs from one command center
> Diagnose problems and improve visibility into emerging IT issues
> Automate, monitor and manage. Do more in less time with Central
> http://p.sf.net/sfu/logmein12331_d2d
> _______________________________________________
> QuantLib-dev mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-dev
|