Response to your question (I apologize that the equations look a little wonky in this medium)
Zero (ie, spot) rates:
The zero-coupon rate for the bond with 0.25 years maturity is its quoted yield, which is based on the standard discount rate formula:
Discount rate=((Face value)/Price-1)×12/(months to maturity)=(100/99.6-1)×12/3=1.6064%.
Normally, the 0.5 year zero would be treated the same way, which would result in a yield of 2.01%, but it appears that whoever designed this scenario opted to compound present value on a compounded basis:
solving for r:
99.005=100/(1+r)0.5 r= 2.02%
For the 1-year bond:
I assume that it’s a semiannual bond, so each coupon is half of 2.5, or 1.25.
You know the price, and you know the first semiannual discount rate, but you don’t know the second discount rate.
One-year spot rate is found as follows:
PV = CF1/ (1+r1)1 + CF2/ (1+r2)2+…+CFn/ (1+rn)n
100.3557=1.25/(1+(2.02%)/2)1 +101.25/(1+r/2)2
100.3557=1.2375+101.25/(1+r/2)2
r=2.14%
Repeating this for the 1.5- and 2-year bond results in spot rates of 2.24% and 2.70%, respectively.
Forward rates:
The rationale is that if you want to invest in a bond for one year, you have two choices:
- Invest for 6 months and then roll it over for another 6 months, or
- Invest for 1 year
With the first option, you know the first 6-month rate (2.02% in this case), but you take your chances for the next 6 months. The second option gives you a one-year guaranteed return of 2.15%. The forward rate for the second 6-month period is the rate that gives you the same amount of at the end of one year regardless of which option you select:
(1+first 6 month rate)(1+second 6 month rate)=(1+1 year rate)
Inserting numbers:
(1+.0202)0.5 (1+second 6 month rate)0.5=(1+.0215)
(1+second 6 month rate)0.5=1.0215/1.0100
Second 6 month rate=2.28% (or forward rate)