|
From: Luigi B. <lui...@gm...> - 2023-02-03 13:41:15
|
Hello Francois, may you open an issue on GitHub for this if you haven't
already? Thanks!
Luigi
On Sun, Jul 31, 2022 at 7:19 PM Francois Botha <ig...@gm...> wrote:
> Hi all,
>
> I'm doing some fixed rate bond forward calculations and I'm trying to
> understand the forward value.
>
> In forward.cpp, the code is:
> Real Forward::forwardValue() const {
> calculate();
> return (underlyingSpotValue_ - underlyingIncome_ )/
> discountCurve_->discount(maturityDate_);
> }
>
> and in bondforward.cpp, the fields are set as:
> underlyingSpotValue_ = spotValue();
> underlyingIncome_ = spotIncome(incomeDiscountCurve_);
> and
> Real BondForward::spotValue() const {
> return bond_->dirtyPrice();
> }
>
> So underlyingSpotValue_ is hence the bond dirty price (per 100 nominal)
> and underlyingIncome_ is the value of the bond coupons, but not per 100
> nominal, but rather per the actual nominal of the bond.
>
> This looks like an unintended discrepancy in notional amounts and would
> explain why the forward price and NPV for the bond forwards aren't close to
> what I expect.
>
> There are however unit tests (e.g. testFuturesPriceReplication()) that
> explicitly test this.
>
> Looking forward to an expert opinion here.
>
> thanks
> Francois Botha
>
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|