A yield curve is a table of prices. On a given day, for a given issuer and instrument, it states what a lender is paid to part with money for three months, one year, two, five, ten and thirty — and each of those numbers is a transaction price, or the mid of two, observed at a timestamp. Reading the curve means extracting from that table the three things it contains — a level, a slope and a shape — and stating them in units a reader can check.
It does not mean saying what the curve will do next. The forward rates inside a curve are breakevens, not expectations, and the difference between the two is the whole of the discipline. A read that says the curve is inverted has said something measurable about today’s quotes. A read that says the curve is inverted therefore a cut is coming has said something about the future that no arithmetic in the table supports, and the transition from the first sentence to the second is where most curve commentary stops being analysis.
What follows is the procedure: the six fields to establish before quoting a single yield, what a basis point is worth in money, the four spreads that carry the slope, a decomposition of the change from one curve to another that reconciles to the basis point, the forwards the curve implies and why they are not a forecast, and the decision that separates a curve read from a view about the economy.
Why the table is the whole of it
Every figure in a curve is a price divided by something. A par yield is the coupon that makes a bond trade at face. A zero yield is the rate at which a single cash flow is discounted. A bill quote is a discount rate on a face amount, which is not the same thing as a yield, and the conversion between the two is a two-line calculation that is skipped often enough to matter. A future’s implied yield is a forward starting at delivery, not a spot rate, and a swap rate is a par rate on a different credit and a different day count from the government bond beside it in the same row.
That list is not pedantry. Two curves read off two instruments are not comparable within a few basis points, and the comparison between them is usually the question. A five-year Treasury at 4.09 and a five-year swap at 4.09 are not the same 4.09; the gap between them is the swap spread, which is itself a price of balance-sheet and funding, and subtracting one from the other to “check” a quote produces a number with no meaning.
So the first act in any curve read is not the calculation. It is a statement of what is being held: the issuer, the instrument, the compounding, the source, and the moment. Everything downstream inherits those choices, and a curve quoted to two decimals from an unknown source is a shape without an argument.
Six fields before the first number
The checklist below is the one worth applying to any curve handed to you, including your own. Six lines, of which the last four are the ones usually missing.
- As-of. A date and a time, with a time zone. A curve is a snapshot; a curve without a timestamp is a claim that nothing moved, which is true only by accident.
- Instrument. The issuer and the type: government par curve, zero-coupon curve, bill strip, swap curve, future-implied. Name it, because a par yield and a zero yield at the same tenor differ by the coupon effect, and at the long end that difference is measurable.
- Compounding and frequency. Annual, semi-annual, continuous, simple money-market. The same curve converted between conventions moves several basis points at the front end, and a spread computed across two conventions inherits the error.
- Interpolation. Tenors are quoted and everything between them is invented. Linear on yield, linear on log-discount, cubic spline, monotone forward — each gives a different answer at 7 years, and the choice belongs in the note rather than in a code comment.
- Source and observation. A screen mid, a last trade, a composite. A mid is a quote about a quote; a last trade may be hours old at the long end where trading is thin.
- Nominal or real. A real curve has a different slope from a nominal one, and a breakeven is the difference between two curves rather than a series of its own.
The same six apply to a change between two dates. A curve compared to a curve from a month ago is being compared across two instrument sets, two vintages of the same issue, and sometimes two conventions, and the change is only as clean as the weaker of the two snapshots.
One curve, and four things that fall out of it
Table 1 is an illustrative snapshot for six tenors, with the same curve a month earlier set beside it. The figures are constructed for this piece; they describe no government’s curve and are not drawn from any release. Table 2 computes the four spreads from those six levels. What matters in both is the structure: levels, a difference column in basis points, and spreads that any reader can recompute.
Table 1. An illustrative nominal par curve at six tenors, with the same curve one month earlier and the change per tenor. Source: constructed for this piece; illustrative only, not a market observation.
| Tenor | Curve now (%) | One month earlier (%) | Change (bp) |
|---|---|---|---|
| 3m | 4.62 | 4.85 | −23 |
| 1y | 4.31 | 4.60 | −29 |
| 2y | 4.18 | 4.47 | −29 |
| 5y | 4.09 | 4.35 | −26 |
| 10y | 4.24 | 4.44 | −20 |
| 30y | 4.51 | 4.62 | −11 |
The four spreads the curve carries are computed from those six numbers, and they are the second thing a reader needs beside the snapshot rather than inside it.
Table 2. The four spreads, computed from Table 1, and the change in each over the month. Basis points. Source: constructed from Table 1.
| Spread | Now (bp) | A month earlier (bp) | Change (bp) |
|---|---|---|---|
| 2s10s | +6 | −3 | +9 |
| 3m10s | −38 | −41 | +3 |
| 3m2s | −44 | −38 | −6 |
| 10s30s | +27 | +18 | +9 |
Four observations fall out of the two tables before any interpretation, and each is a computation rather than a judgement.
The level fell. Every tenor is lower than it was a month earlier, by between 11 and 29 basis points. That is one fact about the curve, and it is the whole of the fact.
The slope changed sign in the middle of the curve and steepened at both ends of the long half, while the very front inverted further. The 2s10s spread went from −3 to +6 basis points, a 9 basis point steepening; the 3m10s went from −41 to −38, a 3 basis point steepening; the 10s30s went from +18 to +27, a 9 basis point steepening. The 3m2s spread, the front of the curve, flattened by 6 basis points, from −38 to −44.
The shape label depends on which spread is quoted. On 2s10s the curve is upward sloping at +6; on 3m10s it is inverted by 38 basis points. Both statements are true of the same six numbers, which is why a shape label without the pair beside it is unfalsifiable.
The curvature changed. The 5-year sits 47.5 basis points below the average of the 3-month and the 30-year on the current curve, against 38.5 basis points on the earlier one: the belly fell 9 basis points more than the average of the two wings. That is the sort of statement the decomposition below makes exact, and it is not visible in any single spread.
What a basis point is worth
A basis point is one hundredth of a percentage point, and its cash value depends on duration rather than on the yield. The arithmetic is short enough to do on one bond.
Take a ten-year bond with a 4.00 per cent coupon, priced to yield 4.24. Its price is 98.0764 per 100 of face. Reprice it at 4.18 — a 6 basis point fall in yield — and it is worth 98.5530. The 6 basis points are 0.4766 points of price, which is $0.0794 on $100 of face for each basis point, and it is a 0.49 per cent gain on the position for a move most readers would call small.
That number is what makes a curve read worth doing at all: the differences in the table above run from 3 to 29 basis points, and 29 basis points on a ten-year position is about 2.3 points of price. The same 29 basis points on a two-year position is worth roughly a quarter of that, because modified duration at two years is about 1.9 against 8.08 at ten. A curve read that reports spreads in basis points and stops has reported the input to the question rather than the answer.
Two cautions attach to the calculation. Duration is a local approximation: it is exact only for an infinitesimal move, and for a 29 basis point move the second-order term is small but not zero — the convexity term on the bond above adds about 0.03 points, around 1.4 per cent of the move. And duration differs by instrument: a floater, a callable, a linker and a bond trading at a deep discount do not have the same response to a parallel shift, so a curve read that prices the move in one instrument’s duration is pricing it in that instrument.
Reading the change: level, slope, curvature
The shift from one curve to another looks like six unrelated numbers until it is decomposed, and the decomposition that works on three tenors is arithmetic rather than estimation. Take the 3-month, the 5-year and the 30-year: changes of −23, −26 and −11 basis points. Three quantities carry them exactly.
The level is the average change, (−23 − 26 − 11) ÷ 3 = −20.00 basis points. The slope is the change in the long-to-short spread, −11 − (−23) = +12 basis points, a steepening. The curvature is where the belly sits once level and slope are netted out, and the convention that keeps the parts summing to the whole is to give the belly twice the curvature weight of each wing.
Table 3 applies it. Every row adds to the change in Table 1, and the curvature column sums to zero, which is the invariant to test before believing any decomposition.
Table 3. The change from the earlier curve to the current one, decomposed across three tenors into a level part, a slope part and a curvature part, in basis points. Each row sums to the change in Table 1; the curvature parts sum to zero by construction. Source: constructed from Table 1.
| Tenor | Change | Level | Slope | Curvature | Sum |
|---|---|---|---|---|---|
| 3m | −23.00 | −20.00 | −6.00 | +3.00 | −23.00 |
| 5y | −26.00 | −20.00 | 0.00 | −6.00 | −26.00 |
| 30y | −11.00 | −20.00 | +6.00 | +3.00 | −11.00 |
| Total | −60.00 | −60.00 | 0.00 | 0.00 | −60.00 |
Read it off and the note writes itself. Yields fell 20 basis points at the level. The curve steepened 12 basis points between 3 months and 30 years, and the steepening came from the front: the 3-month fell 6 basis points more than level implies while the 30-year fell 6 basis points less. And the belly fell 6 basis points more than level and slope together account for, which is curvature and is the third, easily missed, part of the move.
The naming follows mechanically. The level fell, so this is a bull move; the spread widened, so it is a steepener; together, a bull steepener led by the front end. That sentence is a summary of Table 3 and nothing more. It is worth writing precisely because the next sentence in most commentary — that a bull steepener is what happens when policy is expected to ease — is a statement about an expectation, and Table 3 contains no expectational quantity at all.
The forwards inside the curve
A curve of spot yields implies a set of forward rates, and the implication is arithmetic. A 5-year investment rolled into another 5 years must compound to the same 10-year return as a 10-year investment, or there is an arbitrage; the rate at which the roll must happen is the forward. The same relation holds between any two points, and it is the reason a curve is sometimes described as a set of expectations about future short rates.
From the curve in Table 1, and using annual compounding for simplicity, the 1-year rate one year forward is 4.0502 per cent from the 1-year at 4.31 and the 2-year at 4.18; the 3-year rate starting in two years is 4.0300; the 5-year rate starting in five years is 4.3902; and the 20-year rate starting in ten years is 4.6453. Each is a computation a reader can redo from two numbers in the table, which is the standard to hold a curve read to.
Now the caution, and it is the one that matters. A forward rate is a breakeven: it is the rate at which rolling and locking would produce the same outcome, and it is fully determined by the two spot rates. It is not the market’s expectation of the future short rate unless two further conditions hold — that investors are risk-neutral, and that no term premium is embedded in the longer bond. Neither condition is observable, and the size of the term premium is a contested estimate rather than a quoted number. So the honest sentence is “the curve prices a 5-year rate of 4.39 in five years’ time”, not “the market expects 4.39”, and the difference is not a matter of tone. The first is a fact about Table 1. The second is an inference from a fact about Table 1 plus an assumption that the piece has not tested and cannot test from the data at hand.
The same applies to every shape-based claim in circulation. An inverted curve has preceded recessions; that is a statement about a sample, and a sample of one country’s cycles contains perhaps a dozen observations, overlapping, drawn from a period in which policy frameworks changed repeatedly. A curve read can cite the correlation. It cannot convert it into a probability without a model, and a model of that kind is a forecast with a confidence interval attached — which is the thing the arithmetic was supposed to keep out.
What the curve cannot tell you
One limitation deserves its own section because it is the boundary of the method rather than a caveat at the end of it.
A curve is a set of prices at one moment, and a price contains everything the marginal buyer and seller brought to it: expectations about policy, yes, but also the term premium, the supply calendar, the demand of pension funds and insurers with liabilities at the long end, the balance-sheet cost of holding a bond, the liquidity of the specific issue, and the technicals of the index that most holders are measured against. None of those is separable from the others by arithmetic on the curve. Two curves can be identical in shape for entirely different reasons, and a read that names one reason has added an interpretation to a measurement without labelling it as one.
There are three specific failures worth knowing. Par yields are not spot rates, so a decomposition done on par yields is a decomposition of a coupon-adjusted object; the correction is small at the front and larger at the long end. Interpolation is an assumption dressed as data, so a spread quoted at a tenor nobody trades — 7-year, 12-year — may be an artefact of the method rather than a price. And a curve is a cross-section of instruments with different liquidity: at the long end, where issuance is lumpy and trading thin, a 2 basis point move may be a quote being refreshed rather than a repricing, which is why a per-tenor shift table is worth more than a single level figure and why the shift should be read beside the instrument’s own volume.
What a curve read costs
The read above is four engine calls: yield_curve for the level, the four spreads, the shape label and the per-tenor shift; rates_math for the forwards and the duration; validate to cross-check two observations of a quote; and a second yield_curve for the earlier snapshot so the change is computed on the same instrument set rather than assembled from memory. Four calls at $0.006125 on Base is $0.02450.
The note around those figures is model work. Two drafting calls at DeepSeek’s measured $0.00700 is $0.01400, so one read is $0.03850, and a daily read over twenty working days is 80 engine calls ($0.49000) and 40 model calls ($0.28000): $0.77000 for the month, or $0.03850 a day. Tenor-heavy prompts push the drafting onto the long-prompt rate of $0.00955, which makes the model line $0.38200 and the month $0.87200, 13 per cent more; a curve read that carries a decade of release files is a long prompt by construction. Qwen, flat at $0.00875 to about 30,000 tokens, prices the same forty calls at $0.35000 and the month at $0.84000. The 0.50 USDC opening balance is 71 calls at $0.00700, which at $0.03850 a read is twelve reads at the counts above.
A decision rule
Three tests separate a curve read from a curve opinion, and they can be applied to a note you are handed as easily as to one you are writing.
The reconstruction test. Ask for the decomposition and check it adds. Level, slope and curvature must sum to the observed change at every tenor quoted, and the curvature parts must sum to zero across the curve. A decomposition that does not close is a description, not an attribution, and there is no reading to be taken from it.
The pair test. Any shape label must arrive with the pair that produced it, the tenors, the instrument and the timestamp. “Inverted” on this curve is true of 3m10s at −38 basis points and false of 2s10s at +6, and a note that does not say which is not reporting a fact about the curve.
The forward test. If a sentence reads “the market expects [rate]”, find the forward it came from and the assumption it rests on. The forward is in the table and can be checked; the expectation is in the sentence and cannot. Either the sentence is replaced by the forward, or the assumption is stated and argued — and in most notes it is neither, which is the signal to put the note down.
The decision that follows is modest and it is the right one. Publish the curve read as the four components — level, slope, curvature, the forwards — each in basis points or per cent, each with the fields in the checklist, each with its source and as-of. State the shape with its pair. Report what changed and by how much against a named earlier curve. Stop before the sentence that begins “which suggests”. What the reader does with a curve that fell 20 at the level and steepened 12 at the front is a decision about the economy, and a decision about the economy is not a curve read; it is a forecast wearing one.
Method note
The curve in Table 1, the spreads in Table 2 and the changes in Table 3 are constructed for this piece and labelled illustrative; they are not an observation of any market and should not be cited as one. The decomposition is exact three-point arithmetic: level is the mean change, slope is the long change minus the short change, and curvature is the belly change minus the average of the wings, apportioned so the parts sum to the observed change at each tenor and to zero across the curve. The forwards are computed from the two spot yields with annual compounding, and 4.0502, 4.0300, 4.3902 and 4.6453 are those computations to four decimal places; the bond prices are the present value of a 4.00 per cent annual coupon at tenors of one to ten years at the two yields named, and the modified duration of 8.08 follows from the Macaulay duration of 8.4174 divided by 1.0424. Engine prices are the published $0.006125 per basic operation on Base, from catalog.json, read 31 October 2026; the services are pending review and return no 402 quote, so that price is published rather than measured. Model prices are measured from the live 402 handshake on 31 October 2026: $0.00700 for deepseek-v4-flash on Base at a short prompt and max_tokens: 1000, $0.00955 at a prompt of about 3,000 tokens, and $0.00875 for qwen3.8-flash at both lengths. The monthly counts are planning assumptions, not observations. Nothing here is a forecast, a market call, or a recommendation to buy, sell or hold any instrument.
The pillar is Finance and markets on x402 — three engines, four jobs, one price. The role that produces this read is macro_analyst, whose artefact table names yield_curve and rates_math and whose refusals are the boundary this piece describes. The compute is bought at x402.press/services/deepseek/ with a second model at x402.press/services/qwen/; the endpoint’s measured handshake is reviewed at DeepSeek: per-call chat completions over x402, and the two endpoints are set side by side, by prompt length, at Inference endpoints compared. A curve read usually feeds a valuation, so the rate that comes out of it has to land in a model: How to value a private company and DCF model structure checklist carry the discount-rate side.
Filed under Jobs · Tags: yield-curve, macro, rates, interpretation