Skip to content

FRM Part I · FRM Exam Part I

Bond Yields and Return Calculations: formula sheet

Full chapter guide

Key formulas

Price using spot rates (annual compounding)
P = Σ C ÷ (1 + zₜ)ᵗ + F ÷ (1 + zₙ)ⁿ
zₜ is the spot rate for time t. C is the coupon, F the face value. Each cash flow gets its own rate.
Price using yield (semiannual)
P = Σ (c/2 × F) ÷ (1 + y/2)ᵏ + F ÷ (1 + y/2)²ⁿ, k = 1 to 2n
Divide the annual yield and coupon by 2. The number of periods is 2 × years.
Zero-coupon bond price
P = F ÷ (1 + z)ᵀ
A single cash flow. Discount factor d(T) = 1 ÷ (1 + z)ᵀ.
Accrued interest
AI = Coupon per period × (days since last coupon ÷ days in coupon period)
The day count convention sets how both day numbers are counted.
Clean and dirty price
Dirty price = Clean price + Accrued interest
Rearrange to get the clean price from a computed full price.
Par, premium, discount rule
Coupon = yield → par; coupon > yield → premium; coupon < yield → discount
Holds on a coupon date. A quick check on your answer.
Discount factor from spot rate
DF(t) = 1 ÷ (1 + s_t)^t
Annual compounding. s_t is the t-year spot rate as a decimal.
Spot rate from discount factor
s_t = (1 ÷ DF(t))^(1/t) − 1
Use the y^x key on your calculator with 1/t as the exponent.
Par bond condition
1 = c × [DF(1) + DF(2) + … + DF(n)] + DF(n)
c is the annual par coupon rate per 1 of face value. The bond prices at par.
Bootstrapping the last discount factor
DF(n) = [1 − c_n × (DF(1) + … + DF(n−1))] ÷ (1 + c_n)
Needs the earlier discount factors. Work from the shortest maturity upward.
Forward rate from spot rates
(1 + s_T)^T = (1 + s_t)^t × (1 + f(t,T))^(T−t)
f(t,T) is the forward rate from time t to T. Rearrange to solve for f.
One-period forward from discount factors
f(t, t+1) = DF(t) ÷ DF(t+1) − 1
Fastest route once you have discount factors.
Par yield from discount factors
c_n = (1 − DF(n)) ÷ [DF(1) + … + DF(n)]
Annual coupons. The reverse of bootstrapping.
Bond price from YTM
P = Σ C/(1 + y/m)^t + F/(1 + y/m)^N
m = payments per year, t counts periods, N = total periods, C = coupon per period, F = face value. Solve for y with a financial calculator.
Current yield
Current yield = annual coupon ÷ market price
Uses the clean market price. Ignores capital gain or loss and time value.
Bond-equivalent yield
BEY = 2 × semiannual yield
Simple annualisation, no compounding within the year.
Effective annual rate
EAR = (1 + r/m)^m − 1
For a BEY, use m = 2 and r = BEY.
Continuous compounding
EAR = e^r − 1
r is the continuously compounded rate.
Discrete to continuous
r_c = m × ln(1 + r_m/m)
Converts a rate with m periods per year to its continuous equivalent.
Continuous to discrete
r_m = m × (e^(r_c/m) − 1)
Converts a continuous rate to a rate compounded m times a year.
Future value
FV = PV × (1 + r/m)^(mT) or PV × e^(rT)
T is in years.
Holding period return (bond)
HPR = (P1 − P0 + C) ÷ P0
P0 = purchase price, P1 = ending price, C = income received (coupons, plus reinvestment income if included). Use the full price (clean plus accrued) consistently.
Multi-period HPR
HPR = (1 + R1)(1 + R2)…(1 + Rn) − 1
Compounds the period returns. Do not add them.
Arithmetic mean return
R_A = (R1 + R2 + … + Rn) ÷ n
Best estimate of the expected return for a single future period. Overstates compound growth when returns vary.
Geometric mean return
R_G = [(1 + R1)(1 + R2)…(1 + Rn)]^(1/n) − 1
The compound average per period. R_G ≤ R_A.
Log return
r = ln(P1 ÷ P0) = ln(1 + R)
Multi-period log return is the sum of single-period log returns. Include income by using total value instead of price if required.
Simple from log return
R = e^r − 1
Converts a log return back to a simple return.
Realized compound yield (annual)
y = (Ending value ÷ P0)^(1/years) − 1
Ending value = sale price or principal + coupons + interest earned on reinvested coupons. For semiannual coupons, compute per half-year and then annualize as the question requires.
Future value of reinvested coupons
FV = C × [(1 + r)^n − 1] ÷ r
Ordinary annuity future value at the reinvestment rate r per coupon period, n coupons.
STRIPS / zero-coupon price
P = F ÷ (1 + y/2)^(2T)
Semiannual compounding is the Treasury convention. T is in years. For annual compounding use (1 + y)^T.
T-bill discount yield
d = (F − P) ÷ F × (360 ÷ t)
t is days to maturity. Base is face value, year is 360 days.
T-bill price from discount yield
P = F × (1 − d × t ÷ 360)
Rearranged form of the discount yield.
Bond equivalent yield (bill, t ≤ 182 days)
BEY = (F − P) ÷ P × (365 ÷ t)
Base is price paid, year is 365 days. This simple formula applies only to bills of 182 days or less. Longer bills need a quadratic adjustment, rarely tested.
Accrued interest
AI = Coupon × (days since last coupon ÷ days in coupon period)
Coupon is the semiannual payment. Count days by the stated convention.
Dirty price
Dirty = Clean + Accrued interest
The buyer pays the dirty price.
30/360 day count
Days = 360(Y2 − Y1) + 30(M2 − M1) + (D2 − D1)
Day 31 is usually treated as 30. Follow the exam's stated rule.

