| Fixed-Income Toolbox™ | ![]() |
| On this page… |
|---|
Fixed-Income Toolbox™ software also provides new functions that compute Treasury futures conversion factors and theoretical Treasury futures prices. This example shows how you can provide an input of eligible bonds and obtain its conversion factor to a 6% coupon rate (or against any other desired coupon rate). The example assumes no knowledge of the repo rate and instead uses the spot curve as the funding rate (tfutbyprice and tfutbyyield).
RefDate = [datenum('1-Dec-2002');
datenum('1-Mar-2003');
datenum('1-Jun-2003');
datenum('1-Sep-2003');
datenum('1-Dec-2003');
datenum('1-Sep-2003');
datenum('1-Dec-2002');
datenum('1-Jun-2003')];
Maturity = [datenum('15-Nov-2012');
datenum('15-Aug-2012');
datenum('15-Feb-2012');
datenum('15-Feb-2011');
datenum('15-Aug-2011');
datenum('15-Aug-2010');
datenum('15-Aug-2009');
datenum('15-Feb-2010')];
CouponRate = [0.04; 0.04375; 0.04875; 0.05;
0.05; 0.0575; 0.06; 0.065];
CF = convfactor(RefDate, Maturity, CouponRate)
CF =
0.8539
0.8858
0.9259
0.9418
0.9403
0.9862
1.0000
1.0266
You can check the results against the Chicago Board of Trade (http://www.cbot.com) 10-year futures contract table.
Coupon | Issue Date | Maturity Date | 6% Conversion Factors | |||||
|---|---|---|---|---|---|---|---|---|
| Dec-02 | Mar-03 | Jun-03 | Sep-03 | Dec-03 | Mar-04 | ||
4.00 | 11/15/02 | 11/15/12 | 0.8539 | 0.8568 | 0.8595 | 0.8625 | 0.8653 | 0.8683 |
4 3/8 | 08/15/02 | 08/15/12 | 0.8836 | 0.8858 | 0.8883 | 0.8905 | 0.893 | 0.8954 |
4 7/8 | 02/15/02 | 02/15/12 | 0.9226 | 0.9242 | 0.9259 | 0.9275 | 0.9293 | 0.931 |
5 | 02/15/01 | 02/15/11 | 0.9372 | 0.9386 | 0.9403 | 0.9418 | 0.9435 | 0.9451 |
5 | 08/15/01 | 08/15/11 | 0.9342 | 0.9356 | 0.9372 | 0.9386 | 0.9403 | 0.9418 |
5 1/2 | 05/17/99 | 05/15/09 | --- | --- | --- | --- | --- | --- |
5 3/4 | 08/15/00 | 08/15/10 | 0.9851 | 0.9854 | 0.9859 | 0.9862 | 0.9867 | --- |
6 | 08/16/99 | 08/15/09 | 1 | --- | --- | --- | --- | --- |
6 1/2 | 02/15/00 | 02/15/10 | 1.0282 | 1.0273 | 1.0266 | --- | --- | --- |
This computation can be incorporated into other functions that use conversion factors, such as routines to find the cheapest-to-deliver bonds. This is also equivalent to calculating the theoretical price of a particular set of bond futures prices.
A Treasury spot curve is necessary to discount the issue properly. MATLAB® software takes into account the actual/actual accrual basis and any intermittent coupons between the settlement and delivery dates. You can generate the spot curve using any set of Treasury bonds as long as the bonds cover the entire life of the futures in question.
% Computing the reference spot curve.
Bonds = [datenum('02/13/2003'), 0;
datenum('05/15/2003'), 0;
datenum('10/31/2004'), 0.02125;
datenum('11/15/2007'), 0.03;
datenum('11/15/2012'), 0.04;
datenum('02/15/2031'), 0.05375];
Yields = [1.20; 1.25; 1.86; 2.99; 4.02; 4.93] / 100;
Settle = datenum('11/15/2002');
[ZeroRates, CurveDates] = ...
zbtyield(Bonds, Yields, Settle);
% Computing theoretical futures T-bonds price.
SpotCurve = [CurveDates, ZeroRates];
RefDate = [datenum('1-Dec-2002'); datenum('1-Mar-2003')];
MatFut = [datenum('15-Dec-2002'); datenum('15-Mar-2003')];
Maturity = [datenum('15-Aug-2009'); datenum('15-Aug-2010')];
CouponRate = [0.06;0.0575];
CF = convfactor(RefDate, Maturity, CouponRate);
Price = [114.416; 113.171];
Interpolation = 1;
QtdFutPrice = tfutbyprice(SpotCurve, Price, Settle, ...
MatFut, CF, CouponRate, Maturity, Interpolation)
QtdFutPrice =
113.8129
112.4986
These quoted prices for December 2002 and March 2003 are comparable with futures prices of 113.93 and 112.68 traded that same hour at the Chicago Board of Trade. Without a live data feed, the data timings are asynchronous, but the results compare favorably for illustration purposes. These methods are well documented (such as in Hull 2000) and require some assumptions about the intended delivery date. Because of the short-term maturities on most bond futures, no convexity adjustment is needed.
When you know the repo rate, you can calculate theoretical prices with tfutpricebyrepo or tfutyieldbyrepo. Effectively, the known repo rate substitutes for the segment of the spot curve between the settlement and delivery dates.
Alternatively, you can calculate the cheapest-to-deliver (CTD) bonds by comparing the repo rates implied by bond current and future prices. A higher-cost bond, obviously, is not a candidate for the CTD bond, and vice versa.
Within a low-yield environment, you would like to compare implied repos on two bonds on the extremes of a deliverable 3 month contract for 10-year Treasury bonds. You expect that the CTD bond has a higher coupon and shorter maturity, and that this bond implies lower funding cost.
For example, two bonds on the extremes are a 6.5% coupon maturing February 15, 2010, and a 3.875% coupon maturing February 15, 2013. You would expect the 6.5% to be cheaper to deliver as implied by its lower funding rate. The price of the 6.5% is 118.439, and price of the 3.875% is 99.601.
Quoted futures price for June 2003 is 113.9219 (113-295). Today is March 27, 2003, and you intend to deliver on June 27, 2003 (92 days repo). There are no coupons to reinvest during this period.
The code that provides this information to the toolbox tfutimprepo function is
ReinvestData = [0.025 3];
Price = [118.300;
99.601];
QtdFutPrice = [113.9219;
113.9219];
Settle = datenum('03/27/2003');
MatFut = [datenum('27-Jun-2003');
datenum('27-Jun-2003')];
CF = [1.0266;
0.8478];
CouponRate = [0.06500;
0.03875];
Maturity = [datenum('15-Feb-2010');
datenum('15-Feb-2013')];
ImpliedRepo = tfutimprepo(ReinvestData, Price, QtdFutPrice, ...
Settle, MatFut, CF, CouponRate, Maturity)
ImpliedRepo =
0.0100
-0.0795
This result confirms that the CTD bond is indeed the 6.5% February 2010 bond, as it has the higher implied repo (ignoring transaction cost) before arbitrage can occur. The implied repo in MATLAB software is always returned on an actual/360 accrual basis.
Remember that this data is likely to be asynchronous and is useful for illustration purpose only.
Treasury futures hedge parameters are frequently measured with DV01, the dollar value when there is a one-basis-point shift. This is easily calculated by computing the duration of the underlying bond for the contract (the CTD bond), dividing it by its conversion factor, and multiplying it by its cash price. Use bnddurp and bnddury from Financial Toolbox™ software to compute modified durations of fixed-coupon bonds. Again, the facility provided by the Treasury bond futures functions easily leverages such tasks and lets you focus on more qualitative assessment of your routines.
![]() | Convertible Bond Valuation | Function Reference | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |