MODEL: ! munbndt;
! Bond bidding and underwriting.
The borrower has specified how much it wants
to pay back in face value in each of a number
of future maturity years.
The bond underwriter wants to choose an interest
rate(or coupon payment) for each maturity given that
a) borrower has restricted the number of distinct
interest rates allowed,
b) underwriter knows the market price at which he can
resell a bond of a given maturity and interest rate,
and so as to strike a good compromise between the two
objectives:
i) underwriter makes a reasonable profit on the resale,
ii) the bid is attractive to the borrower in terms of
low interest rates and amount of money he receives
initially.
This model puts a constraint on (i) and makes it attractive
to the borrower by minimizing the IRR (the socalled
True Interest Cost) of the cash stream as seen by the borrower.
The underwriter pays the borrower the face value of the bonds,
plus perhaps a premium;
! Keywords: municipal bonds, bond bidding,
true interest cost, underwriting;
SETS:
MATURITY:
YRS2GO, ! Years to maturity for this maturity;
FACEV; ! Total face value bonds at this maturity;
RATE:
CRATE, ! A possible coupon or interest rate;
Y; ! = 1 if rate i used for any maturity;
RXM( RATE, MATURITY):
X, ! = 1 if rate i assigned to maturity t;
PRICE; ! Selling price of bonds at interest i, maturity t;
ENDSETS DATA:
! Based on an example in Eppen, Gould, and Schmidt,
which was based on an example in Schrage(1986);
MATURITY= M01, M02, M03, M04, M05, M06;
YRS2GO= 2, 3, 4, 5, 6, 7;
FACEV = 250, 425, 1025, 1050, 1100, 1150;
RATE = R300, R325, R350, R375,
R400, R425, R450, R475, R500;
CRATE = .0300, .0325, .0350, .0375,
.0400, .0425, .0450, .0475, .050;
! Max number of rates allowed;
NRATES = 3;
! Target profit for underwriter;
TARGPR = 40;
! What underwriter thinks it can sell each maturity
at as a function of coupon rate;
PRICE = 245, 418, 1015, 1040, 1080, 1130,
248, 422, 1016, 1042, 1084, 1135,
250, 423, 1017, 1044, 1085, 1140,
251, 424, 1025, 1046, 1090, 1150,
253, 430, 1029, 1050, 1095, 1155,
255, 435, 1035, 1055, 1096, 1160,
256, 437, 1037, 1060, 1105, 1165,
257, 440, 1038, 1062, 1110, 1170,
258, 441, 1040, 1065, 1115, 1175;
ENDDATA
!;
! The model;
! Each maturity must get a rate;
@FOR( MATURITY( T):
@SUM( RATE( I): X( I, T)) = 1;
);
! Set Y( I) = 1 if we use rate I;
@FOR( RXM( I, T): X( I, T) <= Y( I);
! The X's must be 0 or 1;
@BIN( X( I, T));
);
! Limit number of rates;
@SUM( RATE: Y) <= NRATES;
! Compute total sales if sold on market;
TOTSALE = @SUM( RXM( I, T): PRICE( I, T)* X( I, T));
! Compute total face value;
TOTFV = @SUM( MATURITY: FACEV);
! Sources = uses of funds in period 0;
TOTSALE = TOTFV + PREMIUM + TARGPR ;
! Compute true interest cost;
TOTFV + PREMIUM >=
@SUM( RXM( I, T):
X( I, T) * CRATE( I) * FACEV( T) * @FPA( TIC, YRS2GO( T)))
+ @SUM( MATURITY( T): FACEV( T) * @FPL( TIC, YRS2GO( T)));
! Minimize True Interest Cost to borrower;
MIN = TIC;
END