Quick revision

  • Bond price = present value of all coupons and principal, discounted at the appropriate rates.
  • Price and yield move in opposite directions.
  • A bond priced at par has coupon rate equal to yield; premium means coupon is above yield; discount means below.
  • A spot rate is the yield on a zero-coupon bond for a given maturity.
  • Forward rate link, annual compounding: (1 + s₂)² = (1 + s₁)(1 + f₁,₂).
  • The par rate is the coupon rate that prices a bond at par given the discount curve.
  • Yield to maturity is the single discount rate that equates price to cash flows.
  • Continuous compounding: FV = PV × e^(rt); convert before comparing with periodic rates.
  • Effective annual rate = (1 + y/m)^m − 1.
  • Dirty price = clean price + accrued interest.
  • A STRIP is a zero-coupon security created from separated Treasury coupon or principal payments.
  • Realized return depends on reinvestment rates and the sale price, so it can differ from the original yield.

Common mistakes

  • Using the annual yield and annual coupon with semiannual periods Fix: For semiannual bonds always use y/2, c/2 and N = 2 × years.
  • Discounting every cash flow at one rate when spot rates are given Fix: With a spot curve, use zₜ for each cash flow t. Only a yield uses one rate.
  • Treating the par yield as the spot rate for maturities beyond one year. Fix: Only the shortest maturity has par yield equal to spot rate. Bootstrap for every longer maturity.
  • Forgetting to include the final coupon plus principal as 1 + c in the last term. Fix: Write the par equation fully: 1 = c × (sum of DFs) + 1 × DF(n). Then divide by (1 + c) after moving the earlier terms across.
  • Treating BEY as an effective annual rate. Fix: BEY = 2 × semiannual rate. To get EAR, compound: (1 + BEY/2)² − 1.
  • Entering the annual coupon and annual years into the calculator for a semiannual bond. Fix: Use N = years × 2 and PMT = annual coupon ÷ 2. Multiply the resulting I/Y by 2 to quote YTM.
  • Averaging returns arithmetically when asked for growth of wealth over several periods. Fix: If the question asks about compound or annualized growth, use the geometric mean. Check that R_G ≤ R_A.
  • Adding multi-period simple returns, for example +50% and −50% giving 0%. Fix: Multiply growth factors: 1.5 × 0.5 = 0.75, a 25% loss. Only log returns add.
  • Using 365 days for the discount yield Fix: Discount yield uses 360 and face value. BEY uses 365 and price paid.
  • Dividing the discount by face value when computing BEY Fix: For BEY the base is the price paid P.

Exam tips

  • Check first whether the question asks for clean or dirty price. Wrong choice is a common trap answer option.
  • If options differ by about the accrued interest amount, the question is testing clean versus dirty.
  • Always match compounding to the rate given. Semiannual yields are often quoted as bond-equivalent yields.
  • Use the par rule to eliminate options. A 5% coupon bond priced at a 4% yield must be above par.
  • Keep four decimals in discount factors so rounding does not move you to a neighbouring option.
  • Questions often give par yields and ask for a forward rate. Plan for two stages: bootstrap to discount factors, then divide adjacent DFs.
  • Check the ordering on an upward curve: forward above spot, spot above par. If your answer violates this, recheck the arithmetic.
  • The simple approximation for forwards is usually close to the correct answer. Options may be built to catch you out, so compute exactly when options differ by small amounts.