Bond futures are futures contracts where the commodity for delivery is a government bond. There are established global markets for government bond futures. Bond futures provide a liquid alternative for managing interest-rate risk.

In the U.S. market, the Chicago Mercantile Exchange (CME) offers futures on Treasury bonds and notes with maturities of 2, 5, 10, and 30 years. Typically, the following bond future contracts from the CME have maturities of 3, 6, 9, and 12 months:

The short position in a Treasury bond or note future contract must deliver to the long position in one of many possible existing Treasury bonds. For example, in a 30-year Treasury bond future, the short position must deliver a Treasury bond with at least 15 years to maturity. Because these bonds have different values, the bond future contract is standardized by computing a conversion factor. The conversion factor normalizes the price of a bond to a theoretical bond with a coupon of 6%. The price of a bond future contract is represented as:

$$InvoicePrice=FutPrice\times CF+AI$$

where:

*FutPrice* is the price of the bond future.

*CF* is the conversion factor for a bond to
deliver in a futures contract.

*AI* is the accrued interest.

The short position in a futures contract has the option of which bond to deliver and, in the U.S. bond market, when in the delivery month to deliver the bond. The short position typically chooses to deliver the bond known as the Cheapest to Deliver (CTD). The CTD bond most often delivers on the last delivery day of the month.

Financial Instruments Toolbox™ software supports the following bond futures:

U.S. Treasury bonds and notes

German Bobl, Bund, Buxl, and Schatz

UK gilts

Japanese government bonds (JGBs)

The functions supporting all bond futures are:

Function | Purpose |
---|---|

Calculates bond conversion factors for U.S. Treasury bonds, German Bobl, Bund, Buxl, and Schatz, U.K. gilts, and JGBs. | |

Prices bond future given repo rates. | |

Calculates implied repo rates for a bond future given price. |

The functions supporting U.S. Treasury bond futures are:

Function | Purpose |
---|---|

Calculates future prices of Treasury bonds given the spot price. | |

Calculates future prices of Treasury bonds given current yield. | |

Calculates implied repo rates for the Treasury bond future given price. | |

Calculates Treasury bond futures price given the implied repo rates. | |

Calculates Treasury bond futures yield given the implied repo rates. |

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.

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('10-Sep-2009','04-Jan-2019', .0375,'Convention',3,'startdate',... datenum('14-Nov-2008'))

CF2 = 0.8426

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

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

The Present Value of a Basis Point (PVBP) is used to manage interest-rate risk. PVBP is a measure that quantifies the change in price of a bond given a one-basis point shift in interest rates. The PVBP of a bond is computed with the following:

$$PVBPBond=\frac{Duration\times MarketValue}{100}$$

The PVBP of a bond futures contract can be computed with the following:

$$PVBPFutures=\frac{PVBPCTDBond}{CTDConversionFactor}$$

Use `bnddurp`

and `bnddury`

from Financial Toolbox™ software
to compute the modified durations of CTD bonds. For more information,
see Managing Interest Rate Risk with Bond Futures and Fitting the Diebold Li Model.

`bnddurp`

| `bnddury`

| `bndfutimprepo`

| `bndfutprice`

| `convfactor`

| `tfutbyprice`

| `tfutbyyield`

| `tfutimprepo`

| `tfutpricebyrepo`

| `tfutyieldbyrepo`

Was this topic helpful?