60 likes | 113 Views
Our market “ risk ” Measure. Position adjusted sensitivity using 1 basis point change Example of “ bond risk ” : Price (pv): 85.731991 (that ’ s a total amount of $857.31 the bond is worth) DV01: 0.092519 (how much price moves with a 1/100 of 1% change in yield = .01)
E N D
Our market “risk” Measure • Position adjusted sensitivity using 1 basis point change • Example of “bond risk”: • Price (pv): 85.731991 (that’s a total amount of $857.31 the bond is worth) • DV01: 0.092519 (how much price moves with a 1/100 of 1% change in yield = .01) • amount: 10000 (10,000 is 10MM “position”) • Position risk: 9.251928 (that’s $9,251 change to position value given a 1bp move) static double bond_risk( const SBB_bond_calculator_interface* bond_calc_ptr, const SBB_instrument_fields* bond_record_ptr, double dv_bump_amount) { double pv = bond_calc_ptr->PV(bond_record_ptr->Yield() ); double dv = bond_calc_ptr->dv_bump(bond_record_ptr->Yield(), pv, dv_bump_amount); double position_risk = bond_record_ptr->Amount() * dv/100.0; return position_risk; }
Units Examples • $10,000,000 of a bond • 9% coupon, 20 years to maturity - current price: 134.672 and yield is: 6% • Market value is: $10,000,000 * 1.346722 = $13,467,220 • Bump yield by up by 100 basis points (1%) and price is now: 121.3551 • Our data file has amounts in 000’s so $10,000,000 would be entered as 10000 • Dollar Value of an “01” (DV01) - price diff between starting yield and 1/100th of a percent move of yield, or 1 basis point, (1/100th of above example). Additionally, it is the average of two shifts: the absolute value of the differences resulting from both an up and down move. • “Risk” for us is defined as Amount * DV01/100 and thus stays in thousands since Amount is in thousands. • Risk of 44.123 means for every basis point change in yield we would gain/lose $44,123. • double yield_delta_abs = fabs(bump_amount); • // yield goes up, price goes down • double down_price = PV(base_yield + yield_delta_abs); • double price_delta_down = base_price - down_price; • // yield goes down, price goes up • double up_price = PV(base_yield - yield_delta_abs); • double price_delta_up = up_price - base_price; • dv01 = (price_delta_up + price_delta_down ) / 2.0;
Bonds are typically priced “relative” • Generally: • Lower quality is priced relative to higher quality • Lower liquidity is priced relative to higher liquidity • Relative to what? • Individual bond • Collection of bonds (like an index) • “Spread” pricing: • Yield of Treasury = 4.68% • Yield of Corporate = 5.68% • Spread of Corporate = 100bp • Spread is measure of credit risk • Base interest rate + spread • Base interest rate + risk premium • Spread = risk premium
Pricing Bonds off a “Yield Curve” • Collection of liquid, high quality bonds (like an index) • Price using “spread” off matching benchmark bond • Match on maturity - the bond’s “remaining term” to “closest” benchmark • “Yield Curve” constituent criteria: • Type of Issuer • Issuer’s perceived credit worthiness • Term of maturity of the instrument • Others: optionality, taxability, expected liquidity… • The benchmark we will use is: • Current (most recently issued) “Treasuries” • “On-the-run” vs “Off-the-run” • Example: • “Trading 30 over the 10 year” • Means: “yield of the quoted bond is 30 basis points more yield than the treasury bond yield which has a maturity of 10 years” • “Treasuries” (no credit risk, highest quality, highest liquidity - benchmark to the world) • What is the “normal” shape of the “yield curve”? • How do the treasury yields come to be? • Fed funds rate, discount rate, auction results
Deliverables for Oct 23 • Build a yield curve class • 4 bonds in curve: • 2, 5,10,30 year maturities • Load in new yield curve data file • Special version of existing “data.txt” • Bonds with ticker “T” • Load new bond data file which will include a new field: • Spread : “30bp” and tag “SPREAD” or “YIELD” • Price and run risk for the book using the curve • Our scenarios will be different yield curves: • Parallel up/down, tilts (flatter, steeper)