90 likes | 104 Views
Explore various types of fixed income securities and pricing methods, including discount and coupon-bearing bonds. Learn about zero coupon bonds, their benefits, and industry acronyms. Implement pricing signatures and handle heterogeneous collections efficiently.
E N D
We will have to support a mix of instrument types to support aggregate measuresE.g., risk on a book of bonds 3 general classes of fixed income security pricing methods: • “Discount” • “Coupon bearing” • “Pay at maturity” (pretty rare) We will implement two distinct types: • Coupon bearing • Zero coupon (sub-type of Discount)
Zero Coupon bonds • Zero coupon bond is a “discount” type of instrument • Why do these products exist? • No re-investment risk • Tax treatment • Ease of cash-flow matching • Banks used to make them (“animals” or “felines”) • Fun with backronyms: • Lehman “LIONS” – Lehman Investment Opportunity Notes • Merrill “TIGRS” – Treasury Income Growth Receipts • Solomon “CATS” – Certificates of Accrual on Treasury Securities • Now the government does it • Most of the cats have died off... • “STRIPS” – Separately Traded Registered Interest and Principal
Indirection, Polymorphism, Data Abstraction • How to handle a heterogeneous collection? • Coupon-bearing • Zero Coupon • Etc. • Need a pricing “signature” to enforce common behavior • Pricing function signature as an interface class • Data-file parameters will allow us to switch at run-time • Is-a, Has-a, Uses… • The envelope/letter idiom • Collection requirements: • Searching • Summing • Partitioning • Sub-totaling • Refer to code_example.cc
Enhancements to Input File • “Ticker” which is a string identifying the bond issuer • a “Rate Type” field which we will need later. For now it specifies the input type as “YIELD” only • Quality code which is the rating an independent agency grades the issuers credit risk – e.g., “AAA” • Amount in 000’s • Note: the coupon field can be 0 which identifies the bond as a zero coupon bond • Hack at the SBB_io* classes to support these changes • Refer to .txt file
Deliverables • Build in support for a “Zero Coupon” Bond • Build a Trading Book collection class to handle a heterogeneous mix of types – must use inheritance • Possible “collectable” abstractions: • Instrument • Calculator • Bond • A good criteria for class design: separately testable • Best way to use the SBB_io class data? • Inherit? • Contain? • Use? • (“is-a”, “has-a”, “uses”…) • Load in the new data file to test an expanded portfolio of products
Deliverables continued… - Download new version of data input file • New data items which will have to added in SBB_io class: • Ticker (unique ID that identifies the issuer of that bond) • Amount (this is the total position for that bond, in thousands) • Quality code (the credit rating for that issuer - we will use this later) • You will have to add a convenience mf() for our industry standard identifier: “Ticker Coupon MaturityDate” (just a concatenation of existing fields) • Using trading book collection class to calculate: • Total Position of the trading book • Positive amounts are “long”, negative amounts “short” • If you have two positions in a trading book (1 long position of 1MM and 1 short position of 1MM), then you would be “flat” on a notional or “face amount” basis. However if the dv01’s are different, then your risk would not be equal. • New measure per bond: “Risk” = dv01 * Amount • Two set of outputs • Per bond: Amount and Risk per line in the tradingbook file, to stdout • Example line: 5000 3.12 • Per book: total position (sum of amounts) and total risk (sum of risks)
Spreadsheet Living Spec • “ytm_sheet.xlsx” is a simpler version of our prior sheet • Highlights the interest rates sensitivity calc (dv01) • Highlights the zero coupon calculation • Using sensitivities vs. full re-valuation • What do you assume away if you use dv01 to approximate a price change (given a yield change)? • Estimate vs. full re-price
First Quiz next week on MMM! • Chapters 1-6 • October 5th