Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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)