Winners Curse illustrates the mechanism of the winner’s ...
General Instructions
The following general instructions apply to all of the spreadsheets:
1. All fields designed for user input are highlighted in red or pink. Users should feel free to experiment in changing formulas in other, non-highlighted, fields, or overriding formulas with input values to see sensitivities, but should be careful to restore original inputs when they wish to return to the original functionality.
2. Terminology throughout this documentation refers to a single sheet within a spreadsheet as a worksheet.
3. The only user-defined functions used are Black, for Black-Scholes pricing of a European option, Greeks, to calculate delta, gamma, vega, rho, and theta of a European option, and Cox, for pricing an American option using the Cox-Ross-Rubenstein binomial tree algorithm. All of these function can be found in Module 2 of the Macro editor and printouts of these functions are on the next page of this documentation. Inputs to all functions are an indicator of “call” or “put”, price, strike, time to expiry, implied volatility, risk-free rate and dividend rate. When it is desirable to emphasize the drift (i.e., the difference between the risk-free rate and the dividend rate), this is input on the spreadsheet and the dividend rate needed as input to the user-defined functions is calculated as risk-free rate minus drift. Puts are valued using formulas for calls, but with price and strike swapped and with risk-free rate and dividend rate swapped.
4. In almost all cases, when a shape of the volatility surface by strike needs to be specified, a fairly simplistic approach has been used to give a rough feel for the impact of smile and skew (as defined in 9.6.2 of the text), based on the formula:
Volatility at strike K = At-the-money volatility + Volatility Skew * Ln(K/current forward price) + Volatility Smile * ABS(Ln(K/current forward price))
Printouts of EXCEL Macros
Function black(c, p, s, t, v, r, d)
If c = "put" Then
black = black("call", s, p, t, v, d, r)
Else
a = v * t ^ 0.5
b = (Application.Ln(p / s) + t * (r - d)) / a
c = Application.NormSDist(b + a / 2)
e = Application.NormSDist(b - a / 2)
f = Exp(-d * t)
g = Exp(-r * t)
black = p * c * f - s * e * g
If p = s Then
black = (black(c, p + 0.000001, s, t, v, r, d) + black(c, p - 0.000001, s, t, v, r, d)) / 2
End If
End If
End Function
Function Greeks(g, c, p, s, t, v, r, d)
price = options(c, p, s, t, v, r, d)
Select Case g
Case "d"
Greeks = (options(c, p + 0.0001, s, t, v, r, d) - price) / 0.0001
Case "s"
Greeks = (options(c, p, s + 0.0001, t, v, r, d) - price) / 0.0001
Case "v"
Greeks = options(c, p, s, t, v + 0.01, r, d) - price
Case "r"
Greeks = options(c, p, s, t, v, r + 0.0001, d) - price
Case "f"
Greeks = options(c, p, s, t, v, r, d + 0.0001) - price
Case "t"
Greeks = options(c, p, s, t - 1 / 260, v, r, d) - price
Case "g"
Greeks = (options(c, p + 0.0001, s, t, v, r, d) + options(c, p - 0.0001, s, t, v, r, d) - 2 * price) / (0.0001) ^ 2
Case "p"
Greeks = price
End Select
End Function
Function cox(c, p, s, t, v, r, d, n)
Dim nodep() As Double
Dim eur() As Double
Dim am() As Double
ReDim nodep(0 To n, 0 To n) As Double
ReDim eur(0 To n, 0 To n) As Double
ReDim am(0 To n, 0 To n) As Double
If c = "put" Then
cox = cox("call", s, p, t, v, d, r, n)
Else
b = black("call", p, s, t, v, r, d)
a = v * t ^ 0.5
up = Exp(v * (t / n) ^ 0.5)
down = 1 / up
Fact = (Exp((r - d) * (t / n))) / ((up + down) / 2)
disc = Exp(-r * (t / n))
For j = 0 To n
For i = 0 To n
nodep(j, i) = p * (up ^ ((2 * i) - j)) * (Fact ^ j)
Next i
Next j
For i = 0 To n
eur(n, i) = Application.Max(0, nodep(n, i) - s)
am(n, i) = Application.Max(0, nodep(n, i) - s)
Next i
For j = n - 1 To 0 Step -1
For i = 0 To j
eur(j, i) = 0.5 * disc * (eur(j + 1, i) + eur(j + 1, i + 1))
am(j, i) = Application.Max(nodep(j, i) - s, 0.5 * disc * (am(j + 1, i) + am(j + 1, i + 1)))
Next i
Next j
cox = b + (am(0, 0) - eur(0, 0))
End If
End Function
The MixtureOfNormals spreadsheet
Input specifies up to two different scenarios for two different variables. In each scenario, you specify the mean and standard deviation of each of the two variables and the correlation between them. A Monte Carlo distribution is created for each of the two variables in each of the two scenarios, assuming a normal distribution. The two nornal distributions are then mixed together, based on probabilities assigned to scenario 2 in cell E1 (the probability for scenario 1, shown in cell C1, is calculated as 100% less the probabilities for scenario 2).
Mixture of the scenarios takes place in columns G, H, J ,and K. For each row of the Monte Carlo simulation, column H selects one of the two scenarios, based on a random number generated in column G. Columns J, for variable 1, and K, for variable 2, then have the value of the mixture for each row. Statistics (mean, standard deviation, skew, kurtosis, and correlation) are calculated for the mixture at the top of columns J and K. Also calculated are percentile values of the two mixed distributions, based on percentile points selected in cells M2 through R2. Ratios are also computed to what these percentile values would be for a normal distribution.
The linearity (or non-linarity) of the correlation between the two mixed variables can be seen in the Graph worksheet (all computations are contatined in the Mix worksheet). Another measure of the correlation is contained in computations on line 11, which show the percenatge of cases in which both variables are in the extreme part of the distribution, based on the percentile value chosen in row 2. These values will be higher for a distribution created as a mixture than they will be for a normal distribution with
the same linear correlation (as calculated in cell K7).
The Winners Curse spreadsheet illustrates the mechanism of the winner’s curse in auction situations, as explained in section 2.4. The actual value of each deal can be input in column B, the seller’s offering price in column C, and the price bids of the two buyers in columns D and F. The buyer’s profits if they negotiate separately with the seller are shown in columns E and G. The buyer’s profits if they compete against one another in an auction are shown in columns H and I.
The VaR spreadsheet computes VaR using 3 different methods — historical simulation, Monte Carlo simulation, and variance-covariance. It allows the user to compare results obtained through the 3 methods and explore possible modification. Corresponding material in the text is in sections 7.1 and 7.3.
The data sample used in these calculations is contained in the Data worksheet. It consists of 10 series of daily data from 8/22/96 to 11/30/01, generously provided by RiskMetrics. This data is only provided for use in exercises related to this book and should not be copied or distributed. The 10 series selected have been chosen to provide a cross-section of data from the equity, rates, currency, and credit markets and from the US, Europe, and Japan. The data series are:
Government Debt Benchmark Yields to Maturity
Germany 10 year
Japan 10 Year
US 10 year
Foreign Exchange Spot
EUR/USD (prior to the creation of the Euro, the German Deutschemark is used as a proxy)
JPY/USD
Equity Indices
S&P 500 (US broad stock market)
Nasdaq 100 (US high technology stock market)
Dax (German stock market)
Nikkei 225 (Japanese stock market)
Credit Index
US 10 Year Swap Spread (spread between swap rates and US treasury rates)
In the Returns worksheet, all of these daily prices and rates are converted into daily returns by taking the natural log of the ratio of one day’s value to the next. Summary statistics (count, mean, annualized volatility, skew, and kurtosis) are computed using the standard EXCEL functions. The user inputs, on line 7, weights for each of these return series in a portfolio. It is based on these weights that VaR and related statistics will be computed. Based on these weights, a daily return for the portfolio is calculated in column L, along with the same summary statistics as for the individual series.
If the user wants historical simulation VaR to be based on different volatilities than those for the full 8/22/96 – 11/30/01 historical period, a volatility override can be entered in the column corresponding to each series in row 9 (for example, a volatility for part of the historical period, or one calculated by a weighted average, or an implied volatility can be used). The ratio of the volatility override to the calculated volatility of the return series is multiplied by the weight of the series in the portfolio to obtain an adjusted weight (row 10) which is used in calculating the daily portfolio returns. If the user does not wish to override the historical volatility, then the entry in line 9 should be blank.
The Rankings worksheet shows the returns for each of the 10 series and the portfolio ranked from worst return to best for the worst 10% of all returns (columns C through M). The composition of each of the worst portfolio returns is shown in columns N through W, along with the date on which the return occurred in column X.
The Ratios worksheet shows the ratios of the actual distribution to the normal distribution for the returns of all 10 series and the portfolio for all percentiles in the worst 10% of all returns. A ratio of 100% indicates a series with the same degree of fatness of tails as a normal distribution of returns; the higher the ratio the fatter the tail.
The Var-CovVaR worksheet calculates VaR using the variance-covariance method. Correlation coefficients for the 10 series are calculated from the daily returns in B3:K12. Daily standard correlations for the 10 series are calculated from the daily returns in B14:K14, with corresponding annualized volatilities displayed in B15:K15. Using the weights input in the Returns worksheet, along with the correlations and standard deviations, a variance-covariance matrix is calculated in B28:K38. The standard deviation and annualized volatility for the portfolio are then calculated in L14 and L15 and the portfolio standard deviation is then used to calculate VaR at selected percentile levels (the percentiles are input in the Historical VaR worksheet). Any of the historical standard deviations and correlations can be directly overridden by the user to see the impact on portfolio standard deviations and VaR. In changing correlation coefficients, the user must exercise care to maintain the symmetry of the matrix (e.g., if you change the 2nd column, 7th row to 25%, you must also change the 7th column, 2nd row to 25%).
The three methods of calculating VaR contributions of risk components discussed in section 11.3 of the text are illustrated in section A18:K26 of the VaR-CovVaR worksheet. The user specifies a percentile level in B18. For each of the 10 return series, the VaR contribution is calculated using stand-alone VaR (row 19), incremental VaR (row 20), and marginal VaR (row 21). The sums of the contributions of each series are shown for stand alone VaR (B24), incremental VaR (B25) and marginal VaR (B26). The diversification benefit of the portfolio is computed in D24 as the difference between the sum of the stand alone VaRs and the portfolio VaR.
The Historical VaR worksheet calculates for each percentile corresponding to the worst 10% of all portfolio returns, the VaR and shortfall VaR, in columns D and E. VaR is computed non-parametrically as the actual portfolio return corresponding to the percentile and shortfall VaR is computed as the average of all portfolio returns worse than or equal to that return. In column G, an alternative method of computing VaR is shown, estimating VaR by a properly selected shortfall VaR, following the suggestion on page 12 of chapter 11. The user can input selected percentiles in column I. For each selected percentile, the nonparametric VaR, shortfall VaR, and alternative VaR computations are shown in columns K, L, and M.
The MonteCarlo VaR worksheet calculates VaR using a Monte Carlo simulation. The Monte Carlo simulation begins with 10 series of 2,000 numbers generated to form a pseudo-random set with each series having correlations of 0. These series were generated with an APL program which implements the algorithm for generating a multinormal distribution in Rubinstein(1981). The series are in the worksheet Random along with calculated statistics which indicate that the objective of the algorithm has been achieved.
The next step is to take the correlation coefficient matrix for the 10 return series and convert them into a matrix of factor loadings for the 10 series of pseudo-random numbers. This calculation is performed in the worksheet Factors, with the factor loadings matrix (B18:K27) derived from the correlation matrix (B4:K13) using the Cholesky decomposition algorithm [ see Hull (2002) section 18.6]. The correlation matrix is computed from the historical returns in the Returns worksheet, but may be overridden by the user. (In changing correlation coefficients, the user must exercise care to maintain the symmetry of the matrix).
Pseudo-random series representing each of the 10 returns series are now generated in B2049:K4048 of the MonteCarlo worksheet combining the pseudo-random series in the Random worksheet with the factor loadings derived in the Factors worksheet. A return series for the portfolio is now generated in A40:A2039 by combining those pseudo-random series with the portfolio weights input in line 7 of the Returns worksheet and the volatilities in row 18. The volatilities in row 18 are derived from the historical returns in the Returns worksheet, but may be overridden by the user. The user may also supply a volatility of volatility and a correlation between returns and volatilities, in rows 19 and 20, to provide kurtosis and skew to the series. Returns for each series are generated in B10:K2039 by the formula: random return * exp((vol-of-vol*random number) + (correlation between return and volatility * random return)).
Once the returns for the portfolio have been generated, statistics of standard deviation, annualized volatility, skew, kurtosis, and correlation coefficients can be calculated (A2:K16). VaR and shortfall VaR are calculated non-parametrically from the distribution of the portfolio returns in A40:A2039. These calculations are in L40:P239. B22:D34 looks up VaR and shortfall VaR for selected percentiles from the fuller set in L40:P239. The selected percentiles are those input in the HistoricalVaR worksheet.
The EVT spreadsheet uses the extreme value theory formulas from the box in Section 7.1.2 to calculate VaR and shortfall VaR for selected percentiles.
The key inputs for these calculation are two parameters, (and (, and a percentile which is high enough that tail behavior starts to be exhibited but low enough to allow statically meaningful numbers of observations. Of the two parameters, the more important is (, which determines the degree of “fatness” of the tail — ( must be greater than 0 and less than 100%, with values close to 0 producing tails with roughly the same fatness as a normal distribution and higher values producing fatter tails.
Input for the spreadsheet is observed VaR (B2 and B3) at two selected percentile levels (A2 and A3), possible values for ( (C5 to G5) and selected tail percentile levels (A9 to A16). The first observed VaR (B2) is used as the base to project VaRs at higher percentiles. The second observed VaR (B3), which should be for a higher percentile than the first, is used to estimate the ( parameter, with a value of ( (C6 to G6) corresponding to each possible ( value, inverting the formula for VaRp.
Output is the VaR corresponding to each selected percentile based on a normal distribution (B9 to B16) and based on the EVT formula for each possible ( (C9 to G16) and the shortfall VaR corresponding to each selected percentile and possible ( (C19 to G26).
The Rates spreadsheet can be used either to value and compute risk statistics for a portfolio of linear instruments (forwards, swaps, bonds) based on an input set of forward rates, or to determine a set of forward rates which achieve an optimum fit with a given set of prices for a portfolio of linear instruments while also maximizing the smoothness of the forward rates selected. Corresponding material in the text is in sections 10.2.1 and 10.4. Risk statistics are calculated on a separate Risk worksheet.
Spreadsheet inputs are contained on two worksheets – one labeled Forwards contains the input forward rates; the second labeled Instruments contains specification and prices of instruments.
Forward rates are input in column C of the Forwards worksheet. Dates for each forward are calculated from an input current date (B1) and the first forward date (B2). Forwards of a quarter-year length are used. If the first forward date is not the input current date, then a “stub period” forward is created between the current date and the first forward date – this corresponds to a situation in which forwards line up with a standard calendar such as LIBOR futures dates. Discount factors for each date for which a forward rate is input are calculated by multiplying the previous discount factor by exp(-forward rate * # of days in the period / 365.25), making the assumption that the forward rates are quoted on a continuously compounded basis. Discount factors appear in column G and are used to compute continuously compounded zero coupon rates in column D. Par coupon rates are computed in column E, using a standard bootstrapping formula [see Hull (2002) section 5.4]. A graph of the forward, zero, and par coupon rates is displayed in a separate worksheet.
Instrument specifications are given by a start date (column B), end date (column C), coupon rate (column D), and coupon frequency (column E). Coupon frequency can be 1 for annual coupons, 2 for semi-annual coupons, and 4 for quarterly coupons. Non-coupon paying instruments, such as discount bonds or LIBOR forwards, should have a 0 entered for the coupon rate. Any start date earlier than the current date has the same effect – the price calculated for the instrument is what you would currently pay for the cash flows. A start date after the current date indicates that the instrument is a forward and the price calculated is that which is paid on the start date.
The price calculated is based on discounting all cash flows at discount factors interpolated from those computed in the Forwards worksheet. First the coupon cash flows are generated in columns V through CY (a maximum of 40 coupons is accommodated, so that a 10 year instrument with quarterly coupons can be handled). Each pair of columns within the range contains a date for the coupon cash flow and an interpolated discount factor corresponding to this date. Coupon dates start with the end date and are incremented backward in time, with no coupon date being allowed earlier than either the start date or the current date. (Computation of coupon dates is only an approximation not utilizing the full set of detailed rules which would be used in an actual business situation). The total present value of all coupons is computed in column U as the total of all coupon discount factors multiplied by the coupon rate divided by the coupon frequency.
Discount factors are also computed for the start date (in column S) and the end date (in column T), with the start discount factor equal to 1 for any instrument whose start date is earlier than the current date. The present value of the future cash flows, the total of the coupon values in column U and the final payment of par, is 100 times the total of column U plus the end date discount factor in column T. This is divided by the start date discount factor in column S to get the dirty price (in column P). Accrued interest (for currently held instruments only) is computed in column L as the coupon rate multiplied by the residual days by which the time to first coupon is short of a full coupon period (this is only an approximate calculation). The clean price (in column J) is the dirty price less accrued interest. A par coupon rate is calculated in column O as the coupon which would result in a clean price of 100.
All discount factor interpolations are based on the zero coupon rates, treating the zero coupon curve as piecewise linear. A separate Interpolation worksheet copies over the zero coupon rates computed in the Forwards worksheet and calculates the linear slope between each zero coupon rate. Piecewise linear interpolation can then be accomplished using the EXCEL lookup function to find the zero coupon rate for the forward date immediately preceding the date for which a discount factor is needed, and then adding an amount equal to the slope at that point multiplied by the time between the preceding forward date and the date for which the discount factor is needed.
When the spreadsheet is used to fit a set of observed market prices, the (clean) market price for each instrument must be entered in column F of the “Instruments” worksheet, or if the price is quoted using the market convention yield, a zero should be entered in column F and the yield entered in column G and a conventional yield to price calculation is made in column I, using the EXCEL Price function. A weight is assigned to each instrument in column A – instruments which are entered just for the purpose of computing price but which are not to be part of the price fitting should get a 0 weight, all others should get a weight of 1 unless you wish to assign differing weights based on varying degree of price liquidity. For each instrument, a pricing error is computed in column M, with the weighted sum of the squares of these errors computed in M2 of the Forwards worksheet.. The EXCEL SOLVER finds the set of forward rates which will achieve the best combination of minimizing the weighted sum of squares of pricing errors and minimizing a measure of smoothness of the forward curve (calculated in M3 of the Forwards worksheet). The quantity minimized is in cell M4 of the Forwards worksheet and is the weighted combination of the sum of squares of pricing errors and the measure of smoothness with the relative weighting of these 2 measures assigned in cell N2. The smoothness measure used is the square root of the sum of the squared second differences of the successive forward rates (computed in column I).
For each instrument a duration is computed in column J and a value of a basis point in column K. The duration is computed using the standard Macauley duration EXCEL function. The value of a basis point is calculated by adding .01% to the yield and looking at the change in the EXCEL Price function. Portfolio statistics of duration (J32) and value of a basis point (K32) are calculated by weighting the individual quantities, by the instrument weight for value of a basis point, and by the product of instrument weight and instrument price for duration. The weights are interpreted as being in millions of dollars (i.e., a weight of 1 is $1 million).
The Risk worksheet calculates risk statistics for the portfolio of instruments entered in the Instruments worksheet. Two types of risk calculations are performed. First, a portfolio of quarterly forwards is calculated to represent the risk of the portfolio. Second, the risk measures for the forward buckets is aggregated into summary measures.
The most accurate way of calculating the risk exposure of a portfolio to a set of forwards is to successively “tweak” the rate of each forward, rebuild the entire set of discount factors for each tweak, and recalculate the value of the portfolio for each set of discounts. This results in a value of a 1 basis point move for each forward which fully reflects all interpolation methodology. An equivalent forward amount can then be determined by the amount required to produce the same value of a 1 basis point move as the portfolio.
The worksheet uses a reasonable approximation to this more accurate but more computationally intensive method. The approximation is based on representing each cash flow as a set of forwards which will reproduce the cash flow. The following box illustrates this method with a 1 year cash flow and 4 quarterly forwards.
Assume that the rates of the first 4 forwards are 3%, 4%, 5%, and 6%. A $100 cash flow in one year can be reproduced by holding the first 4 forwards in amounts of $96.32, $97.29, $98.51, and $100 respectively. You can begin with $95.60, use the first forward to guarantee a 3% return in the first quarter to obtain $95.60e.03/4 = $96.32, invest the $96.32 in the second quarter, using the second forward to guarantee a 4% return to obtain $96.32e.04/4 = $97.29, invest the $97.29 in the third quarter, using the third forward to guarantee a 5% return to obtain $97.29e.05/4 = $98.51, and invest the $98.51 in the fourth quarter, using the fourth forward to guarantee a 6% return to obtain $98.51e.06/4 = $100.00. We are assuming the forwards to be zero-coupon (discount) instruments, which is why the par amounts are quoted as the amount received at the end.
The calculations of the forward equivalents start by representing each instrument as a column between J and AH. First, forward equivalents are computed for the starting cash flow, the ending cash flow, and all coupons, under the assumption that the payments are all due on forward dates. These calculations are in columns AJ through BH, with each row representing a forward bucket. The corresponding entries in J through AH are calculated by taking a weighted mixture of AJ through BH and a one time period shifted version of AJ and BH, with the weighing determined by the relationship between the maturity date of the instrument and the forwards dates. Columns J through AH are summed into column E, the forward equivalents of the portfolio. Column E is multiplied by $1,000,000 x .01%/4 divided by the discount factor for the forward to obtain the impact of a 1 basis point shift on the forwards equivalents. The 1 basis point impacts by forward bucket are graphed in the RiskChart worksheet to obtain a visual representation of the risk position.
Summary risk statistics are calculated in G11, H11, and I11 based on risk weightings input in columns G, H, and I corresponding to each forward bucket. Weightings represent forward curve shifts. In the sample spreadsheet, I have used a parallel shift, consisting of a 1 basis point move in each forward rate, a tilt shift, consisting of a negative 1 basis point move in the first bucket evolving smoothly to a positive 1 basis point move in the 40th bucket, and a butterfly shift, consisting of a positive 1 basis point half-way between the first and 40th buckets evolving smoothly to a negative 1 basis point move in both the first and 40th buckets.
The Bootstrap spreadsheet produces a comparison between the bootstrap and optimal fitting methodologies for extracting forward rates from an observed set of swap rates. This is the spreadsheet that has been used to produce figure 10.1 in the text.
Inputs are par swap rates for 1, 2, 3, 5, 7, and 10 year swaps, entered in cells B5, B6, B7, B9, B11, and B14. A bootstrap calculation, following the methodology of Hull (2002) 4.4 is used to produce the forward rates in F5:F14 by first using linear interpolation to fill in the 4, 6, 8, and 9 year swap rates and then building a discount curve one year at a time.
The optimal fitting approach is a simple variation of the one used in the Rates spreadsheet. The SOLVER is used to find forward rates in F17:F26, which minimizes the quantity in cell H29, which is equal to a weighted mixture of 90% times the sum of absolute error between the input par swap rate and the par swap rates calculated in G17:G26 from these forward rates and 10% a second difference measure of the smoothness of the forwards.
The RateData spreadsheet contains historical time series of US interest rates data from 8/26/96 to 10/30/01, generously provided by RiskMetrics. It is used in exercises 10.1 and 10.2. This data is only provided for use in exercises related to this book and should not be copied or distributed. The data covers short-term interbank rates for 1 month, 3 month, 6 month, and 1 year tenors and par yield swap rates for 2 year, 3 year, 4 year, 5 year, 6 year, 7 year, 8 year, 9 year, 10 year, 12 year, 15 year, 20 year, and 30 year tenors. This data is used in exercises 11.2 and 11.3.
The NastyPath spreadsheet is an illustration of the size of losses which can be incurred in dynamically delta hedging an option. It is the example referenced in section 11.2. The example follows the dynamic delta hedging of a purchased call option over the 30 days of its life. The daily price history of the underlying asset must be input in cells B17:B46, from which the P&L due to hedging is simulated. The options price and options delta are calculated for each day, in columns C and D, based on the original implied volatility stored in C3. Daily options P&L is computed in column E, based on the changes in options prices from column C. Daily futures P&L is computed in column F from the previous day’s delta from column D and the underlying asset price change from column B. Cumulative P&L in column G is summed from the options P&L and the futures P&L. The option payoff, based on the final day price input in cell B46, is computed in C10. The final day’s cumulative P&L is copied from G46 to C9 and the total P&L, in cell C11, is the sum of the final day’s cumulative P&L and the option payoff.
The PriceVolMatrix spreadsheet computes the price-volatility matrix and volatility surface exposure for a small portfolio of vanilla European-style options. It illustrates the material discussed in section 11.4.
Inputs and outputs are all contained in the Main worksheet. The portfolio is input in cells C2:R7. Each column specifies one European option as follows:
Line 2: the volume (positive for purchase, negative for sale)
Line 3: either “call” or “put”
Line 4: current price of the underlying forward
Line 5: strike price
Line 6: time to expiry (in years)
Line 7: implied Black-Scholes volatility
For each option, the option price, delta, vega, gamma, and theta are computed and displayed in rows 8 through 12 respectively. Total portfolio statistics are summed and displayed in cells A8:A12. As in chapter 9, all computations are done with interest rates set to 0 and deltas are expressed in terms of the underlying forward. Price and vega are discounted to present value using a single discount rate input as B1 (a more accurate version would use a full discount curve).
The price volatility matrix for the portfolio is displayed in cells A15:J26. Spacing of shifts is determined by the input in A4, spacing of implied volatility shifts is determined by the input in A6. All options in the portfolio are assumed to be written on closely related underlyings, so that while different options may have different inputs for underlying price and implied volatility, it makes sense to look at parallel shifts in these prices and volatilities. In calculating the impact of these shifts, it is always assumed that the portfolio starts delta hedged, using the delta displayed in cell A9, but that this same delta hedge is maintained throughout any price move. This assumption allows the matrix to display convexity exposure as well as vega exposure and exposure to combinations of convexity and vega risk. All output is shown as changes from current option values and is displayed as a % of 100 (so an at-the-money strike should be entered as 100). Calculations take place in blocks of cells between A39 and J276, with one block of cells linked to each option in the portfolio. A15:J26 is just a summation of these blocks. For each price level, the vega is computed in column K and the convexity of the vega (the degree which valuation is a non-linear function of volatility) is computed in column L.
The price volatility results are plotted in the PriceVolatility chart. The BS value, delta, vega, and gamma vs. changes in price are plotted in the PortfolioRisk chart The SOLVER can be used to find combinations of options which minimize convexity and vega risk (the SOLVER is set up to minimize the sum of the square of entries in the price-volatility matrix; computed in N14 – you might also want to consider minimizing a weighted sum of squares, with weights corresponding to subjective probabilities of each cell in the matrix).
Exposure to the changes in the volatility surface is displayed in A28:I36, with vega exposures shown in a two-dimensional array by time to expiry and strike in relation to at-the-money. Totals by time to expiry are displayed in C36:H36 and by strike in I29:I35. The grand total in I36 matches the total portfolio vega in A10. Users can input the desired time to expiry categories in B28:H28 and strike categories in A29:A35. The strike categories follow market convention in being entered on an at-the-money strike, abbreviated “ATM,” with other strikes designated by their call deltas. Calculations of the vega exposure by bucket are carried out for each option individually, and are calibrated to the at-the-money strike and the deltas of each individual option. The individual calculations are carried out in columns W through AF, alongside the price-vol matrix calculation for each option, with the portfolio statistics in A28:I36 a straight summation of these individual calculations. The vega for each option is linearly proportional between the time to expiry buckets and the strike buckets the option falls between.
The user can control the shift by which the price-vol matrix is calculated in two ways. The first is by specifying whether volatility shifts should be parallel or proportional, the second is by specifying that shifts in price will be accompanied by shifts in volatility to keep volatility aligned with its relationship to the at-the-money strike. Both of these shift controls are implemented. by having volatilities for each box in each individual price vol matrix by separately calculated in columns L through T, alongside the individual price vol matrices.
A parallel shift is specified by entering a 0 in M28, next to “proportional shifts.” In this case, every implied volatility is shifted up or down by the same flat amount. A proportional shift is specified by entering a 1 in M28. In this case, the implied volatility shifts in row 15 are taken to apply to the base implied volatility entered in M29 and all other volatilities are shifted proportionally. For example, if the base implied volatility is 25%, then an up 2% shift results in a 2% x 30% / 25% = 2.4% shift in an instrument which currently has a 30% implied volatility and a 2% x 20% / 25% = 1.6% shift in an instrument which currently has a 20% implied volatility. Since longer dated options generally have lower volatilities, proportional shifts result in less variability in longer term option volatilities than in shorter term option volatilities.
If smile and skew are entered as 0 in M30 and M31, then shifts in price do not result in shifts in volatility. Non-zero entries for smile and/or skew cause volatilities to be shifted along the specified volatility surface as prices shift.
The VolCurve spreadsheet fits a forward volatility curve to observed options prices. This spreadsheet is designed for European options other than interest rate caps and floors, for which the spreadsheet CapFit can be used. Corresponding material in the text is in section 11.6.1.
Inputs are a series of time periods (column A) for which forward volatilities are to be implied and a series of adjustment factors (column C) to be applied to each time period. The adjustment factors represent anticipated volatility patterns, as explained in section 9.6.1, with a higher weight representing higher anticipated volatility for a given period. Forward volatilities in column B are divided by these adjustment factors to obtain adjusted forward volatilities in column D. It is these adjusted forward volatilities for which the smoothness function is calculated in column E. Smoothness is measured as the square root of the sum of squares of the second differences of the adjusted forward volatilities (K5). A more sophisticated smoothness measure might involve different weightings for each second difference.
Balanced against desired smoothness is the attempt to fit observed option prices as closely as possible. Observed option prices are entered as implied volatilities by time period (column F). A period for which an option price is not observed can be indicated by a blank entry in the corresponding row of column F. The relative liquidity of options prices can be used to place weights on the fitting errors, with weights input in column G. Fitting errors are calculated in column I as the difference between observed implied volatility and a spot volatility (column H) calculated from the forward volatilities as the square root of the sum of the squares of forward volatilities weighted by the length of the forward period. The overall fitting error measure is the square root of the sum of squares of these fitting errors weighted by the weights input in column G (K4).
The optimization utilizes the EXCEL SOLVER. It minimizes a weighted sum of the fitting error and smoothness measure calculated in K6, using a relative weight input in L4. The forward volatilities in column B are solved for, subject to the constraint that no forward volatility can be negative. A chart of the resulting adjusted forward volatilities and spot volatilities is produced.
The CapFit spreadsheet fits a forward volatility curve to observed options prices for interest rate caps. Since caps are baskets of options, with each option within the basket termed a caplet, the spreadsheet needs to break each cap apart into its constituent caplets and price each individually. Corresponding material in the text is in section 11.6.1.
Inputs are current FRA (forward rate agreement) rates, input in line 4, current prices for 1,2,3,4,5,7, and 10 year caps, input in B12:C253, and a smile (D1) and skew (D2) for the volatility surface. Each cap is specified by the strike rate on the cap, entered in column B, and the flat volatility at which the cap is currently trading, entered in column C. The use of flat volatility, a single volatility to be applied to each caplet in the cap, as a way of expressing the price of a cap, is a fairly standard convention within the cap market. It is similar to the convention used to quote a bond at a single yield at which to discount all its cash flows, even though accurate bond pricing would discount each cash flow at a zero-coupon rate specific to the tenor of the cash flow. Fitting a forward volatility curve to a set of caps consists of finding volatilities which, when used to value each individual caplet, results in cap prices matching the price which results from the flat volatility.
The first calculation step is to derive discount prices for each time period from input FRA rates — this is done in row 5. Caplet prices are then derived in D12:AQ25. Each caplet is priced twice on two adjoining rows. On the top row it is priced using the flat volatility from row 10 for the cap it is part of. On the bottom row, it is priced using the at-the-money caplet volatility corresponding to its time period, adjusted for smile and skew. In both cases, the caplet value derived from Black-Scholes is discounted back to the current date using the discount factor corresponding to one quarter later than the option expiry, corresponding to market convention that each caplet is on an FRA maturity one period later than option expiry.
Spot caplet volatilities are derived as the square root of the sum of squares of the forward caplet volatilities in row 9. The EXCEL SOLVER is used to find a set of forward caplet volatilities which best fits the input cap prices while also obtaining a smooth pattern of forward caplet volatilities. Closeness of fit is calculated in D28 and smoothness is calculated in D29 as the square root of the sum of squared second differences of the forward volatilities. The quantity to be minimized is D30, a weighted average of the closeness of fit and smoothness measures with weighting selected by the user in E28.
The spreadsheet can also be used to value a selected cap using the forward caplet volatilities. The tenor is entered in B32 and the coupon in D33. The cap is priced in D33 using the forward caplet volatilities and in D32 using a flat cap volatility input in C32.
A more complete fitting routine would utilize caps at different coupons and the same tenor to fit the smile and skew as well as the at-the-money forward caplet volatilities, with smile and skew allowed to vary by tenor. In the simpler version presented here, smile and skew are treated as previously derived inputs which are constant across tenors.
The VolSurfaceStrike spreadsheet interpolates implied option volatilities by strike for a given tenor, utilizing methods discussed in section 11.6.2. There are two modes in which the interpolation can be performed:
1. Implied volatilities are input for enough strikes to allow for reasonable interpolation.
2. Implied volatilities are input for only 3 strikes.
Calculations for the first mode are contained in the worksheet FullFit. Inputs are time to expiry (B2), market implied volatilities at different strike levels (column G), weights to apply to these implied volatilities (column H), and a relative weighting (D1) between fitting market implied volatilities ad the smoothness of the probability distribution used to interpolate. One other input is an at-the-money volatility (B1) which is used in creating a chart but does not impact calculations. Output is the cumulative probability distribution (Column B), probability density (column C), put value (column D) and implied volatility (column E) that is interpolated for each strike.
Calculations for the second mode are contained in the worksheet ParameterFit. Inputs are time to expire (B2) and three strikes (D2-D4) with associated market implied volatilities (E2-E4). Output are three parameters that came closest to matching these implied volatilities: an at-the-money volatility (B1), a percentage mixture of lognormal and normal distribution (B3), and a volatility of volatility (B4). Based on these parameters a cumulative probability distribution (column J), probability density (column K), put value (column L), and implied volatility (column M) is generated for all strikes. The method used to generate the cumulative probability distribution based on these parameters is to first create a volatility, which is one standard deviation higher and one standard deviation lower than the at-the-money volatility, based on the volatility of volatility. These two volatilities are placed in the High and Low worksheets respectively. Then on each of these worksheets a normal and lognormal distribution based on the volatility and a weighted mixture of the normal and lognormal distribution calculated using the input percentage of mixture with values ranging from 100% for completely lognormal to 0% for completely normal. Finally, the two weighted distributions from the High and Low worksheets are averaged. This is a truncated version of the full Hull - White procedure for calculating an option price with stochastic volatility [see Hull, (2002). p. 447], but is reasonably accurate in practice. A comparison to a more detailed Hull White computation can be seen on the StochasticVolatility worksheet.
Fundamental to all calculations on the spreadsheet are the algorithms for estimating put prices, implied volatilities, and probability density from a given cumulative probability distribution. This computation appears in many places on the spreadsheet, for example columns B, C, D,and E of FullFit and columns J, K, L and M of ParameterFit. Density is just the first difference between successive cumulative probabilities. The put price at a given strike level, P (Si), is computed iteratively from the cumulative probability distribution, Cum (Si), and density, Den (Si), by the approximation formula
P (Si) = P (Si–1) + (Si – Si–1) x (Cum (Si-1) + Den (Si)/2)
The basic idea behind this approximation can be seen by an example.
Take Si = 90 and Si–1 = 88. Assume Cum (Si-1) = 30% and Cum (Si)= 33%, so that Den Si = Cum (Si) – Cum (Si-1)= 3% and that we have already determined from the probability distribution that the price of an 88 strike put is 3.5. At a minimum the 90 strike must be worth 3.5 + 2 x 30%= 4.1, since for every possible price below 88, the 90 strike is worth 2 more than the 88 strike, and 30% of the probability occurs below 88. There is a 3% chance that the underlying price will finish between 88 and 90. At one extreme, assume that the whole 3% is concentrated at the underlying finishing at 90, so this 3% contributes nothing to the price of the 90 put. At the other extreme, assume that the whole 3% is concentrated at the underlying finishing at 88, so it contributes 3% x 2 = .06 to the price of the 90 put, for a total value of 4.16. We have averaged between these two extremes for our approximation of 3.5 + 2 x (30% + 3% /2) = 4.13. As we make the spacing between strikes smaller, the possible approximation error becomes smaller.
The Black-Scholes implied volatility is derived from the put value using the secant iteration method for inverting a non-linear function [see, for example, Elden and Wittmeyer-Koch (1990) section 4.2). These computations can be found in columns Y-AF of the FullFit worksheet and columns Q – X of the ParameterFit worksheet. I have only used three iterations, since I have found this to give reasonable accuracy in cases I have tested, but the number of iterations can easily be increased by extending the block of computations on the right with copies of the last two columns. Implied volatilities are only displayed for strikes where the vega exceeds a minimum threshold (I have selected .1), since when vega gets too small the implied volatility cannot be determined with any accuracy.
The spreadsheet OptionRoll is a variant of the PriceVolMatrix spreadsheet. It differs in the form of the optimization, which is set up to calculate a hedge that will minimize a future roll cost. Corresponding material in the text is in section 11.6.3.
The entries for Time in row 6 represent the time remaining to expiry at the roll date. The time to the roll date is entered in E1. For example, if you want to consider hedging the sale of a 12 year option with 6 and 7 year options which, after 5 years, will become 1 and 2 year options that are rolled as 7 year options, you enter 5 in E1, 7 in B6 for the option to be rolled into, and 1s and 2 in the remaining columns of row 6 for the options to be sold in the roll.
In addition to the output produced by PriceVolMatrix, OptionRoll calculates, in line 13, the current price of putting on the option positions. All other calculations are as of the time of the roll. The value to be minimized in the optimization,, in cell N14, is the sum of the square of the entries in the price-vol-matrix plus the square of the current price of putting on the option position. So what is minimized is both the cost of the roll across all combinations of future price level and future implied volatility and the cost of setting up the hedge.
The OptionMC spreadsheet calculates a single path of a Monte Carlo simulation of the delta hedging of a vanilla European-style call option position. It is designed to be used to help in checking your work for the Monte Carlo simulation exercise in chapter 11.
The details for the option to be hedged are input in cells B1:B4 — the current price of the underlying (B1), the strike (B2), the time to expiry (B3), and the implied volatility (B4). Key inputs for the simulation are input in cells B6:B11 — the volatility of the underlying price over this particular path (B6), the transaction cost as a percentage of the size of hedge (B7), the threshold for determining whether to change the hedge (B8), the skew of the volatility of the charges in underlying price (B9), the probability a jump will take place over the life of the option (B10), and the standard deviation of a jump (B11). All hedges are assumed to use the forward as an underlying and all P&L calculations are assumed to be as of the option expiry date.
The simulation is set up for a path with 20 time steps. At each time step, the following calculations are made:
1. The time that has expired so far, in column A.
2. A random number which generates the underlying price change in the absence of a jump, in column B. This random number, and all the others in the spreadsheet, is chosen using the EXCEL function Rand which selects a random number based on a uniform distribution between 0 and 1.
3. The volatility to be used in this price change, in column C. It is derived from the base volatility in B6 and the volatility skew in B7, based on the relation between the last period’s price in column H and the price at the start date in B1. Volatility = base volatility + skew x ln (Last price/start price). To avoid high skews leading to negative volatilities, the volatility is floored at 1%.
4. A multiplicative factor for price, based on the random number and the volatility, in column D. The formula used is
exp[normsinv(random number) x volatility x [pic]– ½ x time step x volatility2], where time step = time to expiry/number of time steps. Normsinv is the EXCEL function that converts a percentage between 0% and 100% to the number of standard deviations that correspond to this probability for a normal distribution. The multiplication by [pic] reflects the fact that volatility is expressed as an annualized quantity. The subtraction of ½ time step x volatility2 is the usual adjustment for a log-normal quantity.
5. A multiplicative jump factor, in column G. If there is no jump, the factor is 1. Jump behavior is determined by two random variables. The random variable in column E determines if a jump occurs while the random variable in column F determines the size of the jump. A jump occurs if the first random variable is greater than the jump probability/number of time steps (the reason for dividing by the number of time steps is that the jump probability is expressed in terms of the life of the transaction — if there is a 50% chance of a jump sometime during the life, that translates into a 2 ½% chance of a jump in each of the 20 time steps). If a jump does occur, the size is determined by exp[normsinv(the random number in column F) x the standard deviation of the jump from B11].
6. The price at the end of the time step, in column H. It is generated by taking the price at the end of the previous time step (or the initial price B1 if it is the initial time step) x the multiplicative factor from column D x the jump factor from column G.
7. The delta hedge at the end of the time step in column I. The target delta is computed based on the Black-Scholes formula and then compared to the delta at the end of the previous time step. The Black-Scholes calculation is based on the implied volatility at which the option was initially priced rather than the actual volatility on a particular path. If the absolute difference is less than the threshold (B8), then no change in hedge is made; otherwise, it is set equal to the target delta. For the final time step, the threshold is ignored.
8. The hedge P&L for the time step, in column J. Calculated as the change in underlying price multiplied by the delta hedge at the end of the previous period.
9. The transaction amount, in column J. Calculated as the absolute amount of change in the delta hedge.
Summary statistics for the entire path are calculated as follows:
1. The initial option price calculated using the standard Black-Scholes formula, in D1.
2. The price of the underlying asset as of option expiry, in D2, is just the final entry in column H.
3. The option payoff as of option expiry, in D3, is either 0 or the excess of the final price over the strike.
4. The sum of the hedge P&L, in D4, is just the sum of entries in column J.
5. The total P&L, in D5, is the sum of the initial option payment received and the hedge P&L less the option payout.
6. The total transaction costs, in D6, is the sum of the transaction amounts from column K multiplied by the transaction cost from B7.
The OptionMCHedged spreadsheet is a variant on the OptionMC spreadsheet. It calculates a single path of a Monte Carlo simulation of the delta hedging of European-style call option hedged by two other call options with the same terms but different strike prices.
The inputs for OptionMCHedged, which are supplemental to those in OptionMC, are the specification for the two options being used as hedges. For each option, the input specifies the strike (G2 and G3) and the weight (H2 and H3), the amount of the hedge as a percentage of the option sold.
The changes to calculations are to the deltas in column I, the option price in D1 and the option payoff in D3, all of which are altered to take all three options into account.
The BasketHedge spreadsheet calculates and prices a piecewise-linear hedge using forwards and plain vanilla European options for any exotic derivative whose payoffs as non-linear functions of the price of a single underlying asset at one particular point in time. The spreadsheet consists of a Main worksheet which can be used for any payoff function and other worksheets which contain illustrations of how the Main worksheet can be used to hedge particular payoff functions. The particular functions illustrated are: (1) a single asset quanto, (2) a log contract, (3) interest rate convexity, and (4) a compound option. Corresponding material in the text is in section 10.1.
The primary inputs for the Main worksheet are: time to payoff, in years (B1); the current volatility surface for European options with option expiry of this time to payoff, specified by an ATM volatility (F2), a vol smile (F3), and a vol skew (F4); the non-linear payout function specified by a formula in column C, which will reference possible ending underlying asset prices in column B. The current forward price is assumed to be 100, so all other prices are taken to be percentages of the current forward. Hedge amounts are computed in column D. The unit price of each hedge is computed in column G, with total proceeds computed as the product of hedge amount and unit price in column H. The sum of all total proceeds (H1) represents the initial cost of establishing the hedge. The computation involves no discounting, so the cost of the hedge is a forward price to be paid at option expiry, which can be easily discounted to a present value (as in chapter 9, page 1).
Hedges are divided between cash (row 7), a forward (row 8), puts at strike below the forward (rows 9 to 58), and calls at strike above the forward (rows 59 to 159). The cash hedge provides for a payout equal to the required payout if the ending underlying price is equal to the current forward (C8). The forward hedge amount is determined by the ratio of changes in payout to changes in underlying between the current forward and the first call strike. All put hedges are determined by the difference between the ratio of changes in payout to changes in underlying and hedges already in place for the forward and puts at higher strikes. All call hedges are determined by the differences between the ratio of changes in payout to changes in underlying and hedges already in place for the forward and calls at lower strikes. The cumulative hedges for the forward and puts at higher strike and calls at lower strikes are kept track of in column E.
Unit prices are determined as follows: the forward is assumed to be costless as it is executed at the current forward price, all puts and calls are priced using Black-Scholes based on a volatility computed in column F, which is based on the input ATM volatility, smile, and skew.
Users desiring to change the strike prices used for puts and calls should be guided by the following: (1) there is no need for uniform spacing of strikes, so more detail can be used for price ranges with greater probability than for those with lower probability; (2) strikes must be in order — downward for puts, upward for calls; (3) you should end with a very low strike for puts and a very high strike for calls to avoid underhedging the tails; (4) the lowest strike put should have a hedge amount in column D of 0, the lowest strike call has a hedge amount in column D and cumulative hedge in column E which references row 8 for forwards.
Sample computations which have been provided are:
1. In the Main worksheet, an option which pays off the square root of the difference between final price and a strike of 100.
2. In the Quanto worksheet, a single asset quanto (see the corresponding subsection in section 10.1). An additional input is the strike (B2). An analytic price is computed as a check in J3. It should agree closely with the hedge cost with smile and skew equal to 0.
3. In the Log worksheet, a log contract (see the corresponding subsection in section 10.1). An analytic price is computed as a check in K1. It should agree closely with the hedge cost with smile and skew equal to 0.
4. In the Convexity worksheet, the cost of hedging convexity risk on a constant maturity interest rate swap (see the corresponding subsection in section 10.1 and Hull (2002) section 25.4).
Additional inputs are the yield (J2), tenor (J3), and coupon (J4) of the bond on which the constant maturity swap is based. For each bond price in column B, the corresponding bond yield is computed in column J and constant maturity swap price in column K.
The difference between the constant maturity swap price and the bond price is the convexity cost of hedging a constant maturity swap with a standard bond. This difference is used as the payout in column C which is to be hedged with vanilla interest rate puts and call bond options. Two further adjustments are needed. The first is that bond prices which are so high as to lead to negative yields are not feasible, so no hedging is needed against such prices. The second is that since bond option volatilities are quoted as yield volatilities, they need to be converted to price volatilities before input to the Black-Scholes model. This is done using a factor calculation in L4 which computes the ratio of % changes in bond price to % change in bond yields at the current price level.
5. In the Compound worksheet, a compound option. The particular example is a call-on-a-call, but the payouts in column C can be easily modified to handle any compound option. Additional inputs are the strike of the compound option (B2), and the time to expiry (B4), strike (B5), and implied volatility (B6) of the option on which the compound option is written, with time to expiry of this option measured from the expiry of the compound option. When smile and strike are set to 0, the resulting hedge price can be checked against a standard compound option calculation using the formulas from section 19.4 in Hull (2002) an implementation of which can be found in the Options On Options worksheet accompanying Haug (1998). As described in section 10.2, the basket hedge only protects against changes in underlying asset price, not against changes in the implied volatility of the underlying option. Exposure to this volatility is computed in J1:S13 in a format compatible with that used in the ForwardStartOption spreadsheet. The output in this matrix may be used directly as input to cells B41:J51 of ForwardStartOption to compute a hedge on the residual forward starting volatility risk.
The BinaryMC spreadsheet calculates the distribution of hedging costs for a portfolio consisting of two digital options of the same size but opposite signs, using Monte Carlo simulation. It can be used to explore the impact of differing strikes, maturity dates, correlations between underlying variables, and use of vanilla call option spreads as part of the hedge. It can be used as a prototype for testing Monte Carlo simulations of hedging costs for larger portfolios of digital options.
The two digital options in the portfolio are designated by their respective underlying variables: Variable 1 and Variable 2 (a case in which the two options have the same underlying can be specified by inputting a correlation of 100% between the tow underlyings).
The same computations as are used in the MixtureOfNormals spreadsheet are employed for generating the growth rates for each Monte Carlo case for the two underlying variables. Inputs for the most likely case are specified in cells C3:C7 and for the variant case in E3:E7, with the probability of the variant case input in E2. These growth rates are then applied to the starting prices of the two variables, input in cells B14 and B19 respectively, for the expiry periods of the two digital options, input in D13 and K13 respectively. The strike levels for the two options are specified in D14 and K14 respectively. A digital payout that applies to both options is input in cell D15. If vanilla call option spreads, as explained in Section 12.2.4, are not to be used as part of the hedge, then a zero should be input for the width of the spread in cell F13. If vanilla call option spreads are to be used as part of the hedge, then the width of the call option spread should be input in F13 – this will result in calculation of the size and strike of call options
The ForwardStartOption spreadsheet is a slight variant on the PriceVolMatrix spreadsheet that can be used for risk management of forward starting options using the method discussed in section 12.2.
The difference from PriceVolMatrix is that the option specified by inputs C2 to C7 is a forward starting option with the number of years to the start date specified in E1 and the number of years from the start date to expiry specified in C6. The changes needed to handle a forward starting option are : (1) price (C4) and strike (C5)are automatically set to 100, (2) delta (C9), gamma (C11), and theta (C12) are automatically set to 0, and (3) the computation for the price-vol matrix in A40:J51 only allows the volatility to vary from cell to cell with the price fixed at 100.
In addition to the output produced by PriceVolMatrix, ForwardStartOption calculates, in line 13, the current price of putting on the option positions. All other calculations are as of the time of the roll. The value to be minimized in the optimization,, in cell N14, is the sum of the square of the entries in the price-vol-matrix plus the square of the current price of putting on the option position. So what is minimized is both the cost of the roll across all combinations of future price level and future implied volatility and the cost of setting up the hedge.
This spreadsheet can also be used to find a hedge with vanilla options which neutralizes as closely as possible any pattern of price-vol P&Ls. The desired pattern to hedge just needs to be pasted into the cells B41:J51, as suggested above in the documentation of the Compound worksheet within the BasketHedge spreadsheet.
The CarrBarrier spreadsheet compares the pricing of barrier options using Carr’s static hedging replication with those computed using standard analytic formulas, published by Rubenstein and Reiner, which can be found in Hull (2010) section 25.8. The cost of unwinding the static hedge is also calculated. Corresponding material in the text is in section 12.3.
Input fields are in B7:B17. Option specifications are in cells B1:B7. The current volatility curve for vanilla European options is specified in cells B8:B10. Behavior of the static hedge at a time the barrier is hit can be seen by specifying the time still remaining to option expiry at the time the barrier is hit, in cell B12, and the volatility curve for vanilla European options at the time the barrier is hit, in cells B13:B16.
Cells D2:K2 show the standard analytic values for the eight varieties of barrier options (“cdo” = call down-and-out, “pui” = put up-and-in, etc). All analytic values are computed using the at-the-money volatility. Cells D3:K6 show the cost of the static hedges which the Carr methodology calls for putting on against each of the barrier options. These are broken down as follows:
1. In row 3, a vanilla option struck at the same strike price as the barrier option
1. In row 4, the digital options struck at the barrier. Prices of the digital options are approximated (a very close approximation) by a spread of vanilla calls.
2. In row 5, vanilla options struck at the barrier which are needed to add on to the digital options as a “correction” to create a hedge against the digital portion of the barrier option.
3. In row 6, options struck at the reflection point, which is calculated in row 9.
The value of the barriers based on the static hedge is shown in row 7, as the negative of the sum of each of the static components. The difference between the analytic value and the value based on the static hedge is shown in row 8. When the risk-free rate equals the dividend rate and for a flat volatility surface (smile and skew both = 0), analytic values and values based on the static hedge should be in complete agreement. However, the static hedge approach is capable of taking volatility smile and skew into account in pricing, which the analytic approach cannot. This static hedge approach only works when the risk-free rate and dividend rate are equal and with an assumption of no volatility skew when the barrier is hit.
The cost of unwinding the static hedge when the barrier is hit is shown by component in cells D12:K15, with total cost in cells D16:K16. When the risk-free rate equals the dividend rate and when there is no volatility skew at the time the barrier is hit, there should be no cost to unwinding the static hedge when the barrier is hit.
The OptBarrier spreadsheet illustrates the use of optimization to find a hedge for a down-and-out call barrier option. Input closely parallels that of CarrBarrier. A sold barrier option is hedged by buying a vanilla call option with the same strike and tenor as the barrier option and selling a series of vanilla put options struck below the barrier. The amounts sold of the put options are determined by minimizing payouts for user related barrier unwind conditions. Corresponding material in the text is in section 12.3.
The down-and-out call is specified by current forward price of the underlying (B1), strike (B2), barrier (B3), time to expiry (B4), risk-free rate (B5), and drift (B6). Initial pricing for the vanilla call and puts is specified by ATM volatility (B7), smile (B8), and skew (B9). The strikes of possible put hedges are input in H12:H18.
A series of barrier unwind scenarios are specified by the user in the boxed area B10:F20. The user can specify different times remaining to option expiry (column B), ATM volatilities (column C), smiles (column D), skews (column E), and rate drifts (column F). Between 1 and 8 entries may be used for each of these categories. Cases are created for all possible combinations of entries. The spreadsheet has been set up to accommodate up to 144 barrier unwind cases, so the product of the number of entries in each category must be less than or equal to 144 (the number of entries in each column is displayed on line 11 of each column, the product of these numbers is displayed in A13). In each column, the user should leave blanks after the set of entries for the variable in that column.
Each scenario is displayed on a separate line from 43 to 186. On each of these lines is displayed the variable values corresponding to the case (columns C to G), the proceeds from unwinding the call option at the barrier (column J) and the cost of unwinding each put option at the barrier (columns K through Q). Call and put payouts are summed in column G and statistics computed on the average net payout (H2), average absolute payout (H3), and maximum absolute payout (H4). The user can specify in I2 and I3 the mix of these 3 statistics to be minimized. The quantity to be minimized is in H6. H6 also adds in a small contribution due to the sum of squares of the put amounts, to avoid blowing up the sizes of hedges. The EXCEL SOLVER is called to find the amounts of put options (I12:I19) which minimizes barrier unwind uncertainty. The proceeds from selling these puts is computed in E4. Added to the cost of the vanilla call (E3), this gives the cost of creating a down-and-out call (E1).
The CarrBarrierMC spreadsheet performs a Monte Carlo simulation of a Carr static hedge of a down-and-out call barrier option. The calculations used in each individual case of the simulation exactly match the down-and-out call calculation of the CarrBarrier spreadsheet. By simulating the results of the hedge over a distribution of conditions that could prevail at the time of the barrier being hit, a distribution of P&L results can be generated.
The two variables to which unwind costs will be most sensitive are the volatility skew and the drift at the time of unwind. These two variables are simulated by allowing specification of distribution parameters and correlation between the two variables, using the same calculations as in the MixtureOfNormals spreadsheet. Other variables to which unwind costs are less sensitive – at-the-money volatility, volatility smile, and interest rate – are modeled more simply, as normal variables uncorrelated with one another.
Inputs and outputs can all be found on the Main worksheet, while computations of the Monte Carlo cases are performed on the MC, Regime, Price, and Time worksheets.
Inputs are:
For volatility skew at time of unwind, mean for cases 1 and 2 in C2 and E2, respectively; standard deviation for cases 1 and 2 in C3 and E3, respectively.
For annualized drift (in the forward curve) at time of unwind, mean for cases 1 and 2 in C4 and E4, respectively; standard deviation for cases 1 and 2 in C5 and E5, respectively.
Correlation between volatility skew and drift for cases 1 and 2 in C6 and E6, respectively.
Probability of Case 2 in E1 (probability of Case 1 is just 100% minus the probability of Case 2).
At-the-money volatility at time of unwind – mean in E8, standard deviation in E9.
Volatility smile at time of unwind – mean in F8, standard deviation in F9.
Interest rate level at time of unwind – mean in G8, standard deviation in G9.
Underlying price volatility in D9.
Annualized drift that will govern the evolution of the underlying price (as opposed to the drift at unwind) in H8.
Time to expiry of option in G1.
Number of periods into which the time to expiry will be divided (for the purpose of determining the date the barrier is hit) in G2.
Price of the underlying at the time the option is written in B8.
Strike of the call option in B9.
Down-and-out barrier level in B10.
Outputs are:
The mean and standard deviation of unwind costs in B14 and B15, respectively.
The percentage of unwind losses that exceed certain levels – the levels are user inputs in A17:A20 and the loss percentages are output in B17:B20.
As checks that the Monte Carlo has produced desired distributions of input variables, the calculated mean and standard deviation of the volatility skew is output in I2 and I3, respectively, the calculated mean and standard deviation of the drift is output in I4 and I5, respectively, the correlation between volatility skew and drift is output in I6, the mean and standard deviation of at-the-money volatility at unwind in E11 and E12, respectively, the mean and standard deviation of volatility skew at unwind in F11 and F12, respectively, and the mean and standard deviation of the interest rate level at unwind in G11 and G12, respectively.
Calculations are performed in the following order:
The Regime worksheet calculates the volatility skew and drift for each case, using the same computations that are used in the MixtureOfNormals spreadsheet. To save computational time in the simulation, this spreadsheet calculates call and put prices using standard EXCEL functions rather than using the user-written Black function used in the CarrOption spreadsheet.
The Price spreadsheet follows the evolution of the underlying price by period in each case to allow the Time spreadsheet to determine if the barrier is hit and the time the barrier is hit in each case.
Unwind cost for each case is calculated in the MC spreadsheet, using the following columns:
Time to expiry when the barrier is hit in A.
Elapsed time from when the option was written to when the barrier is hit in B.
At-the-money volatility in C.
Volatility skew in D.
Volatility smile in E.
Drift in F.
Rate level in G.
Dividend level in H.
The ratio of the forward price when the barrier is hit to the call strike in I.
The volatility of the vanilla call option in J
The price of the vanilla call option in O.
The ratio of the forward price when the barrier is hit to the put strike in P.
The volatility of the vanilla put option in Q
The price of the vanilla put option in V.
The total unwind P & L in W (= call option price in O less put option price in V).
The BasketOption spreadsheet computes an approximate value for the volatility to be used in pricing an option on a basket of assets and also computes the sensitivity of this volatility to changes in the volatility of the underlying asset and in the correlation between assets. Corresponding material in the text is in section 12.4.1.
In the general case, 3 inputs are needed: the number of assets in the basket (B6), the average volatility of each asset (B7), and the average correlation between assets (B8). Volatility of the basket (B12) is computed by the approximation formula:
[pic]
where N = number of assets in the basket
( = average volatility
( = average correlation
The same formula is then used to compute sensitivities to a change in volatility and a change in correlation. The size of these changes is input in B2 for volatilities and in B3 for correlations. The recomputed basket volatilities are in C12 for change in volatility and D12 for change in correlation. The sensitivities to change in volatility (C13) and change in correlation (D13) are then just the differences between the recomputed volatility and the base volatility of the basket.
A more detailed computation is available for a 3 asset case. The inputs are the basket weights of the 3 assets (B17-B19), which should sum to 100%, the volatilities of the 3 assets (C17-C19), and the correlations between assets (D17, D18, E17). Volatility of the basket (B21), of cases where each volatility is changed separately (C25 – C27), of a case where all volatilities are shifted (C28), where each correlation is shifted separately (D25, D26, E25) and where all correlations are shifted together (D28) are computed in a separate worksheet labeled “Details.” The computation uses the approximation formula
[pic]
where wi is the weight of each asset in the basket
(i is the volatility of each asset in the basket
(ij is the correlation between assets
The CrossHedge spreadsheet simulates the hedging of a quanto which pays the product of two asset prices. Inputs are prices for the two assets at 6 points in time (B2:B7 for the first asset, C2:C7 for the second asset). The hedge is simulated using two different assumptions, if the asset price moves are completely uncorrelated and if the asset price moves are completely correlated. Completely uncorrelated price moves are captured by having the price moves for the first asset take place at different times than the price moves for the second asset, with rehedges allowed in between. Completely correlated price moves are captured by having price moves for the two assets occur simultaneously. Corresponding material in the text is in section 12.4.5.
P&L for the quanto (D9 and K9) which is assumed to have been sold, is calculated as sale price at the start, which is the product of the two starting asset prices, minus purchase price at the end, which is the product of the two ending asset prices. P&L for the hedges is computed for each asset individually (D10 and K10 for asset 1, D11 and K11 for asset 2). Total P&L (D12 and K12) is the sum of the quanto P&L and hedge P&Ls. It should always be zero for the uncorrelated case.
The cross-hedging strategy, which is calculated in A13:P29, consists of shifting the size of the asset 1 hedge by the amount of each price change in asset 2 and shifting the size of the asset 2 hedge by the amount of each price change in asset 1. At the start, the size of the asset 1 hedge is equal to the initial asset 2 price and the size of the asset 2 hedge is equal to the initial asset 1 price. At the end, the individual asset hedges are closed out at the prevailing prices.
The AmericanOption spreadsheet calculates risk statistics for the early exercise value of American call options. Multiple cases are calculated, with one case per column. Inputs in each column are strike (row 1), time to expiry (row 2), volatility (row 3), risk free rate (row 4), and drift (row 5). The strike is measured relative to the current spot price of the underlying asset, with a strike of 100% indicating at-the-money. Corresponding material in the text is in section 12.5.1.
For each case the European call option price (row 7) is calculated using Black-Scholes and the American call option price (row 8) is calculated using Cox-Ross-Rubenstein, with the early exercise value (row 9) calculated as the difference between the two (since the Cox-Ross-Rubenstein algorithm employed uses the Black-Scholes value as a control variate, the early exercise value will be calculated as 0 for cases in which early exercise cannot be economical). The European option vega is calculated in row 10, and the early exercise value is shown as a percentage of both the European option price (row 12) and the vega (row 13), to give a measure of its relative impact.
Risk statistics calculated are the ratio of the American to European delta (row 15), the ratio of the American to European vega (row 16), the sensitivity to a 1% change in the drift per $1MM par value (row 18).
This calculation can be used for puts on an asset by treating the put as a call to exchange currency for the asset, as explained in the introduction to chapter 9. For example, a put on a share of stock with current stock price of $100, strike of $80, risk-free rate of dollars of 5%, and stock borrow rate of 2%, could be entered as a call to exchange $100 for 1.25 shares of stock (1.25 = $100/$80), which is 125% of the current spot value, with a risk-free rate of stock borrow of 2%, and a drift of 2%–5% = –3%.
The TermStructure spreadsheet illustrates the difficulties involved in pricing yield curve shape dependent products. It shows that different combinations of input parameters which result in identical pricing of European caps/floors and swaptions can lead to very different pricing of yield curve shape dependent products. Corresponding material in the text is in section 12.5.2.
To keep calculations simple, the products being priced only have two possible option tenors, 1 year or 2 years. Inputs are (we use the description 1-2 FRA for the forward rate agreement on 1 year rates which set 1 year from today and 2-3 FRA for the forward rate agreement on 1 year rates set 2 years from today):
1. The current 1-2 and 2-3FRA rates (B1 and B2)
2. The volatility of the 2-3 FRA over the next year (E4)
3. The volatility of the 2-3 FRA over the year following
4. The volatility of the 2-3 FRA over the year following the next year (F4)
5. The correlation between movements in the 1-2 FRA and the 2-3 FRA over the nest year (G4)
The Spreadsheet prices a 1-year into 2-year European swaption (C5) and a 2 years into 1 year European swaption (C6) as well as the following yield curve shape dependent products: Bermudean swaption ((8), knock-out floor (C9), a 1-year option on the spread between the 1-2 between the 1-2 FRA and the 2-3 FRA (C10), and a 1 year option on the 2-3 FRA with a strike which resets based on where the 1-2 FRA level in 1 year (C11). The matrix in D5:G11 shows the dependency of product pricing on inputs. All pricing is done using a Monte Carlo simulation. By having only two swap tenors, we can price the Bermudean swaption using Monte Carlo by the "trick" of taking the maximum between the value of a 2-year swap in 1 year and a 1 year option over the2-3 FRA at that time.
The Monte Carlo simulation uses 2 sets of random numbers, 2,000 numbers to a set, which have been chosen to be normally distributed with mean of 0, standard deviation of 1, and correlation between the 2 sets very close to 0 (the program which selected these random numbers uses a combination of stratified sampling and Cholesky decomposition to fit the desired parameters). The 2 sets of random numbers are contained in B18:B2017 and C18:C2017 — averages, standard deviations and the correlation are computed in B13:C14 and B15.
A lognormal distribution of the 1-2 FRA at the end of one year is generated in D18:D2017 using the random number set B18:B2017, the beginning 1-2 FRA, B1, and the volatility of the 1-2 FRA, D4. An adjustment is made based on a percentage (contained in D17) of the square of the volatility which causes the average 1-year forward price of the FRA to be very close to par (which is the correct arbitrage-free condition, since it is prices not interest rates which should determine potential arbitrages), with FRA prices computed in M18:M2017 and averaged in M13.
A lognormal distribution of the 2-3 FRA at the end of one year is generated in E18:E2017 using the random number set C18:C2017, the beginning 2-3 FRA, B2, the volatility of the 2-3 FRA, E4, and the correlation with the 1-2 FRA, G4. The correlation is achieved using the techniques shown in Hull (2002) section 18.6. An adjustment is made based on a percentage (contained in E17) of the square of the volatility which causes the average 1-year forward price of the FRA (N13) to be very close to par.
By using lognormal distributions of the underlying FRAs, we are assuming a flat volatility surface (no skew or smile), so any differences in the pricing of yield curve shape dependent products is due entirely to the impact of correlation and not to volatility surface shape.
To see how the pricing of yield curve shape dependent products is impacted by changes in correlation, we can hold fixed the volatility of the 1-2 FRA, which determines the price of a 1-year European caplet on one year rates, and the prices of the 1-year into 2-year swaption and the 2 year into 1 year swaption. For a changed correlation, we need to reset the first and second year volatilities of the 2-3 FRA to get back to the prices of the 1 year into 2-year swaption and 2-year into 1-year swaption. This can either be done by trial and error or by using the EXCEL SOLVER to change these volatilities to minimize the squared differences (contained in J9) these swaption prices and target swaption prices in cells I5 and I6.
The remainder of this documentation gives details of the calculation of the price of each product. In all cases the product is first priced as of the end of one year from now and then discounted to today at the current 1-yeaar rate contained in B3. The price at the end of one year from now is always determined as a simple average over the 2,000 Monte Carlo cases.
The 2 into 1 swaption is priced in column F. The price in each case is determined by what a 1-year put option priced one year from now would be. The strike of the put option is the coupon of the swaption (contained in N1) and the current 2-3 FRA is taken from column E. The volatility of the put option is the second year volatility of the 2-3 FRA (F4). Since payments received on the put will not take place until the end of year 3, they must be discounted by both the 1-2 FRA from column D and the 2-3 FRA from column E to get the value at the end of 1 year.
The 1 into 2 swaption is priced in column H as the maximum between 0 and the difference between the value of a 2-year swap in one year, which is priced in column G. The value of the 2-year swap in 1 year is determined by the coupon on the swap (contained in N1) and the 1-2 FRA rate from column D and the 2-3 FRA rate from column E which are used to discount the coupons and final principal payment.
The Bermudean swaption is priced in column I as the maximum in one year between the value of the 2 into 1 swaption from column F and the 2 year swap from column G.
The knock-out floor is priced in column J. It has 0 value if the 1-2 FRA in one year from column D is greater than the coupon in N1. Otherwise, it has the value of a 2 into 1 swaption from column F.
The payoff on the spread option priced in column K is simply the maximum between 0 and the spread between the 2-3 FRA from column E and the 1-2 FRA from column D.
The reset option priced in column L is a call option on the 2-3 FRA with a strike set at the current level of the 1-2 FRA. So the underlying price is the 2-3 FRA taken from column E, the strike is the 1-2 FRA taken from column D, and the volatility is the second year volatility of the 2-3 FRA (F4). For simplicity, discount and dividend rates have been set to 0.
The CreditPricer spreadsheet translates between par yields and default rates for risky bonds and also prices risky bonds based on the derived default rates. Computations only cover bonds with a whole number of years to maturity less than or equal to five, with annual coupon payments. All inputs and principal results are on the Main worksheet. Supporting computations are on the Details worksheet. Corresponding material in the text is in section 13.1.
Inputs are continuously compounded zero coupon rates for a risk free instrument (B4:B8), annual default rates for the risky bond (D4:D8) and a loss given default rate for the risky bond (F1) and par rates for the risky bond (G4:G8).
Simple computations are the risk free discount rates (C4:C8) and the risk free par rates (F4:F8) from the zero coupon rates, cumulative default rates (E4:E8) from the annual default rates. The risky spreads (H4:H8) are calculated as the spread between input par rates for risky bonds and calculated par rates for risk free bonds.
The more detailed computations on the Details worksheet are the pricings of the risky par bonds in cells A1:O8. Let’s focus on just one example: the 5 year risky par bond price computed in cells N1:O8. The price in cell O7 consists of the sum of discounted expectations of cash flows received if no default occurs, computed in N2:N7 and the sum of the discounted expectations of cash flows received if default does occur, computed in O2:O6. All discounting is done at the risk free discount rates, since probability of default is being explicitly accounted for through lower receipts in the event of default rather than through higher discounting of promised receipts. In each year, the cash flows received if default does not occur are the ordinary coupon payments plus the return of principal in the final year. Each is multiplied by 1 – the cumulative default probability for that year. Cash flows received if default does occur in a given year is the principal amount multiplied by 1 – the loss given default (recall from pages 3-4 of chapter 12 that in bankruptcy only the principal amount can be claimed for recovery). The chance that this cash flow will be received in a given year is the probability that no default occurred in a previous year and that default did occur in this year, which is the product of (1–last year’s cumulative default rate) and this year’s annual default rate.
While the spreadsheet allows par coupon rates for the risky bonds to be input, the resulting pricing of the risky par bonds in Details A1:A8 may not result in bond prices of 100%. This can be corrected in one of two ways; using the Solve functionality of EXCEL. Either the annual default rate inputs in D4:D8 are altered to fit the input par coupon rates or the par coupon rates for the risky bond input in G4:G8 are altered to fit the input annual default rates. In either case, the target cell for Solve is H10 which sums the absolute difference between the prices of the risky par bonds and 100%.
The spreadsheet also supports the pricing of risky bonds with selected tenor (1,2,3,4, or 5 years) and selected coupon rate. Three combinations of tenor and coupon rates can be entered in A12:B14. The resulting prices are displayed in C12:C14, with computations following the same algorithm as those for the risky par bonds described above. These calculations are contained in the Details worksheet in cells A12:H18.
The MertonModel spreadsheet calculates default probabilities and distance to default using the simplified model documented of section 13.2.3. Inputs are:
– E0, the current market value of firm equity
– D0, the current value of firm debt, discounted at the risk-free rate
– (E, the annualized implied volatility of equity
– T, the time to debt maturity (in years)
Outputs are:
– Pd, the probability of default
– Ld, the % loss in the event of default
– S, the required annualized spread above the risk free debt to compensate the (risk neutral) expected default loss
– The current market value of firm debt
– The distance to default
Intermediate computations include V0, the current market value of total firm assets, and (v, the annualized volatility of total firm value. V0 and (v are calculated by the EXCEL SOLVER to fit calculated values of E0 and (E (using the equations on page 14 to relate E and (E to V0 and (v) to the input values of E0 and (E. The square root of the sum of the squares of the differences between input and calculated values is computed in B19 and is minimized by the SOLVER.
The JumpProcessCredit spreadsheet implements the jump process model of credit defaults described in Section 13.2.4.1.
The model has seven inputs – stock price (B2), annualized volatility of stock price (B3), the debt-per-share (B4), the default barrier as a % of debt (B5), the standard deviation of the default barrier (B6), the recovery rate of the particular instrument you are analyzing (B7), and the risk-free interest rate (B8). Output consists of the following, for each maturity from 1 year through 10 years: the cumulative default probability (the probability that a default will take place in any year prior to maturity; in column D) the forward default probability (the probability that default will take place during the maturity year; in column B), the annualized default probability (the annual probability of default that when compounded gives the cumulative default probability; in column F), the annualized loss (which is just the annualized default probability multiplied by (1 – the input recovery rate; in column G), and the par CDS spread (the spread on a CDS of the specific maturity that would exactly compensate the writer of CDS insurance for expected loss; in column H).
The model and assumptions used closely follow that documented in CreditGrades (2002). This model is also documented in Schonbucher (2003, Section 9.5). Details of the calculations are displayed in columns K through U, using the notation of CreditGrades (2002).
Of the seven inputs, three can be determined from available data: the current stock price , the debt-per-share, and the risk-free rate. Methodology for estimating the current debt-per-share can be found in Appendix B of CreditGrades (2002), which recommends some adjustments to published debt-per-share before inputting to the model. For accuracy, the risk-free rate should be input for each maturity; in the spreadsheet, we utilize the approximation of a single risk-free rate for all time periods.
Equity volatility could in theory be based on levels that can be assured by entering into volatility swaps determined by the sensitivity of values of CDS holdings to change in equity volatility inputs. In practice, this may be placing too much reliance on the predictive accuracy of this model. Simple forecasts of equity volatility (differing by maturity, for better accuracy) are probably the best input.
CreditGrades(2002) Section 2.2 gives an argument for using the average recovery rate on all of the firms debt as the input for the default barrier as a % of debt outstanding, but this is only a heuristic argument and I prefer to leave this input to the user who can choose the CreditGrades assumption or experiment with default barrier levels that seem to fit the historical credit spreads of the particular issuer or category of issuers. If the user chooses to experiment with different barrier levels to fit historical credit spreads, then the input for debt-per-share becomes somewhat arbitrary, since its only role in the model is in determining the default barrier as a product of the debt-per-share and the default barrier as % of debt outstanding.
As discussed in Section 13.2.4.1, standard deviation of the default barrier is assumed to represent uncertainty about the current level of the default barrier, and hence is independent of time period. Section 2.3.2 and Figure 2.2 of CreditGrades (2002) shows the impact of the standard deviation of the default barrier on the term structure of credit spreads. Evidence is presented there that a standard deviation of 30 percent for the default barrier, derived from historical statistics on actual recovery data, produces a term structure of credit spreads that is consistent with market observations.
The CDO spreadsheet calculates credit losses on each tranche of a CDO given input about the expected value and distribution of losses on the pool of underlying credits for the CDO.
Input and outputs are located on the Main worksheet while primary calculations are performed on the Calculation worksheet.
Principal inputs are overall expected loss on the underlying pool (B2), correlation between losses (B1) and the break points for tranches (B11:G11). Other inputs are the size of “deltas” to use in calculating sensitivities: loss delta in E1, default delta in E2, correlation delta in E3, and jump delta in E4. Heavier tails can be generated by inputting tail factors greater than 100% in cells B6:B8 and/or factors greater than 100% for correlation factors in cells C6:C8. Inputting 100% as inputs in B6:B8 and E6:E8 will result in a run corresponding to the Gaussian Copula Model, as documented in Section 13.3.3 of my book and in Section 23.9 of Hull (2012).
Outputs are displayed for each tranche, in columns B through G, and for the entire pool, in column H. Outputs are: the expected loss for each base tranche (row 12), expected loss for each tranche (row 13), loss as a % of investment (row 14), standard deviation of loss (row 15), standard deviation of loss as a % of average loss (row 16), sensitivity to a change in overall expected loss (row 17), sensitivity to a default (row 18), sensitivity to a change in the correlation factor (row 19), and sensitivity to a jump in the expected loss (row 20). Also shown are the % distribution of sensitivities between tranches: to a change in expected loss (row 21), to a default (row 22), to a change in the correlation assumption (row 23), and to a jump in expected loss (row 24). Note that since sensitivity to a correlation change will be positive for some tranches and negative for other tranches, the % distribution shown in row 23 is a % of the sum of absolute changes due to correlation, calculated in row 27. Also shown is the loss by tranche (rows 32 and 35) and loss as a % of investment by tranche (rows 33 and 36) corresponding to two very large changes in the common factor driving all losses – the first corresponding to a 1.05% probability and the second corresponding to a 2.45% probability.
|The Calculation worksheet performs the computations that produce these outputs. Each row |
|Of Column E corresponds to an instance of equation (23.12) in Hull (2012). Parallel |
|calculations are performed in the LossDelta, DefaultDelta, CorrDelta, and Jump |
|worksheets to produce the sensitivity outputs. The Factor worksheet produces piecewise |
|linear interpolations of the input tail factors and correlation factors, for use in columns B |
|and A, respectively, of the Calculation worksheet. |
| | | | |
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related searches
- tilt of the earth s axis
- secretary of the interior s guidelines
- secretary of the interior s standards
- the cast of stephen king s it
- best songs of the 70 s playlist
- actresses of the 40 s era
- impact of the women s movement
- effects of the women s movement
- girl bands of the 80 s and 90 s
- what s the population of the us
- check the status of my driver s license
- printable version of the lord s prayer