Arte SheetsLearn. Try. Understand.

Fixed Income Trading & Cash-Futures Basis

Treasury Bond Futures Gross Basis & BNOC Formula

Calculate Deliverable Bond Gross Price Basis (Clean_Price - Futures * CF), Net Coupon-Minus-Repo Carry, Basis Net of Carry (BNOC), and Cheapest-to-Deliver (CTD) Cash-and-Carry Arbitrage Status.

Identify Cheapest-to-Deliver (CTD) Treasury bonds by minimizing Basis Net of Carry (BNOC)!

CME U.S. Treasury, Eurex Bund, and ICE Gilt bond futures allow the short seller to deliver ANY eligible basket bond adjusted by its official 6%-notional Conversion Factor CF (Invoice Principal = Futures_Price * CF). Because CF is an imperfect heuristic, one basket bond becomes Cheapest-to-Deliver (CTD)! Fixed-income desks decompose each bond’s pricing into: (1) Gross Price Basis = Clean_Bond_Price - Futures_Price * CF; (2) Net Carry = Accrued_Coupon_Carry - Repo_Financing_Cost over the holding period to delivery; and (3) Basis Net of Carry (Net Basis / BNOC) = Gross_Basis - Net_Carry! In an arbitrage-free market, BNOC >= 0 equals the fair price of the short’s embedded quality/wild-card/end-of-month delivery options; the basket bond with the LOWEST BNOC (and highest Implied Repo Rate) is CTD, and BNOC < 0 signals a pure cash-and-carry long-basis arbitrage!

Verify on Clean_Bond_Price = 102.50 pts (B2), Quoted_Futures_Price = 100.00 pts (B3), Conversion_Factor CF = 1.0150 (B4 -> Gross Basis = 102.50 - 101.50 = 1.0000 pt in E2), Horizon_Coupon_Income = 2.25 pts (B5), and Repo_Financing_Cost = 1.60 pts (B6 -> Net Positive Carry = +0.6500 pt in E3): Basis Net of Carry BNOC equals 1.0000 - 0.6500 = +0.3500 pts (E4), signaling "Positive BNOC (Embedded Delivery Option Value)" (E5)!

Treasury Cash-Futures Basis Metric (Cash=102.50, Fut=100.00, CF=1.015, Carry 2.25 - 1.60)FormulaVerified Output
Gross Price Basis (pts)Clean_Bond_Price - Futures_Price * CF1.0000 pt (0.3000 @ Cash=101.80)
Net Holding Carry (pts)Coupon_Income_Pts - Repo_Cost_Pts+0.6500 pt Positive Carry
Basis Net of Carry BNOC (pts)Gross_Basis - Net_Carry+0.3500 pt (-0.3500 @ Cash=101.80)
Desk Basis Arbitrage SignalBNOC < 0 vs BNOC = 0 vs BNOC > 0Positive BNOC (Embedded Delivery Option Value)

Treasury Futures Basis Net of Carry (BNOC) Formula

Validate positive Clean_Price, Futures_Price, Conversion_Factor CF, and non-negative Coupon/Repo carry inputs!

=LET(pr_c, B2, ft_p, B3, cf_b, B4, cp_y, B5, rp_c, B6, IF(OR(pr_c <= 0, ft_p <= 0, cf_b <= 0, cp_y < 0, rp_c < 0), "Invalid Bond Basis Input", LET(gr_b, pr_c - ft_p * cf_b, nt_c, cp_y - rp_c, ROUND(gr_b - nt_c, 4))))

Cash-and-Carry Arbitrage Trigger Check (BNOC < 0)

Cheapening cash bond price to 101.80 in cell B2 drops Gross Basis to 0.3000 and flips BNOC to -0.3500 ("Long Basis Arbitrage (Implied Repo > Market Repo)")!

=IF(ISTEXT(E4), E4, IF(E4 < 0, "Long Basis Arbitrage (Implied Repo > Market Repo)", IF(E4 = 0, "Zero-Option Fair Basis (BNOC = 0)", "Positive BNOC (Embedded Delivery Option Value)")))

Try the example

Use the original values or change them to test your understanding.

Further reading