USD methodology — Treasury par to continuously-compounded zero
Last updated: 11 May 2026.
The problem
The US Treasury publishes a par yield curve at 14 fixed CMT tenors (1M, 1.5M, 2M, 3M, 4M, 6M, 1Y, 2Y, 3Y, 5Y, 7Y, 10Y, 20Y, 30Y) on a bond-equivalent-yield (BEY) basis. CarryCurve's static-curve carry & rolldown math (see /methodology) requires continuously-compounded zero-coupon rates. Using par yields directly would be approximately right at the long end and materially wrong at the short end and during steepening or flattening dynamics.
This page documents the bootstrap CarryCurve performs to convert Treasury's par yields into the zero rates the math needs. The bootstrap is methodologically standard (e.g. Hull, Options, Futures and Other Derivatives, §4.6) and is implemented in carrycurve/data/treasury_bootstrap.py.
The pipeline
- Take the published par yields at the 14 CMT tenors.
- Linearly interpolate the par yields across tenor onto a uniform half-year grid (0.5y, 1.0y, …, 30.0y). Treasury's grid is irregular (gaps at 4y, 6y, 8y, 9y, 11–19y, 21–29y); this step fills them in.
- Sequential bootstrap on the half-year grid:
- 0.5y: pure-bill BEY formula,
D(T) = (1 + c/2)-2T. - 1.0y: single-coupon recursive form,
D(1) = (1 - (c/2)·D(0.5)) / (1 + c/2). - 1.5y onwards: coupon bond bootstrap,
D(T) = (1 - (c/2)·Σ D(ti)) / (1 + c/2)whereΣruns over previously-computed half-year-grid discount factors.
- 0.5y: pure-bill BEY formula,
- Convert each discount factor to a continuously-compounded zero rate:
z(T) = -ln(D(T)) / T. - Validate (positive monotone-non-increasing discounts, plausible-rate sanity bounds, re-pricing of input par bonds to par ± 0.01). On failure the curve is refused and an ops alert fires.
§B.3 — Empirical worked example
Below is a full bootstrap trace against the Treasury par curve as of 2026-05-07. Each row shows the input par yield, the method used, the prior sum of discount factors used by the recursion (where applicable), the resulting discount factor, and the continuously-compounded zero rate.
| Tenor (y) | Par yield (% BEY) | Method | Σ prior D | D(T) | z(T) (%) |
|---|---|---|---|---|---|
| 0.08 | 4.300 | short-end-bill | — | 0.996461 | 4.2544 |
| 0.12 | 4.320 | short-end-bill | — | 0.994672 | 4.2740 |
| 0.17 | 4.340 | short-end-bill | — | 0.992870 | 4.2936 |
| 0.25 | 4.380 | short-end-bill | — | 0.989227 | 4.3327 |
| 0.33 | 4.420 | short-end-bill | — | 0.985533 | 4.3719 |
| 0.50 | 4.450 | short-end-bill | — | 0.978234 | 4.4012 |
| 1.00 | 4.450 | short-end-1y | 0.9782 | 0.956942 | 4.4012 |
| 1.50 | 4.425 | coupon-bootstrap | 1.9352 | 0.936465 | 4.3762 |
| 2.00 | 4.400 | coupon-bootstrap | 2.8716 | 0.916657 | 4.3511 |
| 2.50 | 4.400 | coupon-bootstrap | 3.7883 | 0.896925 | 4.3513 |
| 3.00 | 4.400 | coupon-bootstrap | 4.6852 | 0.877617 | 4.3515 |
| 3.50 | 4.413 | coupon-bootstrap | 5.5628 | 0.858333 | 4.3647 |
| 4.00 | 4.425 | coupon-bootstrap | 6.4212 | 0.839361 | 4.3779 |
| 4.50 | 4.438 | coupon-bootstrap | 7.2605 | 0.820698 | 4.3911 |
| 5.00 | 4.450 | coupon-bootstrap | 8.0812 | 0.802340 | 4.4044 |
| 5.50 | 4.475 | coupon-bootstrap | 8.8836 | 0.783695 | 4.4316 |
| 6.00 | 4.500 | coupon-bootstrap | 9.6673 | 0.765268 | 4.4588 |
| 6.50 | 4.525 | coupon-bootstrap | 10.4325 | 0.747062 | 4.4863 |
| 7.00 | 4.550 | coupon-bootstrap | 11.1796 | 0.729078 | 4.5139 |
| 7.50 | 4.575 | coupon-bootstrap | 11.9087 | 0.711318 | 4.5418 |
| 8.00 | 4.600 | coupon-bootstrap | 12.6200 | 0.693783 | 4.5699 |
| 8.50 | 4.625 | coupon-bootstrap | 13.3138 | 0.676475 | 4.5983 |
| 9.00 | 4.650 | coupon-bootstrap | 13.9903 | 0.659396 | 4.6270 |
| 9.50 | 4.675 | coupon-bootstrap | 14.6496 | 0.642545 | 4.6560 |
| 10.00 | 4.700 | coupon-bootstrap | 15.2922 | 0.625924 | 4.6853 |
| 10.50 | 4.713 | coupon-bootstrap | 15.9181 | 0.610543 | 4.6991 |
| 11.00 | 4.725 | coupon-bootstrap | 16.5287 | 0.595443 | 4.7132 |
| 11.50 | 4.737 | coupon-bootstrap | 17.1241 | 0.580619 | 4.7275 |
| 12.00 | 4.750 | coupon-bootstrap | 17.7047 | 0.566069 | 4.7420 |
| 12.50 | 4.763 | coupon-bootstrap | 18.2708 | 0.551787 | 4.7567 |
| 13.00 | 4.775 | coupon-bootstrap | 18.8226 | 0.537772 | 4.7717 |
| 13.50 | 4.787 | coupon-bootstrap | 19.3604 | 0.524018 | 4.7869 |
| 14.00 | 4.800 | coupon-bootstrap | 19.8844 | 0.510523 | 4.8023 |
| 14.50 | 4.812 | coupon-bootstrap | 20.3949 | 0.497282 | 4.8179 |
| 15.00 | 4.825 | coupon-bootstrap | 20.8922 | 0.484293 | 4.8338 |
| 15.50 | 4.838 | coupon-bootstrap | 21.3765 | 0.471551 | 4.8499 |
| 16.00 | 4.850 | coupon-bootstrap | 21.8480 | 0.459054 | 4.8662 |
| 16.50 | 4.862 | coupon-bootstrap | 22.3071 | 0.446797 | 4.8827 |
| 17.00 | 4.875 | coupon-bootstrap | 22.7539 | 0.434777 | 4.8995 |
| 17.50 | 4.888 | coupon-bootstrap | 23.1886 | 0.422991 | 4.9166 |
| 18.00 | 4.900 | coupon-bootstrap | 23.6116 | 0.411435 | 4.9339 |
| 18.50 | 4.913 | coupon-bootstrap | 24.0231 | 0.400106 | 4.9515 |
| 19.00 | 4.925 | coupon-bootstrap | 24.4232 | 0.389000 | 4.9693 |
| 19.50 | 4.938 | coupon-bootstrap | 24.8122 | 0.378115 | 4.9875 |
| 20.00 | 4.950 | coupon-bootstrap | 25.1903 | 0.367446 | 5.0059 |
| 20.50 | 4.948 | coupon-bootstrap | 25.5577 | 0.358888 | 4.9988 |
| 21.00 | 4.945 | coupon-bootstrap | 25.9166 | 0.350544 | 4.9918 |
| 21.50 | 4.943 | coupon-bootstrap | 26.2672 | 0.342411 | 4.9849 |
| 22.00 | 4.940 | coupon-bootstrap | 26.6096 | 0.334482 | 4.9781 |
| 22.50 | 4.938 | coupon-bootstrap | 26.9441 | 0.326752 | 4.9714 |
| 23.00 | 4.935 | coupon-bootstrap | 27.2708 | 0.319216 | 4.9647 |
| 23.50 | 4.933 | coupon-bootstrap | 27.5900 | 0.311869 | 4.9582 |
| 24.00 | 4.930 | coupon-bootstrap | 27.9019 | 0.304707 | 4.9517 |
| 24.50 | 4.928 | coupon-bootstrap | 28.2066 | 0.297725 | 4.9453 |
| 25.00 | 4.925 | coupon-bootstrap | 28.5043 | 0.290917 | 4.9389 |
| 25.50 | 4.923 | coupon-bootstrap | 28.7952 | 0.284280 | 4.9325 |
| 26.00 | 4.920 | coupon-bootstrap | 29.0795 | 0.277810 | 4.9262 |
| 26.50 | 4.918 | coupon-bootstrap | 29.3573 | 0.271501 | 4.9200 |
| 27.00 | 4.915 | coupon-bootstrap | 29.6288 | 0.265350 | 4.9137 |
| 27.50 | 4.913 | coupon-bootstrap | 29.8942 | 0.259354 | 4.9075 |
| 28.00 | 4.910 | coupon-bootstrap | 30.1535 | 0.253507 | 4.9013 |
| 28.50 | 4.907 | coupon-bootstrap | 30.4070 | 0.247807 | 4.8951 |
| 29.00 | 4.905 | coupon-bootstrap | 30.6549 | 0.242249 | 4.8889 |
| 29.50 | 4.902 | coupon-bootstrap | 30.8971 | 0.236829 | 4.8828 |
| 30.00 | 4.900 | coupon-bootstrap | 31.1339 | 0.231546 | 4.8766 |
Caveats
- Zero floor. Treasury floors published CMT yields at zero. In a negative-rate environment (rare for USD historically) a published 0.00% may correspond to slightly negative implied rates on the underlying inputs. CarryCurve inherits this floor.
- Off-the-run premium. CMTs are derived from on-the-run securities (most recently auctioned). The bootstrap therefore reflects an on-the-run zero curve.
- 7y / 20y kinks. The Treasury par curve has historically had structural kinks at the 7y and 20y points related to liquidity and supply. The bootstrap inherits these; the resulting zero curve is fair under the static-curve assumption but is not a fully-smoothed multi-bond fit.
- Sub-6M tenor handling. The 1M / 1.5M / 2M / 3M / 4M CMT rates correspond to bills, not coupon bonds. Treasury publishes the entire Daily Treasury Par Yield Curve — including these short-end tenors — on a single bond-equivalent yield (BEY) basis, converting the underlying bill yield to a BEY-comparable rate using Treasury's published methodology so the whole curve sits on a common compounding convention. CarryCurve therefore applies the same BEY-to-discount-factor formula
D(T) = (1 + c/2)-2Tat every tenor; no extra approximation is introduced at the short end. The product's sweet-spot search has a 1-year floor in any case, so these short-end discount factors appear in the bootstrap-trace table but never drive a displayed sweet-spot.