With rates rising, certain contracts, such as the USZ3, are prone to frequent CTD switches with sometimes large differences in the DV01 of an underlying CTD. Does anyone know of any resources for calculating the DVO1 for a treasury future that is prone to CTD change risk or alternatively any off the shelf solutions that can handle this? Bloomberg seems to have nothing. Thanks!

  • 1
    $\begingroup$ You can try this: rateslib.readthedocs.io/en/stable/api/…, needs some set up though. Interested in any feedback. $\endgroup$
    – Attack68
    Sep 28, 2023 at 20:55
  • $\begingroup$ Thanks you! Will definitely let you know if I'm able to get enough into it to provide some worthwhile feedback $\endgroup$
    – Tim W
    Sep 29, 2023 at 15:40

2 Answers 2


You are trying to calculate the so-called "option-adjusted DV01" (OA DV01). The nice thing about OA DV01 is that it's a smooth function of yield shifts. I'm going to be lazy here and simply post a figure from an ancient report titled "The Salomon Brothers Delivery Option Model" (Mark Koenigsberg, 1991):

enter image description here

As you can see, when yield level changes, the CTD's DV01 can of course jump around, but the model-based OA DV01 transitions smoothly.

If you don't want to calculate these numbers yourself, you can get them very easily from a lot of sell-side banks. At JP Morgan, for example, you’d search for “U.S. Treasury Future Basis Reference Sheet” and the numbers you are looking for are printed under “OA BPV.” At Barclays, you’d search for “CBOT Futures Multi-factor Analysis Report” and the numbers are printed next to “$ PV01.” Morgan Stanley also has "US Bond Futures Daily Report" and the label is simply "DV01." As a shameless plug, my current company also provides these numbers on the Augur Labs Infinity platform.

If you want to create a simple model to calculate this yourself, it’s actually not that difficult. Here's a highly stylized example:

  1. Imagine there are only two bonds that can be delivered into the contract.
  2. One of the bonds is the current CTD. Start by creating 1000 yield scenarios as of the delivery date for it (more scenarios would be better, but 1000 is a good starting point). For simplicity, you can assume that yield changes are normally distributed; the yield on the delivery date may have a mean corresponding to the current forward yield and a volatility inferred from bond futures options. Based on these yields, you can easily calculate the converted forward price for the current CTD at each yield level.
  3. For the other bond, let’s assume that the yield curve can only move in a parallel fashion, so now you have 1000 forwards yields for the other bond too, and you can again compute the converted forward prices.
  4. For each yield level, you’d compare the two bonds and see whose converted forward price is lower. That tells you who the CTD is for each yield level and you also know what the theoretical futures price should be at that yield level (simply the minimum converted forward price).
  5. Now it should be straightforward to summarize the delivery probability of each bond from step 4, as well as the futures model price (the probability-weighted futures price).
  6. To compute the OA DV01, you can simply perturb the initial yields by say 10 bps and see how much the probability-weighted futures price changes. Alternatively, you can calculate the probability-weighted DV01 (the former is preferred when we introduce more features into the model).

The simple model above ignores a lot of subtleties, which is only casually reviewed here:

  1. In Step 2, you can either use the CTD as the reference bond or an on-the-run bond as reference. I personally prefer the latter approach.
  2. In Step 2, you should also include a convexity adjustment to ensure that the probability-weighted forward price for each bond matches the current forward price, so that there's no arbitrage opportunity.
  3. In Step 3, instead of assuming parallel shifts of the yield curve, you can shift the other bonds using their historical yield betas to the reference bond.
  4. The model also ignores the a) timing option, b) the end of month option, and c) the wild card options. a) is not super valuable, but b) and c) can be meaningful. These are difficult to handle and I'd recommend consulting specialized readings. Instead of this kind of simplistic grids, a term structure model might be more suitable.
  5. This model is a single-factor model. The advantage is simplicity – you can literally create this model in Excel with a 2-dimensional grid (deliverables on one axis and yield levels on the other). Ideally, you’d use at least a two-factor model to more accurately capture relative yield movements. For a real-world example that implements this kind of two-factor model using a grid, search for "The Lehman Brothers Multifactor Futures Model" (Phil Weissman & Ralph Axel, 1997).
  • $\begingroup$ Great post, thank you! Do you know whether the ancient report you cited is still available or accessible somewhere? If not, do you have an alternative source to read about OA DV01 calculation? $\endgroup$
    – SI7
    Oct 1, 2023 at 19:17
  • $\begingroup$ Great answer. Really interesting. $\endgroup$
    – Attack68
    Oct 1, 2023 at 21:02
  • $\begingroup$ Amazing answer. Thank you, exactly what I was looking for and helped a ton. $\endgroup$
    – Tim W
    Oct 2, 2023 at 18:16
  • 1
    $\begingroup$ @TimW I just saw a podcast from JPM regarding this: overcast.fm/+yzQHigNI4 $\endgroup$
    – Helin
    Oct 3, 2023 at 4:36
  • 1
    $\begingroup$ I used this answer as the base to documenting some CTD analysis. I produced a chart similar to the above for the Dec 2023 30Y Treasury future. rateslib.readthedocs.io/en/latest/z_bondctd.html $\endgroup$
    – Attack68
    Nov 27, 2023 at 11:36

Bloomberg has everything ! USZ3 Comdty DLV gives the delivery basket. If you type CMS (go) it then shows how the ctd switches and the ensuing change in dv01 of the futures contract. Today it shows that a 40bp sell off causes the ctd to switch from 2040 bonds to 2042 bonds, with a dv01 change from 12.6 to 14.0.

  • $\begingroup$ Thanks, yeah I've been using that function to back into some rough approximations but was hoping they would have a single, probability weighted number somewhere. It seems like a lot of the CTD analysis related functions are fairly stale which sort of makes sense given switching hasn't really been an issue for the past 15+ years. Appreciate the response! $\endgroup$
    – Tim W
    Sep 29, 2023 at 15:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.