The swap spread at a given tenor is the swap rate minus the sovereign yield of matching maturity, for example, the 10-year SOFR swap rate minus the 10-year UST yield, or the 10-year INR OIS rate minus the 10-year G-Sec yield. E11.01 established the scaffold corporate yield = risk-free rate + credit spread, where the credit spread compensates for one issuer's probability of default. A swap spread is not that. Nobody is "borrowing" at the swap rate in the way a corporation borrows at its bond yield; the swap curve is a derived rate from a market of two-way fixed/floating exchanges, not a single issuer's cost of funds. A swap spread instead reflects a blend of: the credit and liquidity standing of the interbank/dealer sector broadly (not any one name); collateral and repo-market technicals (how scarce or cheap the sovereign bond is to borrow or post as collateral); regulatory balance-sheet cost (post-crisis leverage-ratio and capital rules make it costlier for a dealer's balance sheet to warehouse a swap position, which shows up in the spread); and sovereign bond supply and convenience-yield technicals (a government issuing heavily at a given tenor can cheapen that bond's price, raising its yield, relative to the swap rate, independent of anything to do with credit). Reading a swap spread through E11.01's credit-spread lens is a category error this module's Common Mistakes section returns to explicitly.
Advertisement
Why have long-end USD swap spreads been negative?
The single best-known illustration is the negative long-end USD swap spread: for an extended period since the mid-2010s, longer-tenor (10-year and beyond) SOFR (and, before the transition, LIBOR) swap rates have traded below the matching UST yield, a swap spread with the "wrong" sign, if you were expecting a swap (bank-sector) rate to sit above a sovereign (safest-possible) rate. This has been widely attributed to a combination of heavy Treasury issuance cheapening long UST prices, a safe-asset "convenience yield" that keeps UST yields structurally bid relative to swaps, and post-crisis regulatory costs that make dealers reluctant to run large swap-versus-Treasury balance-sheet positions, verify current levels and the prevailing explanation before relying on either, since both the sign and the consensus account of it have moved with the regulatory and issuance cycle. Worked Examples 4 and 5 compute both the India and US swap-spread term structures on this module's own synthetic curves and show the pattern directly.
How do you bootstrap a curve in code?
Modern Data Analysis. Nobody bootstraps a curve by typing numbers into a loop by hand in production. The realistic pipeline: pull today's par quotes live from a named source (FBIL's published G-Sec par curve, or the US Treasury's daily par yield curve feed) into a
pandasDataFrame; do the interpolation and sequential solve withnumpy(orscipy.optimize.brentqfor the YTM root-solve this module's off-the-run examples use); and, for anything beyond a teaching sketch, reach forQuantLib(via itsQuantLib-Pythonbindings), which ships production-grade curve classes (PiecewiseLogCubicDiscountand siblings) that do exactly this bootstrap with a choice of interpolation schemes and day-count conventions built in, battle-tested against the edge cases a hand-rolled loop will eventually hit. This exact workflow (live data via an API, bootstrap in pandas/numpy or QuantLib, visualize and diff against yesterday's curve) is precisely the kind of pipeline the quant-code region (the DA/QD branches) builds and hardens end to end; this module's job is to make sure you understand what the code must get right (the reprice proof, the forward-rate identity, the swap-equals-bond argument) not to engineer the production pipeline itself. Hand off there for the build; keep the verification discipline here.