Skip to content
All library documents

Diagnosing Fixed-Rate Bond Pricing Differences Across Valuation Tools

Article Quant Q&A · Author: Lisa Ann

Summary

The document investigates why three tools produce different clean prices for the same fixed-rate bond. It lists the bond’s coupon, maturity, yield, face value, and valuation inputs, then reports differing outputs from Bloomberg YAS, RQuantLib, and a Hoadley Excel function. The discussion highlights that pricing depends on consistent dates and conventions, not just coupon and yield.

One answer points out that QuantLib uses a global evaluation date that must be set explicitly. Another challenges the stated effective date, while a separate response approximates the remaining cash flows and discounts them at the stated yield to show why a price above par is plausible when the coupon exceeds the discount rate. The exchange does not fully reconcile all three tool outputs or isolate every convention, including settlement, accrued interest, and coupon timing. It is therefore a diagnostic example, not a complete cross-platform pricing guide.

Key ideas

  • Bond pricing functions can differ when their evaluation dates or bond conventions do not match.
  • QuantLib valuation requires an explicit evaluation date for the intended valuation.
  • The effective date should be checked against the bond’s actual terms.
  • A coupon above the discount rate can support a price above face value, subject to timing and conventions.

Tags

Full text
# RQuantLib, Hoadley and Bloomberg YAS: fixed rate bond pricing differences?


# RQuantLib, Hoadley and Bloomberg YAS: fixed rate bond pricing differences?












I'm trying to price a fixed rate bond one year from now on.

The bond is the PEUGOT 7 ⅜ 03/06/18, whose ISIN code is FR0011439975. I'm using such a specific example because in this way everyone can try to reproduce results.

I am using these instruments:

- Bloomberg `YAS` function

- `RQuantLib` package `FixedRateBondPriceByYield()` function

- Hoadley Excel add-in `HoadleyBond()` function

and getting different results.

Then there must be something wrong with me, because fixed rate bond pricing is an easy task.

Bond's features (`RQuantLib` / Hoadley fields name):

- faceAmount / principal $= 100$

- effectiveDate / Valuation_date = 10 May 2014

- maturityDate / Maturity = 6 March 2018

- rates / Coupon_rate $= 0.07375$

- period / Coupon_freq $= 1$ (Annual)

- yield / Term_struc $= 0.06535$ (flat curve due to pricing with YTM)

- redemption $= 100$

Other arguments, such as settlement days, calendar rules and so on, can be ignored because I don't need such an accuracy.

Results:

- Bloomberg `YAS` function clean price $= 102.72$

- `RQuantLib` package `FixedRateBondPriceByYield()` function clean price $= 96.67$

- Hoadley Excel add-in `HoadleyBond()` function clean price $= 103.31$

Where's my mistake? What am I not taking into consideration?

## Answer by Robin (score 2, accepted)

https://quant.stackexchange.com/a/14874

in RQuantLib you need to set the evaluation date using setEvaluationDate() This is the date used by all QuantLib valuation functions in your case 10 May 2014.

## Answer by Vince (score 3)

https://quant.stackexchange.com/a/7956

This is wrong: effectiveDate / Valuation_date = 10 May 2014

Good that you included the ISIN, which states that the effective date (as contrasted with the issue date) was a few days after 03 May 2013.

## Answer by wsw (score 2)

https://quant.stackexchange.com/a/7955

Let's approximate the time to maturity to be 3 years and 10 months. Assume that coupon is paid on March 6 each year. Let face value $F=100$ and coupon $c=0.07375F$. Let the discount factor be $d(0,T)=e^{−r T}$ where $r=0.06535$. The price of the bond is $$ce^{−10/12 \bullet r}+ce^{−22/12 \bullet r}+ce^{−34/12 \bullet r}+(F+c)e^{−46/12 \bullet r}=103.24 \; .$$ Since the discount rate $r$ < coupon rate, I don't see how the price of the bond can be less than 100.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.