Duration Matching for Lowest Cost Bond Portfolio

Hi, I’m working on a problem related to formulating a linear program that minimizes cost of portfolio. I need to achieve this using duration matching.

Here is the image of the bond information:

How would I get the dollar durations of the assets? I thing I computed the durations of the liabilities correct… I computed PV of each liability and then just plugged into formula for each liability. Not sure how to complete the rest of the formulation and would appreciate any help. Thanks.

You can calculate the duration of each bond.
You have the cash flows and prices so you can calculate YTM
Use that to calculate MacAulay then modified duration for each money.
You can get the money duration per 100 par but the money duraor amount held will depend on how much you own.tion f
If you are using excel I think all the functions are built in.

1 Like

Not sure you need to use duration.
You have given a list of payments/dates that you need to replicate, and any portfolio of bonds that replicates that payment stream will have the correct duration.

You have 13 bonds. If you say you have amount x_1 of bond 1, x_2 of bond 2, and so on, then the cost of the portfolio will
P=109x_1+94.8x_2+99.5x_{3}+93.1x_{4}+97.2x_{5}+96.3x_{6}+92.9x_{7}
+110x_{8}+104x_{9}+101x_{10}+107x_{11}+102x_{12}+80x_{13}

You also have the constraints that the payment stream must be replicated, which gives you 6 constraints:
time 1
10x_1+7x_2+8x_3+6x_4+7x_5+6x_6+5x_7+10x_8+8x_9+6x_10+10x_{11}+7x_{12}+100x_{13}=500
time 2
10x_1+7x_2+8x_3+6x_4+7x_5+6x_6+5x_7+10x_8+8x_9+6x_{10}+110x_{11}+107x_{12}=200
time 3
10x_1+7x_2+8x_3+6x_4+7x_5+6x_6+5x_7+110x_8+108 x_9+106x_{10}=800
time 4
10x_1+7x_2+8x_3+6x_4+7x_5+106x_6+105x_7=200
time 5
10x_1+7x_2+8x_3+106x_4+107x_5=800
time 6
110x_1+107x_2+108x_3=1200

You need to minimise the cost of the portfolio (P above) subject to these 6 constraints.
There may be other constraints you have not told us about, for example, if shorting bonds is not allowed, you will require x_1\ge 0, x_{2}\ge 0, \cdots.
There’s more than one way to skin a cat, but one approach might be linear programming and the Simplex Algorithm.

1 Like

Good point

(s)he does state in the question (s)he needs to use duration.

1 Like

This was the first part of the problem which I was able to get through cash matching as you’ve demonstrated. However, I was asked to do it again using duration and PV matching. I followed MikeyF’s advise and think it worked… Thanks anyway!

1 Like

Out of interest did you use another linear programming tool.

You would have a duration for each bond and teh liability so you have one constraint the weighted portfolio duration - liability duration but you what the total spend to be as low as possible.

2 Likes

I would expect that if you’re only matching duration, you may be able to construct a lower-cost portfolio than if you match each of the cash flows.

1 Like

I’m using MatLab to formulate and solve both of these LP’s.

Besides the duration constraint, I also had a constraint to match the PV’s of each bond with the liabilities. Exactly, objective is to find min cost portfolio

1 Like

I actually found that the cost was higher than cash flow matching probably due to being expensive to properly time the cash flows and periodically maintain large cash balances.

1 Like