Since GMU finance majors are newly-minted Python pros, here is your final exam assignment: model-out a Thunderball bond strategy.
Here are the rules:
Pays a coupon to the holder of the bond on every payment date.
If Payment Date <= Intro Coupon End Date, then Payoff = Notional * Year Fraction * Intro Coupon Rate
If Payment Date > Intro Coupon End Date, then:
Cap = Min(Global Cap,Previous Coupon * Cap Prev Leverage + Cap Spread)
Floor = Max(Global Floor,Previous Coupon * Floor Prev Leverage + Floor Spread)
Coupon = Global Leverage * Index Level + Global Prev Leverage * Previous Coupon + Global Spread
Payoff = Notional * Year Fraction * Min(Cap,Max(Floor,Coupon))
Here is Bloomberg’s representation of a Thunderball deal.
Here is the backtesting of a Thunderball deal.
Of course, Federal Reserve QE and ZIRP greatly influence bond trading volumes … and rates.