# Documentation

## Bond Futures

### Supported Bond Futures

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×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

`convfactor`

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

`bndfutprice`

Prices bond future given repo rates.

`bndfutimprepo`

Calculates implied repo rates for a bond future given price.

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

Function

Purpose

`tfutbyprice`

Calculates future prices of Treasury bonds given the spot price.

`tfutbyyield`

Calculates future prices of Treasury bonds given current yield.

`tfutimprepo`

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

`tfutpricebyrepo`

Calculates Treasury bond futures price given the implied repo rates.

`tfutyieldbyrepo`

Calculates Treasury bond futures yield given the implied repo rates.

### 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:

1. Calculate bond conversion factors.

2. Calculate implied repo rates to find the CTD bond.

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

### Managing Present Value with Bond Futures

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×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.