Analysis of Bond Futures
The following example demonstrates analyzing German Euro-Bund futures traded on Eurex.
However, convfactor
, bndfutprice
, and
bndfutimprepo
apply to bond futures in the U.S., U.K., Germany,
and Japan. The workflow for this analysis is:
Calculate bond conversion factors.
Calculate implied repo rates to find the CTD bond.
Price the bond future using the term implied repo rate.
Calculating Bond Conversion Factors
Use conversion factors to normalize the price of a particular bond for delivery in
a futures contract. When using conversion factors, the assumption is that a bond for
delivery has a 6% coupon. Use convfactor
to calculate
conversion factors for all bond futures from the U.S., Germany, Japan, and
U.K.
For example, conversion factors for Euro-Bund futures on Eurex are listed at www.eurexchange.com
. The delivery date for Euro-Bund
futures is the 10th day of the month, as opposed to bond futures in the U.S., where
the short position has the option of choosing when to deliver the bond.
For the 4% bond, compute the conversion factor with:
CF1 = convfactor('10-Sep-2009','04-Jul-2018', .04,.06,3)
CF1 = 0.8659
This syntax for convfactor
works fine for bonds with standard
coupon periods. However, some deliverable bonds have long or short first coupon
periods. Compute the conversion factors for such bonds using the optional input
parameters StartDate
and FirstCouponDate
.
Specify all optional input arguments for convfactor
as
parameter/value pairs:
CF2 = convfactor(datetime(2009,9,10),datetime(2019,1,4), .0375,'Convention',3,'startdate',... datetime(2008,11,14))
CF2 = 0.8426
Calculating Implied Repo Rates to Find the CTD Bond
To determine the availability of the cheapest bond for deliverable bonds against a
futures contract, compute the implied repo rate for each bond. The bond with the
highest repo rate is the cheapest because it has the lowest initial value, thus
yielding a higher return, provided you deliver it with the stated futures price. Use
bndfutimprepo
to calculate repo
rates:
% Bond Properties CouponRate = [.0425;.0375;.035]; Maturity = [datenum('04-Jul-2018');datenum('04-Jan-2019');datenum('04-Jul-2019')]; CF = [0.882668;0.842556;0.818193]; Price = [105.00;100.89;98.69]; % Futures Properties FutSettle = '09-Jun-2009'; FutPrice = 118.54; Delivery = '10-Sep-2009'; % Note that the default for BNDFUTIMPREPO is for the bonds to be % semi-annual with a day count basis of 0. Since these are German % bonds, we need to have a Basis of 8 and a Period of 1 ImpRepo = bndfutimprepo(Price, FutPrice, FutSettle, Delivery, CF, ... CouponRate, Maturity,'Basis',8,'Period',1)
ImpRepo = 0.0261 -0.0022 -0.0315
Pricing Bond Futures Using the Term Implied Repo Rate
Use bndfutprice
to perform price
calculations for all bond futures from the U.S., Germany, Japan, and U.K. To price
the bond, given a term repo rate:
% Assume a term repo rate of .0091; RepoRate = .0091; [FutPrice,AccrInt] = bndfutprice(RepoRate, Price(1), FutSettle,... Delivery, CF(1), CouponRate(1), Maturity(1),... 'Basis',8,'Period',1)
FutPrice = 118.0126 AccrInt = 0.7918
See Also
convfactor
| bndfutprice
| bndfutimprepo
| tfutbyprice
| tfutbyyield
| tfutimprepo
| tfutpricebyrepo
| tfutyieldbyrepo
| bnddurp
| bnddury
Related Examples
- Managing Present Value with Bond Futures
- Fitting the Diebold Li Model
- Managing Interest-Rate Risk with Bond Futures