NOTES ON CB AND ASSET SWAP MODELS
The Black-Scholes PDE and Boundary Conditions
In addition to a regular CB, there are two types of trades that the asset swap model can handle: asset swap and CB call option.
An asset swap is a plain vanilla fixed income swap (it can be fixed-floating or fixed-fixed swap), plus a call option on the CB. When the option is exercised, the remaining swap cash flows are nullified.
Even though they are different in a number of ways, both products can be viewed as equity call options with/without cash flows attached, and treated in a unified framework.
Our model is one factor. It will take a fixed yield curve and fixed credit spread. It is based on standard Black-Scholes type PDE that we are now deriving.
The PDE:
Supposed at time t, the stock price is S, fair value of the equity option is P(t,S), delta is dP/dS(t). Supposed from time t to t +dt, stock volatility is v(t), risk free rate is r(t), borrow fee is h(t), stock dividend yield is y(t), equity option cashflow rate tied to the equity option is c(t). A hedger can buy the CB at P(t,S), sell dP/dS shares. Assuming the stock process is a Brownian motion with drift:
dS = g(t)*dt + v(t)dZ where g(t) is the growth rate,
P, as a smooth function of S and t, would follow
dP(t,S) = dP/dt * dt + dP/dS * dS + 0.5*d(dP/dS)/dS * dS*dS,
that is:
dP(t,S) = dP/dS * dS + (dP/dt + 0.5*d(dP/dS)/dS * v(t) * v(t)) *dt,
At time t+dt, the hedger’s p&l on the CB and stock position is: dP(t,S) – dP/dS * dS. He also pays funding cost P(t,S)*r(t)*dt, receives rebates on the short selling dP/dS*S * (r(t) – h(t) – y(t)) * dt, and receives cash flows tied to the equity option c(t)*dt because he owns the equity option. His P&L should be zero in this fair world:
dP(t,S) – dP/dS * dS – P(t,S)*r(t)*dt + dP/dS*S * (r(t) – h(t) – y(t)) * dt + c(t)*dt = 0
Substitute the first term and take off dt we get:
dP/dt + 0.5*v(t)*v(t)*d(dP/dS)/dS + S*(r(t) – h(t) – y(t))* dP/dS – P(t,S)*r(t) + c(t) = 0
This is the Black-Scholes differential equation.
Note that for a CB arbitrager who takes the credit risk with credit spread s(t), he would demand a return of (r(t) + s(t)) on his net funding P(t,S) – dP/dS*S, instead of the risk free rate. So we get PDE equation for CB by replacing r(t) in the above equation with (r(t) + s(t)).
In the case of an exchangable CB when the stock is different from the issuer itself, shorting the stock does not compensate the issuer credit risk. Our modification to the above equation is to fund the CB at risky rate, but receive rebates only at risk free rate.
We solve the PDE numerically with the standard so-called implied method. The first thing to do is the standard transformation X = ln S. The PDE becomes:
dP/dt + 0.5*v(t)*v(t)*d(dP/dX)/dX + (r(t) – h(t) – y(t) - 0.5*v(t)*v(t))*dP/dX – P(t,X)*r(t) + c(t) = 0
Calling the coefficients A, B, C, D, it is:
dP/dt = A(t)* d(dP/dX)/dX + B(t)*dP/dX + C(t)*P(t,X) + D(t)
The region {0<t<T} x {ln L<X< ln U} is divided evenly (although t direction do not exactly need to be evenly) with rectangular grids(L, U are the lower and upper boundaries of the stock). The vertices are { (i, j): 0<=i<= m, 0<=j<=n }.
The finite difference equation approximation is:
(P(i+1, j) – P(i,j)) /dt = A(t) * (P(i, j+1) – 2*P(i,j) + P(i,j-1)) / dx^2 +
B(t) * (P(i,j+1) – P(i,j-1)) / (2*dx) +
C(t) * P(i,j) +
D(t)
i.e.
( A(t)*dt/dx^2 – B(t)*dt/(2*dx) ) * P(i,j-1) +
(-2*A(t)*dt/dx^2 + C(t)*dt + 1) * P(i,j) +
( A(t)*dt/dx^2 + B(t)*dt/(2*dx)) * P(i,j+1) = P(i+1,j) – D(t)*dt
With boundary conditions at maturity t = T and at lower and upper stock boundary, we can work backwards to solve the n linear equations m times. The coefficients are tri-diagonal matrices. Standard Gaussian elimination is used to solve the equations.
Boundary Conditions:
There are two types of boundary conditions for the PDE: 1. the boundary conditions imposed by the specific product at any given time: for CB: conversion into stock, issuer call, investor put; for CB option: the exercise (possibly forced) of the CB option, 2. the lower and upper stock boundary conditions when the PDE is solved numerically.
We will specify the first type later when we describe the products in details. One thing to mention: because our option is really a CB option, we solve the CB PDE equation simultaneously when the CB option PDE is solved. Thus CB option’s exercise value is readily available.
On the stock lower and upper boundary it is assumed that there is no stochastic so gamma is always zero. On the lower boundary the option is out of money so delta is zero. The Black-Scholes PDE becomes an ODE:
dP/dt – P(t,X)*r(t) + c(t) = 0
The above finite difference approximation is:
(P(i+1, 0) – P(i,0)) /dt = C(t) * P(i,0) + D(t),
This will solve P(i,0) from P(i+1,0) as we work backwards in time.
On the upper boundary the option is just equity with carry. Delta is 100% if the option is exercisable, otherwise 100% less dividend and borrow fee up to the next exercisable day. The Black-Scholes PDE also becomes an ODE and P(i,m) can similarly be solved from P(i+1,m).
The products and The Excel Spreadsheet Interfaces
The three functions: xShortFormatCB(), xShortFormatASW(), xShortFormatCBOption(), will evaluate a CB, an asset swap and a CB option respectively.
CB:
As everybody knows a CB is a fixed coupon bond plus an option to convert the bond into stock. The issuer can redeem the bond, leaving the CB holder the option to convert or to be redeemed. Also a CB holder can possibly put the bond back to the issuer. At maturity the holder has the option to convert or to receive the redemption value plus last coupon. These define all the type 1 boundary conditions.
The inputs are organized into a few different blocks.
The Stock Block:
- We need “Stock Price”, a constant annualized “Stock Volatility”, “Borrow Fee”(or “Haircut”), and “Stock Dividend Yield”.
- The model uses “discrete constant” dividend yield. Given “Ex Dividend Date” and “Dividend Frequency” input, the model will generate all the ex dates including and later than the input ex date. It then uses the same dividend yield on these ex dates. As a matter of practice, a dividend cash amount is usually entered in the spreadsheet to calculate the dividend yield.
- All these rates are used “as given” in the PDE. There are no conversions from semiannual to continuous conventions whatsoever.
The Fixed Income Block:
1. Interest accrues from the “Effective Date”.
2. “First Coupon Date” is date when first coupon gets paid.
3. “Coupon Stepup Date” is the date when the first step up coupon gets paid. If Coupon Stepup Date = First Coupon Date, there is no step up coupon. The step up coupons, if any, get paid until Maturity Date.
The last coupon date is the Maturity Date.
4. “Ex Coupon Date” is for convertible preferred that does not paid the dividend after the ex date. If a reasonable date is enter, the model will generate all the ex dates including and after the input ex date. It will nullify the coming coupon if we are after the related ex date. If nothing is entered, there is no ex dates.
- If “Trade Clean” is entered as 0, the output CB value will be dirty price. Otherwise it is clean price.
- “Coupon Frequency” must be an integral divisor of 12. It is the annul frequency.
- “Day Count Basis” is used to calculate interest amount.
0 = 30/360. Accrued days between two dates are calculated based on 30 days/month and 360 days/year. Year fraction is (accrued days)/360
1 = ACT/ACT
2 = ACT/360
3 = ACT/365
4 = 30/360
It should be noted that the model does not do any month end adjustment. It is a close approximation.
- “Initial Coupon” and “Stepup Coupon” is in percentage term of the “Face Value”.
- “Redemtion value” is the amount the bond matures into per “Face Value” of the bond.
- “OID” (Original Issuer Discount) is expressed in percentage of “Face Value”. For instance, if face value is 50, OID is 20%, the issue price of the bond is 40.
The Conversion Block:
- The CB is convertible between “First Conversion Date” and “Last Conversion Date”. Both dates should fall between the CB “Effective Date” and “Maturity Date”.
- Per “Face Value” amount, the CB is convertible into “Conversion Ratio” shares plus a cash amount of “Conversion Cash Receipt”. In addition, if “Conversion Accrued Interest” = 1, issuer will pay the accrued interest upon conversion. If “Conversion Accrued Interest” = 0, no accrued interest is paid.
- “Exchangable” = 1 indicates an exchangable issue. The underlying stock is not the issuer itself. “Exchangable” = 0 indicates a normal issue.
The Issuer Call Block:
- “Is Call Discrete” = 1 indicates discreet time call. “Is Call Discrete” = 0 indicates continuous time call.
- “Call Accrued Interest” = 1 indicates the issuer will pay Call Price plus accrued interest for the bond.
“Call Accrued Interest” = 0 indicates the issuer will only pay Call Price for the bond.
- “Call notice days” = 30, for example, forces the model to make the first 30 days from valuation date not callable.
- Provisional Call Schedules should precede the Hard Call Schedules. “Provisional Schedules” is the number of provisional calls. The call periods, provisional prices and call prices are linearly interpolated from the dates and prices input. The prices are piecewise constant if the call is continuous, discrete linear if the call is discrete.
- Within Hard Call Schedules, if the flag “Is call price by yield” = 0, the schedule is generated linearly from the boundary dates and prices. Field “Hard Call Schedules” is number of hard calls schedules.
- If the flag “Is call price by yield” = 1, the yield when issue is calculated from “OID”. Accreting prices from yield are calculated for callable dates. For “First Date” (and “Last Date”), the difference between the prices from yield and “First price” (“Last Price”) (Let’s call it premium over yield price) are linearly interpolated. The call price finally used is the premium plus yield price. In this case, if the call is continuous, the bond is callable between “First Date” and “Last Date” everyday so field “Hard Call Schedules” is not used. If the call is discrete, “Hard Call Schedules” is the number of hard call schedules. The model uses it to generate discrete callable dates between “First date” and “Last Date”.
- Issuer can not call if parity < “Trigger”*Call Price. Neither can issuer call when (stock price) < “Soft trigger” * (Provisional price).
- If all the triggers are satisfied, the model will generate an issuer call if the fair value of the CB is more than what the issuer pays for the call. This includes the situation of a high coupon bond in low interest rate environment.
The Investor Put Block:
The put schedules are generated exactly in the same way as hard call schedules. Please see the explanations for hard call schedules.
The Other Parameter Block:
This block is to control the trade off between the accuracy and efficiency (run time) of the model.
- “Yearly Time Step” is roughly the number of time intervals in the PDE grid per year. An input of 400 should be sufficient. In most situations, one can reduce it to 100 or even 50, especially for noncallable CBs.
- “Stock Intervals” is roughly the number of stock intervals in the PDE grid. “Stock Upper Bound”, “Stock Lower Bound” are the stock boundaries in PDE grid. 10 times and 1/10 of the currently stock price should be theoretically sufficient for reasonable annual volatility. If volatility is really big(say 100%), then the upper boundary may miss the theoretical fat tails. One has to lift the upper boundary. Stock distribution based boundary formulas will also fail because the pay out beyond upper boundary is too big to be missed. In practice, one would never trade a CB based on theoretical valuation from 100% volatility.
- “Calculate Vega?” = 1 lets the model to shift the volatility input by 1% to calculate the vega. “Calculate Vega?” = 0 means model does not calculate the vega.
- “Calculate Rho?” = 1 lets the model to shift the yield curve up parallel by 10bps to calculate the rho.
“Calculate Rho?” = 0 means model does not calculate the rho.
The Output Block:
- “Clean Price”, “Accrued Interest” and “Dirty Price” are self-evident. Note that P in the PDE is the dirty price.
- “Parity” = “Stock Price” * “Conversion Ratio”.
- “Premium” = “Clean Price” – “Parity”,
- “Straight Bond Value” = NPV of CB coupon and redemption value discounted by the risky yield curve. It does not take into account any investor puts.
- “Delta” = dP/dS / “Conversion Ratio”, the so-called parity delta. For a regular CB the range is between 0% and 100%.
- “Gamma” = d (Delta)/dS, the change of Delta per unit change of stock price.
- “Theta” = dP/dt / 12 / “Face Value”. (the unit of t is in year). It is “instantaneous monthly change of CB value expressed in percentage of “Face Value”. Given that P is dirty price, if there is coupon payment falling in the first grid in t direction, “Theta” will be unusually large. If there is a stock dividend there the same thing happens.
- “Vega” = (P(v + 1%) – P(v)) / “Face Value”. It is the change of CB value given 1% increase in volatility expressed in percentage of “Face Value”.
- “Rho” = (P(r + 0.1%) – P(r)) / “Face Value”. It is the change of CB value given 0.1% parallel increase of the yield curve expressed in percentage of “Face Value”.
- “Error Code” = 0 indicates there is nothing wrong that the model detects during the calculation. A common error is “Error Code” = 980 when some inputs are contradictory (most likely days out of order). 1001 indicates computer memory error. The release version should have no interaction with disk drive files. The debug version has. 1000 indicates file interaction error. Sometimes the model issues a error message window.
Asset Swap:
An asset swap is a plain vanilla fixed income swap plus a call option on a CB.
The CB input:
See the CB part for the explanations of input of the underlying CB.
The pay leg and receive leg of the fixed income swap:
Each leg can be fixed rate or floating rate. In practice, the receive leg is almost always tied to the CB coupon flow and redemption value. The pay leg is typically floating rate but can also be fixed rate. If the issuer defaults, the CB option is gone but the swap cash flows are unaffected. From the option holder’s perspective the structure is to fund the CB at some spread without exposure to issuer credit risk.
For each leg,
- “ isFixedRate” = 1 indicates a fixed rate leg.
“ isFixedRate” = 0 indicates a floating rate leg.
- “Effective Date” is the date interest begin to accrue. See the explanations in “Fixed Income Block” of CB input for “First Coupon Date”, “Stepup Date”, “Maturity Date”, “Coupon Frequency”, “Daycount”, “Face Value”, “Redemption”.
- “First Rate”, “Stepup Rate”, “Last Rate” are the fixed rates for a fixed leg, and the spreads over a reference curve(the input curve) for a floating leg.
- For a floating leg one can input up to two rates that have been reset: “fixingRate1”, “fixingRate2”. They are exclusive of the spread. “fixingRatePayDate1”, “fixingRatePayDate2” are the dates when these rates get paid.
The CB call option input Block:
“Exercise Begin Date” and “Exercise End Date” define the period when the CB call can be exercised.
When the issuer calls the CB, if “isForcedExerciseWhenIssuerCall” = 1, the CB option is automatically exercised even if it is not economical for option holder.
Otherwise if “isForcedExerciseWhenIssuerCall” = 0, the option holder has the choice not to exercise the option and the option expires. The fate of the remaining swap cash flows is determined by flag “isSwapCancelWhenIssuerCallAndNotExercise”. If the flag is on, the swap is settled only at accrued interest from the previous coupon payment date to issuer call date. Otherwise, they are not effected. The swap settles at PV of all future cash flows.
All the other fields define the cost to exercise the CB option.
When the option is exercised, the holder of the option pays:
- “Strike”
- Pay interest accrued on pay leg if “payLegExerciseAI” flag is on(1 = on, 0 = off)
- Receive interest accrued on receive leg if “receiveLegExerciseAI” flag is on.
- Pay Break Fee. The amount and timing depends on filed “breakFeeType”:
- breakFeeType = 1
Pay on exercise date the amount accrued from exercise date to “breakFeeExpireDate”. The accruing rate is “breakFeeRate”. Day count basis is the same as pay leg day count basis.
- breakFeeType = 2
Pay on exercise date the amount accrued from the next pay leg payment date after the exercise date, to “breakFeeExpireDate”. The acccruing rate and day count basis is the same as part (a).
- breakFeeType = 3
Continue paying on pay leg payment dates until and including “breakFeeExpireDate”.
The fixed rate to pay is “breakFeeRate”. The day count basis is the same as pay leg day count basis. (This is an attempt to model the situation when we have a CB with a default protection.
It can be viewed as an asset swap with 0 strike. The pay leg is what we pay for protection.
The receiving leg is exactly the CB coupon and redemption protected by swap counterparty.
We own the CB, so the strike is 0. But when we “exercise the option”, we have to continue
paying for the default protection (although we may be able to sell the default protection at likely lower price.)
- breakFeeType = 4
Pay on exercise date the amount: “pay Leg Face Value” * breakFeeRate
- Pay Break Funding Fee. The amount is accrued for the remaining of current pay leg calculation
period. The accruing rate is “breakFundingRate”.
The option holder gets the CB back. And the remaining swap cash flows are cancelled.
The output Block:
- “swapValue” is the value of the asset swap.
- “swapBreakFee” (and “swapBreakFundingFee”) is the Break Fee (and Break Funding Fee) the option holder has to pay if he exercises the option now. If it is not exercisable now, the default output is a huge number 1E+50.
- “swapStrike” is the total cash amount to pay now for the CB if the option is exercised now. If the option is not exercisable now, the default output is a huge number 1E+50.
- “swapNetStrike” = “swapStrike” + Fixed income swap NPV – CB accrued Interest. This is the economic price the option holder pays for the CB(in comparison with CB’s clean price) because when the CB option is exercised, the remaining swap cash flows are cancelled. For instance, the intrinsic value of the option = CB clean market value -“swapNetStrike”
- “swapDelta”, “swapGamma”, “swapTheta”, “swapVega”, “swapRho” definitions are identical to those of CBs. Delta is parity delta. Theta, vega, rho are expressed in percentage of CB’s face value.
- The swap fixed income output part should be self-evidenct.
- For CB output part see the explanations in CB section.
CB Call Options: