{
 "site": "fixed-income.wiki",
 "section": "Curves and spreads",
 "url": "https://fixed-income.wiki/curves/",
 "reviewed": "2026-08-27",
 "license": "CC BY 4.0",
 "changes": "https://fixed-income.wiki/changes.json",
 "tables": [
  {
   "title": "Bootstrapping a zero curve from an illustrative annual par curve",
   "intro": "Each par bond is priced at 100 with annual coupons. Working outward one maturity at a time: DF_n = (1 - c*sum of DF_1..DF_(n-1)) / (1 + c), then z_n = (1/DF_n)^(1/n) - 1. The par yields 4.00 through 5.00 are illustrative round numbers chosen to make the bootstrap visible, not observed levels. Because the par curve rises, the zero curve sits above it at every maturity beyond the first, and the forwards sit above the zeros.",
   "columns": [
    "Maturity",
    "Par coupon",
    "Sum of prior coupon PVs",
    "Discount factor",
    "Zero rate, annual compounding",
    "Implied one-year forward"
   ],
   "rows": [
    [
     "1 year",
     "4.0000 percent",
     "0.000000",
     "0.961538462",
     "4.000000 percent",
     "4.000000 percent, the spot"
    ],
    [
     "2 years",
     "4.2500 percent",
     "0.040865",
     "0.920033204",
     "4.255326 percent",
     "4.511278 percent"
    ],
    [
     "3 years",
     "4.5000 percent",
     "0.084671",
     "0.875913182",
     "4.515246 percent",
     "5.037031 percent"
    ],
    [
     "4 years",
     "4.7500 percent",
     "0.130981",
     "0.829612859",
     "4.780660 percent",
     "5.580955 percent"
    ],
    [
     "5 years",
     "5.0000 percent",
     "0.179355",
     "0.781566776",
     "5.052594 percent",
     "6.147406 percent"
    ]
   ]
  },
  {
   "title": "Forward rates implied by the bootstrapped zero curve",
   "intro": "A forward rate is not a forecast; it is the rate that makes borrowing long indifferent to borrowing short and rolling. It follows from two discount factors by arithmetic alone, with no expectation embedded. On an upward-sloping curve the forwards always sit above the spot rates, which is a property of the slope and not a prediction.",
   "columns": [
    "Forward period",
    "From discount factors",
    "Value",
    "From zero rates"
   ],
   "rows": [
    [
     "1 to 2 years",
     "DF_1/DF_2 - 1 = 0.961538462/0.920033204 - 1",
     "4.511278 percent",
     "(1+z_2)^2/(1+z_1)^1 - 1"
    ],
    [
     "2 to 3 years",
     "DF_2/DF_3 - 1 = 0.920033204/0.875913182 - 1",
     "5.037031 percent",
     "(1+z_3)^3/(1+z_2)^2 - 1"
    ],
    [
     "3 to 4 years",
     "DF_3/DF_4 - 1 = 0.875913182/0.829612859 - 1",
     "5.580955 percent",
     "(1+z_4)^4/(1+z_3)^3 - 1"
    ],
    [
     "4 to 5 years",
     "DF_4/DF_5 - 1 = 0.829612859/0.781566776 - 1",
     "6.147406 percent",
     "(1+z_5)^5/(1+z_4)^4 - 1"
    ],
    [
     "0 to 1 years",
     "1/DF_1 - 1",
     "4.000000 percent",
     "z_1 by definition"
    ],
    [
     "0 to 5 years, annualised",
     "(1/DF_5)^(1/5) - 1",
     "5.052594 percent",
     "z_5 by definition"
    ]
   ]
  },
  {
   "title": "The illustrative discount curve applied to the reference bond",
   "intro": "The curve values the bond at 100.379194 against a market full price of 100.021739, so the bond is 0.357455 cheap to the curve. Adding a constant 5.3240 basis points to every zero rate closes the gap exactly, and that constant is the Z-spread.",
   "columns": [
    "Payment date",
    "Years to payment",
    "Zero rate on the curve",
    "Discount factor",
    "Present value",
    "PV at the market Z-spread"
   ],
   "rows": [
    [
     "2026-11-15",
     "0.217391",
     "4.000000 percent",
     "0.991427121",
     "2.230711",
     "2.230458"
    ],
    [
     "2027-05-15",
     "0.717391",
     "4.036232 percent",
     "0.971739737",
     "2.186414",
     "2.185596"
    ],
    [
     "2027-11-15",
     "1.217391",
     "4.119565 percent",
     "0.951570301",
     "2.141033",
     "2.139674"
    ],
    [
     "2028-05-15",
     "1.717391",
     "4.202899 percent",
     "0.931059346",
     "2.094884",
     "2.093009"
    ],
    [
     "2028-11-15",
     "2.217391",
     "4.268116 percent",
     "0.910605854",
     "2.048863",
     "2.046497"
    ],
    [
     "2029-05-15",
     "2.717391",
     "4.309783 percent",
     "0.890591294",
     "2.003830",
     "2.000995"
    ],
    [
     "2029-11-15",
     "3.217391",
     "4.351449 percent",
     "0.870661644",
     "1.958989",
     "1.955708"
    ],
    [
     "2030-05-15",
     "3.717391",
     "4.393116 percent",
     "0.850831172",
     "1.914370",
     "1.910667"
    ],
    [
     "2030-11-15",
     "4.217391",
     "4.434783 percent",
     "0.831113699",
     "1.870006",
     "1.865903"
    ],
    [
     "2031-05-15",
     "4.717391",
     "4.476449 percent",
     "0.811522584",
     "1.825926",
     "1.821446"
    ],
    [
     "2031-11-15",
     "5.217391",
     "4.510870 percent",
     "0.792363616",
     "1.782818",
     "1.777982"
    ],
    [
     "2032-05-15",
     "5.717391",
     "4.535870 percent",
     "0.773804226",
     "1.741060",
     "1.735886"
    ],
    [
     "2032-11-15",
     "6.217391",
     "4.560870 percent",
     "0.755494969",
     "1.699864",
     "1.694372"
    ],
    [
     "2033-05-15",
     "6.717391",
     "4.585870 percent",
     "0.737438801",
     "1.659237",
     "1.653447"
    ],
    [
     "2033-11-15",
     "7.217391",
     "4.610870 percent",
     "0.719638417",
     "1.619186",
     "1.613117"
    ],
    [
     "2034-05-15",
     "7.717391",
     "4.635870 percent",
     "0.702096262",
     "1.579717",
     "1.573387"
    ],
    [
     "2034-11-15",
     "8.217391",
     "4.660870 percent",
     "0.684814534",
     "70.022286",
     "69.723596"
    ],
    [
     "Total",
     "",
     "",
     "",
     "100.379194",
     "100.021739"
    ]
   ]
  },
  {
   "title": "Four spread measures on the reference bond, across five prices",
   "intro": "Same bond, same illustrative curve, five market prices. The nominal spread is measured against a benchmark bond with the reference bond's own dates whose quoted price is 100 on the curve, which requires a coupon of 463.114521 percent and yields 4.630183 percent. The I-spread is measured against par swap rates on the curve interpolated to the bond's 8.217391-year maturity, which gives 4.630276 percent from 4.620792 percent at eight years and 4.664416 percent at nine. The four measures agree closely near par and diverge as the price moves away from it, which is the coupon effect.",
   "columns": [
    "Quoted price",
    "Yield to maturity",
    "Nominal spread",
    "I-spread",
    "Z-spread",
    "Par-par asset-swap spread"
   ],
   "rows": [
    [
     "92.000",
     "5.733247 percent",
     "+110.3064 bp",
     "+110.2971 bp",
     "+110.3687 bp",
     "+100.2690 bp"
    ],
    [
     "96.000",
     "5.100942 percent",
     "+47.0759 bp",
     "+47.0666 bp",
     "+47.0611 bp",
     "+43.8387 bp"
    ],
    [
     "98.750",
     "4.684070 percent",
     "+5.3887 bp",
     "+5.3795 bp",
     "+5.3240 bp",
     "+5.0428 bp"
    ],
    [
     "102.000",
     "4.208742 percent",
     "-42.1441 bp",
     "-42.1534 bp",
     "-42.2647 bp",
     "-40.8068 bp"
    ],
    [
     "106.000",
     "3.647654 percent",
     "-98.2529 bp",
     "-98.2621 bp",
     "-98.4382 bp",
     "-97.2371 bp"
    ]
   ]
  },
  {
   "title": "Carry and roll-down over a three-month horizon",
   "intro": "Horizon 2026-08-27 to 2026-11-27, 92 days. The curve and the Z-spread of 5.3240 basis points are held constant, so every number here is a consequence of the passage of time alone. The bond's yield falls from 4.684070 percent to 4.673086 percent purely because it has rolled 92 days down an upward-sloping curve. The repo rate is illustrative.",
   "columns": [
    "Component",
    "Per 100 of par",
    "On 10,000,000 par",
    "Where it comes from"
   ],
   "rows": [
    [
     "Coupon received 2026-11-15",
     "2.250000",
     "225,000.00",
     "Scheduled payment"
    ],
    [
     "Reinvestment of that coupon to the horizon",
     "0.003000",
     "300.00",
     "12 days at an illustrative 4.000 percent ACT/360"
    ],
    [
     "Accrued interest at the horizon",
     "0.149171",
     "14,917.13",
     "12/181 of the new period"
    ],
    [
     "Accrued interest given up at the start",
     "-1.271739",
     "-127,173.91",
     "104/184 paid away on purchase"
    ],
    [
     "Financing cost",
     "-1.022444",
     "-102,244.44",
     "100.021739 at 4.000 percent for 92 days ACT/360"
    ],
    [
     "Net carry",
     "0.107988",
     "10,798.77",
     "Income less funding, before any price change"
    ],
    [
     "Roll-down, quoted price",
     "+0.107997",
     "10,799.72",
     "Quoted price moves from 98.750 to 98.857997 on an unchanged curve and spread"
    ],
    [
     "Total return",
     "+0.215985",
     "21,598.49",
     "Net carry plus roll-down"
    ],
    [
     "Total return, annualised",
     "0.844975 percent",
     "",
     "92 days ACT/360 on a full price of 100.021739"
    ]
   ]
  }
 ],
 "entries": [
  {
   "id": "spot-zero-rate",
   "term": "Spot rate, zero rate and discount factor",
   "definition": "A zero or spot rate is the yield of a single payment at one date. A discount factor is the same information with no compounding convention attached. The factor is the primitive; the rate is a presentation of it.",
   "formula": "DF(t) = (1 + z(t)/f)^(-f*t) on frequency f, or exp(-z_c(t)*t) continuously compounded. Inverting: z(t) = f*[DF(t)^(-1/(f*t)) - 1]",
   "fields": [
    {
     "label": "Worked",
     "value": "On the illustrative curve at 8.217391 years the zero rate is 4.660870 percent, so DF = (1 + 0.023304348)^-16.434783 = 0.684814534",
     "mono": true
    },
    {
     "label": "Inverting",
     "value": "2 * [0.684814534^(-1/16.434783) - 1] = 4.660870 percent",
     "mono": true
    },
    {
     "label": "Curve at the bond's flow dates",
     "value": "4.000000 percent at six months rising to 4.660870 percent at 8.2174 years",
     "mono": true
    },
    {
     "label": "Discount factors",
     "value": "0.991427121 at the first coupon and 0.684814534 at redemption",
     "mono": true
    }
   ],
   "notes": [
    "Discount factors are the safe interchange format between systems because they are convention-free. A rate handed across a boundary without its compounding frequency and day count is ambiguous, and the resulting error is small enough to survive review.",
    "Zero rates are not directly observable beyond the shortest maturities. They are inferred from coupon instruments by the bootstrap in the next entries, and the inference depends on the interpolation choice, which is why two curves built from the same inputs can differ by a basis point or two in the gaps.",
    "The interpolation variable matters as much as the method. Linear in zero rates, linear in the logarithm of discount factors, and linear in forward rates all pass exactly through the same input points and disagree everywhere between them, sometimes producing negative implied forwards.",
    "A curve is only as good as the instrument set it is fitted to. A gap in the input maturities is a region where the curve is an assumption, and any spread computed for a bond maturing in that gap inherits it."
   ]
  },
  {
   "id": "par-yield-curve",
   "term": "Par yield curve",
   "definition": "For each maturity, the coupon rate at which a bond of that maturity would price at par. It is the curve most often quoted and the least useful for discounting, because it mixes every maturity's zero rate into a single number.",
   "formula": "Par coupon c_n solves 100 = c_n/f * sum of DF(t_k) + 100 * DF(t_n), so c_n = f * (1 - DF(t_n)) / sum of DF(t_k)",
   "fields": [
    {
     "label": "Worked, on the reference bond's own dates",
     "value": "Sum of the 17 discount factors = 14.176773577, final factor 0.684814534",
     "mono": true
    },
    {
     "label": "Result",
     "value": "The coupon that puts the quoted price at 100 on the illustrative curve is 463.114521 percent, and such a bond yields 4.630183 percent",
     "mono": true
    },
    {
     "label": "Against the zero rate",
     "value": "463.114521 percent par against 4.660870 percent zero at the same maturity",
     "mono": true
    },
    {
     "label": "Bootstrap example",
     "value": "On the illustrative annual curve, par yields of 4.00 to 5.00 percent imply zero rates of 4.000000 to 5.052594 percent",
     "mono": true
    }
   ],
   "notes": [
    "On an upward-sloping curve the par yield sits below the zero rate of the same maturity, because it is a weighted average of all the zero rates up to that point and the early ones are lower. The gap widens with the slope and with the coupon.",
    "A par yield is only a par yield for a bond that actually prices at par. Applying a par curve to a discount or premium bond and calling the difference a spread introduces the coupon effect, which is exactly what the Z-spread avoids.",
    "Government benchmark curves published by central banks and statistical agencies are usually par or fitted par curves, so a spread computed against a published curve is normally a spread to par yields, not to zeros. That is a difference of tens of basis points in some shapes.",
    "Note the definitional subtlety off a coupon date: par can mean a quoted price of 100 or a full price of 100, and the two differ by the accrued interest. The figure quoted here uses a quoted price of 100, which is the market convention."
   ],
   "sameAs": [
    "https://www.wikidata.org/wiki/Q7133610",
    "https://en.wikipedia.org/wiki/Par_yield"
   ],
   "citations": []
  },
  {
   "id": "bootstrapping",
   "term": "Bootstrapping a zero curve",
   "definition": "The sequential extraction of zero rates from coupon instruments. Each new maturity contributes exactly one unknown discount factor, because every earlier flow is already discounted by factors already solved for.",
   "formula": "For a par instrument of maturity n with coupon c: DF_n = (1 - (c/f) * sum of DF_1..DF_(n-1)) / (1 + c/f). Then z_n follows from DF_n",
   "fields": [
    {
     "label": "Worked, one year",
     "value": "100 = (100 + 4.00)*DF_1, so DF_1 = 0.961538462 and z_1 = 4.000000 percent, equal to the par yield as it must be",
     "mono": true
    },
    {
     "label": "Worked, two years",
     "value": "DF_2 = (1 - 0.0425*0.961538462) / (1 + 0.0425) = 0.920033204, so z_2 = (1/0.920033204)^(1/2) - 1 = 4.255326 percent",
     "mono": true
    },
    {
     "label": "Worked, three years",
     "value": "DF_3 = (1 - 0.0450*(0.961538462 + 0.920033204)) / (1 + 0.0450) = 0.875913182, z_3 = 4.515246 percent",
     "mono": true
    },
    {
     "label": "Worked, five years",
     "value": "DF_5 = 0.781566776, z_5 = 5.052594 percent against a par yield of 5.00 percent",
     "mono": true
    },
    {
     "label": "Divergence",
     "value": "The gap between the par yield and the zero rate grows from 0 basis points at one year to 5.3 at five",
     "mono": true
    }
   ],
   "notes": [
    "The first zero rate always equals the first par yield, because a one-period instrument has a single flow. That identity is the first check on any bootstrap implementation.",
    "The method requires an instrument at every node. Real input sets have gaps, so a practical bootstrap interpolates the missing par yields first, which means the resulting zero curve depends on an interpolation applied before the bootstrap as well as after it.",
    "Bootstrapping from coupon bonds rather than par instruments requires solving for the discount factor that reproduces the observed price rather than 100, which is the same algebra with a different right-hand side and no additional difficulty.",
    "The procedure is exact and produces a curve that reprices every input instrument to the basis point. That is a fitting property, not an accuracy property: a curve that reprices its inputs perfectly can still be a poor description of the rates between them."
   ],
   "sameAs": [
    "https://www.wikidata.org/wiki/Q4944086",
    "https://en.wikipedia.org/wiki/Bootstrapping_(finance)"
   ],
   "citations": []
  },
  {
   "id": "forward-rate",
   "term": "Implied forward rate",
   "definition": "The rate for a future period that is implied by two present discount factors. It is the breakeven rate at which borrowing for the long period costs the same as borrowing short and rolling, and it contains no forecast of any kind.",
   "formula": "For the period t1 to t2: (1 + f/m)^(m*(t2-t1)) = DF(t1)/DF(t2). Annualised simply: f = (DF(t1)/DF(t2) - 1) * 1/(t2-t1)",
   "fields": [
    {
     "label": "Worked, one to two years",
     "value": "0.961538462/0.920033204 - 1 = 4.511278 percent",
     "mono": true
    },
    {
     "label": "Worked, four to five years",
     "value": "0.829612859/0.781566776 - 1 = 6.147406 percent",
     "mono": true
    },
    {
     "label": "From zero rates",
     "value": "(1 + 0.050525944)^5 / (1 + 0.047806604)^4 - 1 = 6.147406 percent, the same number",
     "mono": true
    },
    {
     "label": "Amplification",
     "value": "Par yields spanning 4.00 to 5.00 percent, a range of 100 basis points, imply one-year forwards spanning 4.000000 to 6.147406 percent, a range of 215",
     "mono": true
    }
   ],
   "notes": [
    "The amplification in the last field is the most useful property of the forward curve: a mildly sloped spot curve implies a steeply sloped forward curve. A modest view on the shape of the spot curve is a large view on forwards, and positions expressed in forward space are correspondingly leveraged.",
    "Forwards are arithmetic, not expectation. Saying the market expects rates to reach the forward rate imports a term-premium assumption that the arithmetic does not contain. The forward is a breakeven, and whether it is also a forecast is a separate empirical question.",
    "Rolling down an upward-sloping curve produces a capital gain if the curve is unchanged, precisely because the forward rate is above the spot rate. That gain is the roll-down component in the carry table, and it is what the curve prices in.",
    "Forward rates computed from an interpolated curve inherit the interpolation's kinks and can turn negative between nodes even when every input zero rate is positive. Interpolating in forward space rather than zero space avoids that and distorts something else."
   ],
   "sameAs": [
    "https://www.wikidata.org/wiki/Q6588953",
    "https://en.wikipedia.org/wiki/Forward_rate"
   ],
   "citations": []
  },
  {
   "id": "nominal-spread",
   "term": "Nominal spread",
   "definition": "The difference between a bond's yield to maturity and the yield of a benchmark government bond of comparable maturity. It is the simplest spread measure and the only one that requires no curve at all, which is both its appeal and its defect.",
   "formula": "Nominal spread = y_bond - y_benchmark, with both yields on the same compounding and day-count conventions",
   "fields": [
    {
     "label": "Benchmark",
     "value": "On the illustrative curve, a bond with the reference bond's dates and a quoted price of 100 needs a coupon of 463.114521 percent and yields 4.630183 percent",
     "mono": true
    },
    {
     "label": "Worked",
     "value": "4.684070 - 4.630183 = 5.3887 basis points",
     "mono": true
    },
    {
     "label": "At a quoted price of 92.000",
     "value": "5.733247 - 4.630183 = 110.3064 basis points",
     "mono": true
    },
    {
     "label": "At a quoted price of 106.000",
     "value": "3.647654 - 4.630183 = -98.2529 basis points",
     "mono": true
    },
    {
     "label": "Against the Z-spread",
     "value": "5.3887 against 5.3240 basis points at the base price, and 110.3064 against 110.3687 at 92.000",
     "mono": true
    }
   ],
   "notes": [
    "Nominal spread compares two yields, and a yield depends on the coupon as well as the curve. Two bonds with identical credit risk and identical maturities but different coupons have different nominal spreads on the same curve, and the difference is not credit.",
    "It also depends on which benchmark is chosen. An off-the-run government bond of the same maturity and the on-the-run issue trade at different yields, so the same corporate bond has two nominal spreads depending on the reference.",
    "The measure is still what most cash markets quote and negotiate in, because it is unambiguous once the benchmark is named and requires no curve construction. Knowing its bias is more useful than refusing to use it.",
    "The bias is largest when the curve is steep and the bond is far from par. In a flat curve at a par price, nominal spread, I-spread and Z-spread converge, and the table above shows exactly how they separate as the price moves."
   ],
   "sameAs": [
    "https://www.wikidata.org/wiki/Q8053548",
    "https://en.wikipedia.org/wiki/Yield_spread"
   ],
   "citations": []
  },
  {
   "id": "i-spread",
   "term": "Interpolated spread, or I-spread",
   "definition": "The bond's yield less a swap rate interpolated to the bond's exact maturity. It removes the benchmark-selection problem in nominal spread by replacing a single bond with a continuous curve, and keeps the coupon problem.",
   "formula": "I-spread = y_bond - swap rate interpolated linearly between the two adjacent par swap tenors",
   "fields": [
    {
     "label": "Curve inputs",
     "value": "Par swap rates on the illustrative curve: 4.620792 percent at eight years and 4.664416 percent at nine",
     "mono": true
    },
    {
     "label": "Interpolation",
     "value": "Bond maturity is 8.217391 years, so the interpolated rate is 4.620792 + (8.217391 - 8)*(4.664416 - 4.620792) = 4.630276 percent",
     "mono": true
    },
    {
     "label": "Worked",
     "value": "4.684070 - 4.630276 = 5.3795 basis points",
     "mono": true
    },
    {
     "label": "Against the Z-spread",
     "value": "5.3795 against 5.3240 basis points, a wedge of 0.0555",
     "mono": true
    },
    {
     "label": "At a quoted price of 92.000",
     "value": "110.2971 basis points, against a Z-spread of 110.3687",
     "mono": true
    }
   ],
   "notes": [
    "I-spread and Z-spread are frequently reported side by side and are close for a near-par bond on a gently sloping curve. The gap widens with curve curvature and with the bond's distance from par, and it is a curve artefact rather than information.",
    "The interpolation is conventionally linear in the swap rate, which is not the same as linear in the zero rate or in the discount factor. That choice is a convention and it moves the answer by a fraction of a basis point on a smooth curve and more on a kinked one.",
    "Because it references swaps rather than governments, I-spread on a government bond is not zero; it is the negative of the swap spread. That is often the intended measurement.",
    "It is a yield difference, so it retains the single-discount-rate defect. Any measure built by subtracting one yield from another prices the bond's cash flows all at one rate, which no curve does."
   ],
   "sameAs": [
    "https://www.wikidata.org/wiki/Q5967764",
    "https://en.wikipedia.org/wiki/I-spread"
   ],
   "citations": []
  },
  {
   "id": "z-spread",
   "term": "Zero-volatility spread, or Z-spread",
   "definition": "The constant amount added to every zero rate on a curve that makes the discounted value of the bond's cash flows equal its market full price. Unlike a yield difference it discounts each flow at its own maturity's rate, so it removes the coupon and shape distortions in nominal and I-spread.",
   "formula": "Solve for s: P_full = sum over k of CF_k / (1 + (z(t_k) + s)/f)^n_k",
   "fields": [
    {
     "label": "Curve value",
     "value": "Discounting the reference bond's 17 flows on the illustrative curve with no spread gives 100.379194",
     "mono": true
    },
    {
     "label": "Market value",
     "value": "100.021739, so the bond is 0.357455 cheap to the curve",
     "mono": true
    },
    {
     "label": "Worked, solution",
     "value": "s = 5.3240 basis points",
     "mono": true
    },
    {
     "label": "Check",
     "value": "Adding 5.3240 basis points to every zero rate gives 100.021739 against a target of 100.021739",
     "mono": true
    },
    {
     "label": "Spread duration implied",
     "value": "6.698219, so one basis point of Z-spread is worth 0.066997 per 100 of par",
     "mono": true
    },
    {
     "label": "Across prices",
     "value": "+110.3687 basis points at 92.000, +5.3240 at 98.750, -98.4382 at 106.000",
     "mono": true
    }
   ],
   "notes": [
    "Zero volatility does not mean the bond has no volatility. It means the measure assumes no interest-rate volatility and therefore assigns no value to any embedded option. For a bullet bond that is correct; for a callable it is the whole difference between Z-spread and option-adjusted spread.",
    "The Z-spread is defined against a specific curve, so it is only comparable across bonds valued on the same curve. A Z-spread to a government curve and one to a swap curve differ by the swap spread and are routinely quoted without saying which was used.",
    "It is a parallel spread by construction, so it cannot express a bond that is cheap at the front and rich at the back. That is a feature: the single number is the point. A term structure of credit spreads needs a curve, not a spread.",
    "Because it discounts each flow at its own rate, Z-spread is the right measure for comparing bonds of different coupons and different distances from par, which the table above quantifies."
   ],
   "sameAs": [
    "https://www.wikidata.org/wiki/Q8062844",
    "https://en.wikipedia.org/wiki/Z-spread"
   ],
   "citations": []
  },
  {
   "id": "oas",
   "term": "Option-adjusted spread",
   "definition": "The spread over a curve that a model requires in order to reprice a bond once the embedded option has been valued and removed. For a bond with no options it is identical to the Z-spread; for a callable it is the Z-spread less the option cost.",
   "formula": "OAS = Z-spread - option cost, where the option cost is the model's value of the embedded optionality expressed in spread terms. Equivalently: OAS is the s solving market price = model price with every rate path shifted by s",
   "fields": [
    {
     "label": "On the option-free reference bond",
     "value": "OAS = Z-spread = 5.3240 basis points, because the option cost is zero",
     "mono": true
    },
    {
     "label": "Illustrative callable case",
     "value": "Assume a model values the embedded call at 35.0 basis points of spread. That figure is supplied as an input and is not computed anywhere in this corpus",
     "mono": true
    },
    {
     "label": "Worked, result",
     "value": "OAS = 5.3240 - 35.0 = -29.6760 basis points",
     "mono": true
    },
    {
     "label": "Interpretation",
     "value": "A callable bond quoted at a Z-spread wide to a comparable bullet is not necessarily cheap; the difference may be entirely the option the holder has written",
     "mono": true
    },
    {
     "label": "Sign",
     "value": "OAS is at most the Z-spread for a callable and at least the Z-spread for a putable, because the holder is short the option in the first case and long it in the second",
     "mono": true
    }
   ],
   "notes": [
    "OAS is a model output, not a market observable. It depends on the interest-rate model, the volatility surface, the assumed exercise rule and, for mortgages, the prepayment model. Two vendors will report OAS figures for the same bond that differ by more than the spread differences traders act on.",
    "The comparison that OAS is built for is between an option-free bond and a bond with options. Comparing two OAS figures from different models is not that comparison and is close to meaningless.",
    "The volatility assumption is the dominant input. Higher assumed volatility makes the option more valuable, so it lowers OAS for a callable. An OAS quoted without the volatility it was computed at is incomplete.",
    "For an option-free bullet the correct OAS is the Z-spread and any difference is model noise. That identity is the standard calibration test for an OAS engine."
   ],
   "sameAs": [
    "https://www.wikidata.org/wiki/Q7098999",
    "https://en.wikipedia.org/wiki/Option-adjusted_spread"
   ],
   "citations": []
  },
  {
   "id": "asset-swap-spread",
   "term": "Par-par asset-swap spread",
   "definition": "The spread over the floating index that an investor earns by buying the bond and swapping its fixed coupon into floating, with the swap notional set at par. It converts a bond's credit compensation into a floating-rate margin directly comparable with a loan or a floater.",
   "formula": "To the standard par-par approximation: ASW = (P_curve - P_market) / (100 * A), where P_curve is the bond's full price discounted on the swap curve, P_market its market full price, and A = sum of delta_i * DF(t_i) the floating-leg annuity to maturity",
   "fields": [
    {
     "label": "Curve price",
     "value": "100.379194 full, from discounting the 17 flows on the illustrative curve",
     "mono": true
    },
    {
     "label": "Market price",
     "value": "100.021739 full",
     "mono": true
    },
    {
     "label": "Annuity",
     "value": "Sum of 0.5 * DF over the 17 payment dates = 7.088387",
     "mono": true
    },
    {
     "label": "Worked",
     "value": "(100.379194 - 100.021739) / (100 * 7.088387) = 0.357455 / 708.838679 = 5.0428 basis points",
     "mono": true
    },
    {
     "label": "Against the Z-spread",
     "value": "5.0428 against 5.3240 basis points, a wedge of -0.2812",
     "mono": true
    },
    {
     "label": "At a quoted price of 92.000",
     "value": "100.2690 basis points against a Z-spread of 110.3687, a wedge of -10.0997",
     "mono": true
    }
   ],
   "notes": [
    "The par-par structure has a notional mismatch built into it: the investor pays par for a package whose bond is worth its market price, and the difference is funded across the swap. That mismatch is what makes the asset-swap spread diverge from the Z-spread, and the divergence grows with the distance of the price from par, exactly as the last two fields show.",
    "A market-value asset swap sets the swap notional to the bond's dirty price instead and removes most of the mismatch, at the cost of an off-market swap and a different set of documentation. Which structure was traded changes the quoted spread materially on a bond far from par.",
    "For a bond priced near par the asset-swap spread and the Z-spread are within a basis point or two. For a deeply discounted bond the gap is tens of basis points and is not credit information.",
    "The asset swap does not remove default risk. If the bond defaults the investor is left with a live swap and no bond, which is an open interest-rate position at exactly the worst moment. That residual is priced into the spread and is not visible in the arithmetic."
   ],
   "sameAs": [
    "https://www.wikidata.org/wiki/Q741379",
    "https://en.wikipedia.org/wiki/Asset_swap"
   ],
   "citations": []
  },
  {
   "id": "discount-margin",
   "term": "Discount margin",
   "definition": "The floating-rate analogue of a yield spread: the constant addition to the assumed index rate that discounts a floater's projected cash flows back to its market price. Quoted margin is a contractual term; discount margin is a market measure.",
   "formula": "Solve for DM: P_full = sum over k of [(I + QM)/f * 100] / (1 + (I + DM)/f)^k + 100 / (1 + (I + DM)/f)^n, where I is the assumed constant index rate and QM the contractual quoted margin",
   "fields": [
    {
     "label": "Setup",
     "value": "Illustrative floater: 12 quarterly periods, index assumed flat at 4.000 percent, quoted margin 80 basis points, quoted price 99.500",
     "mono": true
    },
    {
     "label": "Projected coupon",
     "value": "(4.000 + 0.80) / 4 = 1.200000 per 100 of par per period",
     "mono": true
    },
    {
     "label": "Worked, solution",
     "value": "DM = 98.0461 basis points",
     "mono": true
    },
    {
     "label": "Check",
     "value": "Discounting at (4.000 + 0.980461)/4 per period gives 99.500000 against a target of 99.500",
     "mono": true
    },
    {
     "label": "Against the quoted margin",
     "value": "98.0461 against 80 basis points; the extra 18.05 is the discount to par amortised over the remaining life",
     "mono": true
    },
    {
     "label": "Spread duration",
     "value": "2.776718, so one basis point of discount margin is worth 0.027628 per 100 of par",
     "mono": true
    }
   ],
   "notes": [
    "A floater trading at par has a discount margin equal to its quoted margin, exactly. Any deviation of the price from par shows up entirely in the difference between the two, which makes discount margin the natural measure of whether a floater is cheap.",
    "The assumption that the index is flat at its current level is doing real work, and it is wrong whenever the curve is not flat. A more careful discount margin projects the coupons off the forward curve, and the two versions differ by more than a basis point in a steep curve.",
    "For a floater the discount margin is a credit measure and the rate duration is near zero, so a floater book's risk is almost entirely spread risk. Reporting a single duration for such a book conveys nothing about its actual exposure.",
    "Simple margin is a further simplification that amortises the price discount linearly and applies no discounting, in the same relation to discount margin as simple yield is to yield to maturity. It is still quoted in some loan markets."
   ]
  },
  {
   "id": "carry-and-rolldown",
   "term": "Carry and roll-down",
   "definition": "The return a bond position generates from the passage of time alone, with the curve unchanged. Carry is coupon income net of financing; roll-down is the price change from the bond's remaining maturity shortening along a sloped curve. They are separate effects and are routinely conflated.",
   "formula": "Carry = coupon accrued over the horizon - financing cost on the full price. Roll-down = P(horizon, unchanged curve) - P(today). Total = carry + roll-down, before any change in the curve or spread",
   "fields": [
    {
     "label": "Horizon",
     "value": "2026-08-27 to 2026-11-27, 92 days, at an illustrative repo rate of 4.000 percent ACT/360",
     "mono": true
    },
    {
     "label": "Income",
     "value": "Coupon of 2.250 received 2026-11-15, reinvested 12 days to 2.253000, plus horizon accrued 0.149171, less accrued given up 1.271739: net 1.130432",
     "mono": true
    },
    {
     "label": "Financing",
     "value": "100.021739 * 0.0400 * 92/360 = 1.022444",
     "mono": true
    },
    {
     "label": "Worked, carry",
     "value": "1.130432 - 1.022444 = 0.107988 per 100 of par",
     "mono": true
    },
    {
     "label": "Roll-down",
     "value": "Quoted price at the horizon on the same curve and spread is 98.857997, against 98.750 today, so roll-down is +0.107997",
     "mono": true
    },
    {
     "label": "Total",
     "value": "0.107988 + +0.107997 = +0.215985 per 100, or 0.844975 percent annualised",
     "mono": true
    },
    {
     "label": "In yield terms",
     "value": "The bond's own yield falls from 4.684070 percent to 4.673086 percent, a roll of -1.0985 basis points, purely from ageing",
     "mono": true
    }
   ],
   "notes": [
    "Roll-down is positive here because the curve slopes upward: a shorter bond is discounted at a lower rate, so the price rises even with nothing changing. On an inverted curve roll-down is negative and can exceed positive carry.",
    "Carry and roll-down are what a position must beat to be worth financing. A trade with negative total carry-and-roll needs a directional move to break even, and quantifying that hurdle is the point of the decomposition.",
    "The income and the financing legs are on different day-count bases, ACT/ACT against ACT/360, and netting them without conversion overstates carry by roughly the 365/360 factor applied to the financing.",
    "The coupon reinvestment term is small over three months and is the sort of thing that is dropped and then forgotten. Here it is under a tenth of a basis point of the total; over a year on a high coupon it is not."
   ],
   "sameAs": [
    "https://www.wikidata.org/wiki/Q432449",
    "https://en.wikipedia.org/wiki/Carry_(investment)"
   ],
   "citations": []
  },
  {
   "id": "total-return-decomposition",
   "term": "Decomposing a holding-period return",
   "definition": "Any realised return over a horizon splits into terms that were known at the outset and terms that were not. Carry and roll-down were known; the yield and spread changes were not. Separating them is the difference between attribution and narrative.",
   "formula": "Total return = carry + roll-down + (-D_mod * dy + 0.5 * Cx * dy^2) * P + spread effect, where dy is the change in the bond's own yield beyond the roll and the spread effect is -spread duration * ds * P",
   "fields": [
    {
     "label": "Known at the outset",
     "value": "Carry 0.107988 plus roll-down +0.107997 = +0.215985 per 100 of par over 92 days",
     "mono": true
    },
    {
     "label": "A 25 basis point selloff on top of that",
     "value": "-6.706168 * 0.0025 * 100.021739 + 0.5 * 53.827761 * 0.0025^2 * 100.021739 = -1.660082",
     "mono": true
    },
    {
     "label": "Worked, combined",
     "value": "+0.215985 + -1.660082 = -1.444097 per 100",
     "mono": true
    },
    {
     "label": "Breakeven move",
     "value": "The yield rise that exactly cancels carry and roll-down is roughly 3.22 basis points",
     "mono": true
    },
    {
     "label": "Spread component",
     "value": "A 10 basis point spread widening costs -0.669967 per 100, using a spread duration of 6.698219",
     "mono": true
    }
   ],
   "notes": [
    "The breakeven in the fourth field is the number that decides whether a position is worth holding: it states how much the market has to move against you before time stops paying you. It is computable at the outset and requires no view.",
    "The decomposition is not unique. Attributing the same return to curve, spread and carry depends on the order in which the effects are applied, and the interaction terms have to be assigned to something. Any attribution system embeds a convention here and should state it.",
    "Second order matters for large moves and not for small ones. Over a quarter with a 25 basis point move the convexity term is a rounding item; over a quarter with a 200 basis point move it is a material part of the answer.",
    "A decomposition that reconciles to the actual profit and loss to the last decimal is usually hiding a plug. Reporting the unexplained residual is more useful than eliminating it."
   ]
  }
 ]
}