The Analyst's Path

Matrix pricing

Matrix pricing estimates a yield for a bond that rarely or never trades, by interpolating across a grid of yields on comparable bonds that do trade, organised by credit rating and maturity. The arithmetic is simple. The judgement sits in the word comparable, because seniority, sector, optionality and liquidity all have to match. A matrix price is only as good as the assumptions you state beside it.

5 min readPart of Fixed-Income Instruments, Issuance and TradingOpen in course mode

Advertisement

Most bonds do not trade. A new issue has no price at all before it is sold, and an illiquid seasoned issue may not have traded for weeks. Matrix pricing is the standard method for producing a yield for such a bond by interpolating across a grid of yields on bonds that do trade, organised by credit rating and by maturity.

The method itself is only arithmetic. Assemble a matrix of yields on comparable bonds, with rating on one axis and maturity on the other. Interpolate along the maturity axis to the target's maturity, then along the rating axis to the target's rating, and price the target's own coupon and schedule at the resulting yield.

The difficulty is never in that arithmetic. It is in the word comparable.

Worked example: a six-year Indian debenture

Worked Example 1 does this on a synthetic Indian issuer. The matrix holds AA+ paper at 7.86% for five years and 8.06% for seven, and AA- paper at 8.34% and 8.60% at the same tenors. Treating AA as the midpoint of the notch ladder gives 8.100000% at five years and 8.330000% at seven, and interpolating to six years gives 8.215000%. A six-year 8.00% annual-coupon debenture of ₹10,00,000 face then prices at ₹990,125.304359, which is 99.012530 per 100, and the coupon that would have priced it at par is 8.21500000%.

Advertisement

Every one of those steps carries an assumption, and the honest version of matrix pricing states them.

Treating the notch ladder as evenly spaced in yield is a convenience nobody claims is true. Credit spreads widen non-linearly down the ladder, and the gap from AA- to A+ is usually wider than the gap from AA+ to AA. Move the AA point to 60% of the way toward AA- rather than 50% and the yield becomes 8.266000% and the price 98.780174 per 100, which is 0.232356 per 100 lower, or ₹232,356.13 on ₹10 crore of face. AA+ and AA- are two notches apart, so that shift is a fifth of a notch, and a fifth of a notch of judgement is worth close to a quarter of a point.

Linear interpolation along the maturity axis assumes a locally straight curve, which is a decent approximation between adjacent tenors and a poor one across a curve kink or a segment where supply is concentrated.

Which bonds count as comparable?

The comparables must actually be comparable, and this is where matrix pricing usually fails rather than in the arithmetic. Seniority has to match: a senior unsecured comparable cannot price a subordinated target. Sector has to match closely enough that the spread reflects credit rather than industry: a financial and an industrial at the same rating trade at different spreads, often by tens of basis points. Optionality has to match: a callable comparable carries an option premium in its yield that a bullet target has not sold, so importing that yield hands the target a spread it did not earn. Liquidity and issue size have to be in the same neighbourhood, because a small illiquid issue trades cheap for reasons that have nothing to do with credit.

Say the assumptions out loud when you report a matrix price. A price with two named assumptions attached is a professional output; the same price with no assumptions is a guess with decimal places.

{
  "skill": "Reconstructing an auction allocation and cross-checking a matrix-priced yield",
  "use": "Have a code assistant write the allocation loop for a competitive bid book under both the uniform-price and multiple-price rules, and separately a bilinear interpolation over a rating-by-maturity yield matrix, then run both against a case whose answer you have already worked by hand.",
  "tools": ["A code assistant for the first draft of the allocation and interpolation functions", "Python or a spreadsheet to run them", "The auction result published by the issuing authority, as the ground truth"],
  "prompt": "Write two small Python functions. The first takes a notified amount, a non-competitive amount and a list of (bidder, size, yield) competitive bids, and returns the allocation to each bidder, the stop-out yield, the pro-rata percentage at the stop-out, the bid-to-cover ratio, and total proceeds under (a) a uniform-price rule and (b) a multiple-price rule. The second takes a dict of (rating, maturity) to yield, plus a target rating and maturity, and returns the interpolated yield, raising an error rather than extrapolating if the target lies outside the grid. Include assertions that allotments sum to the notified amount and that no bidder receives more than it bid.",
  "verify": "Run the allocation function against a published auction result from the Reserve Bank of India or the US Treasury and confirm it reproduces the stated cut-off, the pro-rata percentage and the accepted amount exactly; a function that gets the ordering right and the partial fill wrong will look correct on most books and fail on the one that matters. For the interpolation, confirm by hand that the function refuses to extrapolate beyond the grid, then re-run it with the rating axis spaced unevenly and report both answers, because the spacing assumption moves the price more than the arithmetic does.",
  "diy": "You must be able to allocate a bid book on paper, identify the stop-out and compute the pro-rata fill, and interpolate a two-dimensional matrix by hand. Both are five-minute exercises and both are what the gate tests, because the code is only as good as your ability to see that its answer is wrong.",
  "market": "US"
}

Advertisement

Part of the course

This page is part of Fixed-Income Instruments, Issuance and Trading (FI1.05), in Phase 12: Finance Plus, AI and the quant-code track. The module's flashcards and its quiz are in the app.