The Model
! Bond portfolio/cash matching problem. Given cash
needs in a series of future periods, what
collection of bonds should we buy to meet these
needs?;
SETS:
BOND/A B/ :
MATAT, ! Maturity period;
PRICE, ! Price;
CAMNT, ! Coupon;
BUY; ! Amount to buy;
PERIOD/1..15/:
NEED, ! Cash needed each period;
SINVEST; ! Short term investment each period;
ENDSETS
DATA:
STRTE = .04; ! Short term interest rate;
MATAT = 6, 13; ! Years to maturity;
PRICE = .980, .965; ! Bond purchase prices;
CAMNT = .060, .065; ! Bond coupon amounts;
NEED = 10, 11, 12, 14, 15, 17, 19, 20, 22, 24,
26, 29, 31, 33, 36; ! Cash needs;
ENDDATA
! Minimize the total investment required to generate
the stream of future cash needs;
MIN = LUMP;
! First period is slightly special;
LUMP = NEED( 1) + SINVEST( 1) +
@SUM( BOND: PRICE * BUY);
! For subsequent periods;
@FOR( PERIOD( I)| I #GT# 1:
@SUM( BOND( J)| MATAT( J) #GE# I:
CAMNT( J) * BUY( J)) +
@SUM( BOND( J)| MATAT( J) #EQ# I:
BUY( J)) +
( 1 + STRTE) * SINVEST( I - 1) =
NEED( I) + SINVEST( I);
);
! Can only buy integer bonds;
@FOR( BOND( J): @GIN( BUY( J)));
Model: PBOND