Fixed Income Portfolio Measures: Duration and Maturity
Feed the calculator one row per holding, with four figures in each row. Out come three portfolio level readings: weighted average maturity, a MACAULAY duration and a MODIFIED duration. Each is the same market value weighted sum run down a different column. Add a benchmark reading and a move size, and three rupee figures follow, every one of them labelled.
The calculator, with the worked default already loaded
One row per holding, four boxes in each. Retype any box and every figure below it moves. Market values are in whole rupees, maturities and MACAULAY durations in years, and the move size in basis points. The grey line under each heading says which document that box is read off, and says nothing at all about what the figure means.
| Holding | Market value, Rs | Maturity, years | MACAULAY, years | MODIFIED |
|---|---|---|---|---|
| Whatever it is called on the statement. | Holding statement, the valuation column, struck on the relevant valuation date. | The instrument's term sheet, the redemption date line, counted forward in years. | Holding statement, the column headed MACAULAY duration. | Holding statement, the column beside that one, headed MODIFIED duration. |
| Ten year bullet bond | ||||
| Two year zero coupon holding | ||||
| Row three, empty and open for entry | ||||
| Outside the grid | Benchmark MODIFIED duration | |||
| Whatever the benchmark's publisher puts out, on its duration line. Nothing in the grid can supply it. | ||||
| Outside the grid | Size of the PARALLEL move, basis points | |||
| No document supplies this one. It is stated by the analyst, and the calculator prices the move stated. | ||||
| Row | Its weight | Into weighted average maturity | Into portfolio MACAULAY | Into portfolio MODIFIED |
|---|---|---|---|---|
| Ten year bullet bond | 50.0000% | 5.000000 | 3.559532 | 3.280674 |
| Two year zero coupon holding | 50.0000% | 1.000000 | 1.000000 | 0.941177 |
| Row three | 0.0000% | 0.000000 | 0.000000 | 0.000000 |
| Added straight down | 100.0000% | 6.000000 | 4.559532 | 4.221851 |
The weights add to 100.0000 per cent. The contributions add down their columns to 6.000000, 4.559532 and 4.221851, which to four places are the 6.0000, 4.5595 and 4.2219 printed above.
The MODIFIED boxes hold MODIFIED durations. Press the first button to read the wrong column in, exactly the way a copy from a statement does it.
On a PARALLEL rise of 100 basis points, this grid of two holdings carries a whole exposure of Rs 42,219/- against a total market value of Rs 10,00,000/-, and the active part of that figure is minus Rs 5,781/-.
One arithmetic operation does the whole of the work here, and it is performed four times. Multiply each holding's figure by that holding's share of the total market value, then add. Nothing more elaborate happens anywhere in this calculator. The reason a calculator exists for something this simple is that the mistakes are made at the input stage and never at the arithmetic stage. A column gets read off the wrong heading, or a weight gets built on the wrong base, and the answer that comes back is plausible, checkable and wrong.
So the blocks that follow spend more time on where each number is found than on what is done with it. A MACAULAY duration and a MODIFIED duration each measure something already established elsewhere. What is rarely obvious is which of the two is sitting in the third column of a statement that has arrived by email.
What does this tool take in, and what does it hand back?
The calculator takes four boxes in every holding row, and two more that sit outside the grid altogether: one for the benchmark's MODIFIED duration, one for the size of the move being priced. Ten boxes carry the worked default, and every figure the calculator prints is built from those ten and from nothing else.
A reader who has seen a portfolio report will expect more boxes than ten. There is no box for the issuer, none for the sector, none for the coupon, none for the credit assessment, and none for what the holding cost when it was bought. None of those enters any of the seven outputs. If a figure is not in the ten boxes, it cannot be in the answer. Somebody asking why two reports disagree can be told exactly that.
Why does every weight here start from market value?
Two flats sit in the same building, and a household bought both for Rs 40,00,000/- each. One of them would now fetch Rs 46,00,000/-. The other would fetch Rs 34,00,000/-. Ask what share of the household's property wealth sits in the first flat and nobody in the room answers fifty per cent. The household divides Rs 46,00,000/- by the Rs 80,00,000/- the pair would fetch together, and calls it 57.5000 per cent. Nobody has to be taught this. Only when the same question arrives with a bond statement attached do people reach for the wrong denominator.
The denominator under every weight in this calculator is total market value, and face amount never appears in it. Two holdings that promise to repay the same amount can be worth very different sums today, and it is today's sum that decides how much each one pulls the portfolio's readings around. A weighted average built on face amounts is not a slightly rougher version of the right answer. An average built on face amounts is a separate quantity wearing a heading it has borrowed, and the printed result gives away nothing about which of the two it is.
The bond version of that picture is exactly as blunt. A holding that promises Rs 1,00,000/- and is carriedA holding is carried at the value a holder's own books put on it for a stated date, which need not be what was paid for it and need not be what it will eventually repay. at Rs 1,04,000/- and one that promises Rs 1,00,000/- and is carried at Rs 92,000/- do not weigh the same. The two holdings weigh the same only in a table built on the wrong column, and that table produces four outputs which all look completely ordinary.
The market value column asks for what a holding is worth on a stated date. What must not go in there?
Where is each of these six numbers actually found?
Where each number is found is the part of a calculator that usually gets left out, and it is the part where the errors live. Each row below says where the number is found. What each number means is covered separately, so not one row says it.
| The box | Where it is found | What it is not |
|---|---|---|
| Market value | The carrying price the holder's own books put on the holding for the valuation dateThe single date every figure in a set of books is struck for, so that amounts recorded on different days can be added together without double counting. being worked to. | Not the face amount. Not the amount that was paid on the day of purchase. |
| Maturity | The repayment dateThe date written into a borrowing agreement on which the borrowed amount itself falls due, as distinct from the dates on which interest alone falls due. written into the instrument, counted forward in years from the valuation date. | Not an average of anything. One date, read off one document. |
| MACAULAY duration | Built elsewhere, out of the holding's own schedule of dated amounts, and handed to this grid already finished. | Not an output of this calculator. The grid receives the figure ready made and neither builds it nor checks it. |
| MODIFIED duration | Built in the same place, from the same schedule, and usually printed in the column immediately beside the MACAULAY one. | Not a number of years, whatever the column standing next to it happens to be. |
| Benchmark MODIFIED duration | From whoever publishes the benchmark, in whatever they publish. | Not derivable from anything in the grid. The grid knows nothing about a benchmark. |
| Size of the move | Stated by the analyst, in basis points, and the calculator prices what was stated. | Not a forecast, not a probability, and not a reading of what anything is likely to do. |
Two of those six rows deserve a second look. The norm a supervised holder carries a debt portfolio at decides what number is allowed to go in the market value box, so that row is the one an authority has a view on. The norm is rewritten periodically, so its current wording sits with the body that maintains it, and that body is named below. The move size row is the opposite case: nobody outside the room has any view on it at all. The move size is declared, and the calculator answers the question declared rather than a question about the future.
The two duration rows are where the day goes wrong, and the reason is entirely mechanical. On any holding statementThe periodic list a custodian or a fund administrator sends showing every position held, one line each, with a handful of measurement columns alongside. the MACAULAY column and the MODIFIED column sit side by side, both are quoted to four decimal places, and both look like the same species of number. One measures a stretch of waiting. The other measures a rate of change. Copy the pair in the wrong order and the portfolio figure comes out wrong by a factor nobody notices. The closing block below takes that error apart.
A statement arrives whose fourth column is headed only with the word duration, quoted to four decimals. What is the honest next step?
How does one operation turn a table into four portfolio figures?
Each row's share of the total market value is a weight for that holding, and the weights add to one. The weights run down the maturity column and are added: weighted average maturity. The identical weights run down the MACAULAY column and are added: the portfolio's MACAULAY duration. The same weights run down the MODIFIED column and are added: the portfolio's MODIFIED duration. Three different portfolio figures come out of one operation applied to three different columns, and the operation itself never varies by so much as a step.
The fourth output is not an average at all. The benchmark's MODIFIED duration subtracted from the portfolio's is the active difference. An active difference is a sensitivity and not a stretch of time. The active difference needs no weights, no grid and no holdings, and that turns out to matter a great deal below.
Notice what the third card is careful not to say. A MODIFIED duration is a rate of change and never a stretch of time, so the first two outputs carry the word years and the third one does not. Tidiness is not why the calculator prints those unit labels. A portfolio report that leaves them off is the exact document from which somebody later copies the wrong column.
Three quarters of a portfolio's market value sits in a holding whose MODIFIED duration reads 6.561348, and the last quarter in one reading 1.882353. Where will the portfolio's own MODIFIED duration land?
Half the market value sits in a ten year bullet bond and half in a two year zero coupon holding. Pick a side before the arithmetic arrives. Which of the two portfolio readings comes out higher?
What does the worked default return?
The grid above is loaded with two holdings and half the market value in each. The ten year bullet bond arrives with both of its duration figures already made, 7.119063 years and 6.561348. The second holding is a two year zero coupon claim priced off the recorded two year reading of 6.25 per cent, compounding once a year. Because it pays nothing at all before the day it repays, its MACAULAY duration is also 2.000000 years, and its MODIFIED duration is 2.000000 divided by 1.0625, or 1.882353.
The three readings are printed as plain text here as well as live in the panel. Weighted average maturity comes out at 6.0000 years, the portfolio's MACAULAY duration at 4.5595 years, and its MODIFIED duration at 4.2219. Hold the first two side by side for a moment: 1.4405 years separates two figures describing the same two holdings on the same day.
| Row | Market value | Weight | Maturity | MACAULAY | MODIFIED |
|---|---|---|---|---|---|
| Ten year bullet bond | Rs 5,00,000/- | 50.0000% | 10.000000 | 7.119063 | 6.561348 |
| Two year zero coupon holding | Rs 5,00,000/- | 50.0000% | 2.000000 | 2.000000 | 1.882353 |
| Portfolio | Rs 10,00,000/- | 100.0000% | 6.0000 | 4.5595 | 4.2219 |
A word about the decimal places in that table, because a checking reader will otherwise land one ten thousandth away from the printed answer and assume the mistake is theirs. For the ten year bullet bond the record prints a MACAULAY duration of 7.1191 years, to four places. A four place 7.1191 averaged with 2.0000 gives 4.55955, and 4.55955 sits exactly on a half at the fourth decimal. Where it goes from there depends entirely on which rounding rule a given spreadsheet happens to use. So the grid is fed the underlying figure carried to six places, 7.119063, and the portfolio reading of 4.5595 follows from it without any coin toss. The same reasoning puts 6.561348 in the MODIFIED box rather than the recorded 6.5613, and 1.882353 rather than 1.8824.
Why is that first gap entirely the bullet bond's doing?
Take the two holdings apart and the answer falls out in one line. The ten year bullet bond repays in 10.000000 years, but its MACAULAY duration is 7.119063 years, so 2.880937 years of gap opens up between the two. Every rupee of coupon landing before the repayment date drags the average waiting time inward, and nine of them land. The two year zero coupon holding hands over nothing until the day it repays, so nothing drags anything inward, and the gap it opens measures 0.000000 years.
Half of 2.880937 is 1.4404685, and that is the whole of the portfolio's 1.4405 year gap, down to the last place. Nothing else contributes. There is nothing else to contribute. Once that is visible, the general rule needs no proving: a portfolio holding nothing but zero coupon claims shows no gap between the two averages at all, and a portfolio stuffed with high coupon holdings shows a wide one. The gap is a reading of how much of the promised money arrives early.
A portfolio is built entirely out of zero coupon holdings of various lengths. What does this calculator return for the distance between its weighted average maturity and its MACAULAY duration?
And the second step, from 4.5595 down to 4.2219?
That one happens row by row, before any averaging takes place. Each holding's MODIFIED duration is its own MACAULAY duration divided by one plus its own yield. The ten year bullet bond yields 8.50 per cent, so 7.119063 divided by 1.085 gives 6.561348. The two year zero coupon holding is priced off 6.25 per cent, so 2.000000 divided by 1.0625 gives 1.882353. Two different divisors, applied to two different rows, and only then does the weighting happen.
So there is no single yield by which the portfolio's MACAULAY duration can be divided to arrive at its MODIFIED one. 4.5595315 divided by 4.2218505 is 1.079984, and 1.079984 is neither 1.085 nor 1.0625. The ratio 1.079984 is a blend of the two divisors, weighted the same way as everything else in the calculator, and it belongs to this particular pair of holdings and to no other. A treatment that offers one yield and divides the portfolio figure by it has quietly assumed every holding sits at the same yield. The number 1.079984 is worth keeping to hand: what goes wrong in the closing block turns out to be about precisely that factor.
What is the word PARALLEL doing inside these figures?
PARALLEL is doing more work here than most readers expect, and it is doing it in two places rather than one. The obvious place is the rupee line: a MODIFIED duration multiplied by a move size prices a move in which the whole SPOT curve steps sideways, every point of it, by one common amount on one common day. The less obvious place is the average itself. Adding MODIFIED durations together with market value weights delivers the portfolio's true sensitivity on one condition only. Every holding's own yield must step by one common amount on one common day. The assumption has already done its work inside the fourth output long before any rupee figure appears.
Which is why the calculator prints the word beside the outputs instead of tucking it into a footnote. Suppose a rise in the two year reading were larger than a rise in the ten year one. The two holdings would then be reacting to two different moves, the weights would still add to one, the average would still print to four decimals, and it would no longer be measuring what its heading says. Nothing about the output would look different. An output that cannot be seen to be wrong is the whole reason the assumption sits on the face of the panel.
A move that is not parallel has no box in this calculator, and no figure comes back for one. A curve that twists asks something else, and what comes back is a different number entirely. Pricing a twist needs a stated shape for the move, part by part along the curve, and that work is covered separately.
Which of the three rupee figures is actually in view?
One move, three answers, and the whole point of the block is that each one arrives with its name attached. The portfolio's MODIFIED duration multiplied by the size of the move gives the WHOLE EXPOSURE, first as a percentage of total market value and then in rupees. The benchmark's MODIFIED duration multiplied by that same move gives the part that arrived with the benchmark, before anyone made a decision about anything. The active difference multiplied by the same move gives the ACTIVE PART.
The first and the third are the two figures most often confused, and the second is precisely what explains the distance between them, so the calculator returns all three and prints the label beside each. On the two holding grid above, a PARALLEL rise of 100 basis points prices out as follows.
| Output | Per cent of market value | In rupees | What the figure is about |
|---|---|---|---|
| Whole exposure | 4.2219 | Rs 42,219/- | The book, all of it, whoever put it together |
| Benchmark part | 4.8000 | Rs 48,000/- | What came with the benchmark, before any decision was taken |
| Active part | minus 0.5781 | minus Rs 5,781/- | The distance between the two questions above |
The middle bar is longer than the top one, which surprises people the first time. The middle bar is only saying that this particular pair of holdings sits shorter in MODIFIED duration than the benchmark it is measured against, so the active part comes out on the minus side and pulls the whole exposure in. Retyping the benchmark box above as 3.50 rearranges all three figures, with the identity still closing.
Somebody asks what the manager's own decision against the benchmark is worth under the declared move. Which of the three rupee figures answers that?
Only a portfolio's total market value and its MODIFIED duration are available. No holdings, no maturities, nothing else. Which of this calculator's outputs can that still fill?
What happens when there is no holding table at all?
Here is the awkward fact about this calculator, and it is worth stating plainly rather than designing around. The portfolio this material keeps coming back to holds Rs 5,000 crore of fixed income. Its MODIFIED duration reads 5.20. The benchmark it gets measured against reads 4.80. No holding table for it has ever been published. None exists. Written out in whole rupees that market value is Rs 50,00,00,00,000/-, and that is the form the box below takes. So the grid cannot be filled, and the honest thing to do is run the calculator with the grid empty and see what survives.
A vegetable seller counted the notes at the end of every day, so she knows exactly what she spent this month, down to the rupee. She never wrote the crates down, so what share went on tomatoes she cannot say. The total is real. The split was never written down, and no length of staring at one figure will conjure the other. The second panel below is that situation exactly: the rupee outputs still work, the two averages cannot, and which of the cells goes blank is the most useful thing in this walkthrough.
The same calculator, run with the grid empty
The two holding rows are deliberately blank. Type a market value and a maturity into one of them and watch the two average cells wake up. The three rupee cells carry on running off the portfolio level box below.
| Holding | Market value, Rs | Maturity, years | MACAULAY, years | MODIFIED |
|---|---|---|---|---|
| Row one, blank | ||||
| Row two, blank | ||||
| Portfolio total market value, Rs | Portfolio MODIFIED duration | |||
| Benchmark MODIFIED duration | PARALLEL move, basis points | |||
On a PARALLEL rise of 100 basis points, a portfolio of Rs 5,000 crore carrying a MODIFIED duration of 5.20 shows a whole exposure of Rs 260 crore, of which Rs 20 crore is the active part. The two average cells stay empty, because there is no table to average.
The empty cells carry the point. A portfolio level MODIFIED duration is what remains after the holding table has been thrown away, and it is enough to price a declared move and nothing more. How long the money is out for lives in the maturity column, and a portfolio level MODIFIED duration cannot say it. An average waiting time lives in the MACAULAY column, and it cannot supply that either. A blank cell with its reason written inside is a better thing to hand a reader than a figure invented to fill the space.
Under a declared PARALLEL rise of 100 basis points the empty panel hands back Rs 260 crore and Rs 20 crore. What is the third figure, and what does it establish?
What will this calculator not return?
A tool that lists its refusals on its own face is more use than one that quietly returns something for every question. Five things get asked of this calculator that it cannot answer, and each one is turned down for a different reason.
| What gets asked for | What comes back | Why it comes back that way |
|---|---|---|
| The cost of a curve that steepens, flattens or twists | Nothing at all | There is no box for such a move, and no scenario stands behind the calculator out of which one could be built. |
| A convexity correction to the estimate it just printed | Nothing at all | What it prints is a first order estimateA reading taken by multiplying a sensitivity by the size of a change and stopping there, without any allowance for the sensitivity itself shifting as the change gets larger., and correcting an estimate of that kind is separate work, covered separately. |
| A probability, a forecast or a range around any output | Nothing at all | Four columns of a grid hold no distribution of anything, so a range would be manufactured rather than measured. |
| A view on whether the active difference is large, small or right | Nothing at all | That is a judgement about a decision somebody has already taken, and none of the ten boxes bears on it. |
| What any rate is going to do next | Nothing at all | The move size is a declared figure. Declaring a move is not the same act as predicting one, and the calculator only ever prices what was declared. |
The fourth row is the one worth dwelling on. A portfolio sitting longer in MODIFIED duration than its benchmark got there because somebody decided it should sit there. The calculator prices that decision under a declared move, and the pricing is arithmetic; whether the decision was a good one is not arithmetic, and nothing in the ten boxes could settle it. A verdict, a range around an output, a probability and a view on where a rate goes next all need material the ten boxes do not hold, so the calculator returns none of them.
Which of these does the calculator turn down specifically because it has no input from which such a figure could be built?
The error that gets made here, and what it costs
Somebody has a holding statement open in one window and this grid in the other. Somebody copies the MACAULAY column into the MODIFIED box. Not out of carelessness: the two columns sit next to each other on every statement this kind of material produces, both are quoted to four decimal places, and only one of the pair measures a stretch of waiting. Nothing about the entry looks wrong on the way in, and nothing about the output looks wrong on the way out.
Run with the two columns swapped, the worked default puts the cost of a 100 basis point PARALLEL rise at 4.5595 per cent of market value, where the honest reading is 4.2219 per cent. The swapped reading is 0.3377 percentage points too large. As a share of the right answer it is 7.9984 per cent too large, and that figure has appeared already. The blend of one plus each holding's own yield, weighted by market value, is 1.079984, and 1.079984 is exactly the factor the swap fails to divide by.
Every rupee figure downstream is overstated by that factor. The error survives review because reviewers check arithmetic rather than column headings, and the arithmetic is flawless. The repair is one line long: read the heading of the column being copied, every single time. This calculator spells out both headings in full for that reason, instead of shortening either one to the bare word duration.
Who actually sits down and uses this?
Three people, and they enter the calculator at different doors. An analyst opening a published fact sheet is handed a total and a portfolio level MODIFIED duration, and that is the end of the disclosure. No holdings, no maturities, nothing to average. The second panel is not a degraded version of the first for that reader; it is the whole of the toolkit, and knowing which two cells must stay blank is what stops a plausible average being invented to fill a report.
A treasury desk at a lender has the grid, so it reaches for the top panel instead. The desk is funding loans that run for years out of deposits that run for months, and before a committee meets somebody has to be able to say what a stated rise in rates costs the book. The whole exposure is the answer to that question. The book is not being measured against a benchmark at all, so nobody at that table is interested in the active part.
And somebody preparing a note on a manager wants only the third figure. The whole exposure describes the book, most of which arrived with the benchmark and reflects nobody's positioningWhere a holder has deliberately placed itself relative to the yardstick it is measured against, as opposed to the exposure it would carry by simply matching that yardstick. at all. The active part is the slice attributable to a decision. Handing that reader the whole exposure by mistake overstates what the manager did by thirteen times on the recorded portfolio. An error of that size survives a meeting.
Every figure in both panels answers to a box that can be retyped, so no output is hidden behind a control. The top panel adds two things on top of the boxes. One is a slider that walks the declared move from a fall of 300 basis points, through no move at all, to a rise of 300. Of everything on offer, that relationship is the one worth dragging rather than typing. The other is a button that reads the MACAULAY column straight into the MODIFIED boxes, so the error named below can be produced rather than merely described.
Where does this calculator stop, and who keeps the wording it leaves out?
Five blanks sit under this calculator, and each one is keyed to the cell that would have needed it filled. A list of rule names never shows when the missing wording starts to matter. A cell does.
Five cells, and the wording that would have to stand behind each
| The cell it belongs to | What would have to be settled before real money moved through it | Who keeps that wording |
|---|---|---|
| The market value column of the grid | The norm a debt portfolio is carried at on a stated valuation date. The norm decides every weight the calculator computes, and therefore every output. | The Reserve Bank of India, rbi.org.in |
| The portfolio MODIFIED duration box in the second panel | The rate sensitivity figure a pooled vehicle publishes, and how often the publishing has to happen. Without that duty there is nothing to type into the box. | The Securities and Exchange Board of India (SEBI), sebi.gov.in |
| The move size box | The set of moves a supervised balance sheet has to run against its own rate exposure. Those moves are prescribed rather than chosen, the opposite of what this box allows. | The Reserve Bank of India, rbi.org.in |
| The three rupee cells | The capital treatment that attaches to interest rate risk once figures like these sit in a supervised book. The capital treatment converts a cost estimate into a requirement. | The Reserve Bank of India, rbi.org.in |
| Any row about to be added to the grid | The day count and settlement conventions that fix the date a trade turns into a holding, and therefore whether the row can be entered yet. | The Reserve Bank of India, rbi.org.in |
Each of the five gets rewritten from time to time by whoever keeps it. So the middle column describes the item instead of quoting it, and the address in the third column is worth more than any sentence typed here could be.
A single holding's MACAULAY duration and its MODIFIED duration are not built anywhere above. Both arrive at the grid already made, from a schedule of the holding's own dated amounts, and that construction is covered separately. Convexity is not computed here, and the first order estimate the calculator prints is not corrected for it. Correcting a first order estimate is covered separately. A curve that changes shape rather than stepping sideways needs a separate move stated for each part of it, and one box holding one common move cannot express that. The three portfolio arrangements are covered separately. Drift is not measured here either: whether a portfolio's own results keep close company with its benchmark over time is covered separately.
Whether the position just priced is one worth holding is a judgement, and four columns of a grid hold no material out of which a judgement could be assembled.
What was consulted, and what was deliberately not
Every rupee figure above was rebuilt from four inputs printed beside it, so the arithmetic needs no keeper at all. The market value column those inputs begin from does need a keeper, and so do the duties that attach to a regulated holderAnyone whose holding of debt is supervised by a public authority, and who therefore carries reporting and capital duties on it that a private household does not. once real money sits behind the grid. Two addresses hold that wording.
| Source | Document | Site |
|---|---|---|
| Reserve Bank of India | Its live wording on carrying a debt portfolio, on stressing rate exposure, and on when a trade becomes a holding | rbi.org.in |
| SEBI | Its live wording on what a pooled vehicle publishes about the rate sensitivity it carries, and how often | sebi.gov.in |
| The bodies that settle and report trades in government securities | Traded curves, named here only as the kind of publisher they are | Named as a class, no address taken |
| Repository route for academic work | Where a named result would be checked before its name was typed | ideas.repec.org |
The two holdings in the worked grid, the portfolio in the second panel, its benchmark and the two year reading of 6.25 per cent are invented.
Educational material. Not advice on any investment, tax, budget or market position.
