Code covered by the BSD License

### Highlights from Merton Structural Credit Model (Matrixwise Solver)

5.0

5.0 | 2 ratings Rate this file 26 Downloads (last 30 days) File Size: 2.9 KB File ID: #39717

# Merton Structural Credit Model (Matrixwise Solver)

04 Jan 2013 (Updated )

Matrixwise Calculation Firm Asset Value, Volatility, Debt Value, Spread, Default Prob, Exp-Recovery

File Information
Description

Calculates the Value of Firm Assets, Volatility of Firm Assets,
Debt-Value, Credit-Spread, Default Probability and Recovery Rate as per
Merton's Structural Credit Model. The value and volatility of firm assets
are found by Bivariate Newton Root-Finding Method of the Merton
Simultaneous Equations. The Newton Method is carried out matrixwise
(i.e. fully vectorised) in a 3d Jacobian so that bivariate ranges of
(E_t,sig_E,K,T) values may simultaneously calculated. (See Examples)

Function requires mtimesx.m available on the Matlab File Exchange at
http://www.mathworks.com/matlabcentral/fileexchange/25977-mtimesx-fast-matrix-multiply-with-multi-dimensional-support

Outputs
A_t: Value of Firm's Assets [A_t = Call(K,sig_A,A_t,t,T,r)]
sig_A: Volatility of Firm's Assets
D_t: Value of Firm Debt [D_t = pv(K) - Put(K,sig_A,A_t,t,T,r)]
p: Default Probability
R: Expected Recovery
d: Black-Scholes Parameter Anonymous Function

Inputs
E_t: Value of Equity
sig_E: Equity Volatility
K: Debt Barrier
t: Estimation Time (Years)
T: Maturity Time (Years)
r: Risk-free-Rate

Example 1
T = 5;
t = 0;
K = 500;
sig_E = 0.5;
r = 0.05;
E_t = 1200;
[A_t,sig_A,D_t,s,p,R,d1] = calcMertonModel(E_t,sig_E,K,t,T,r);

Example 2: Variates (sig_E,E_t)
t = 0; r = 0.05;
sig_E = (0.05:0.05:0.8)'; E_t = (100:100:2000)';
[sig_E,E_t] = meshgrid(sig_E,E_t);
K = repmat(600,size(sig_E)); T = repmat(5,size(sig_E));
[A_t,sig_A,D_t,s,p,R,d1] = calcMertonModel(E_t,sig_E,K,t,T,r);

Example 3: Variates (K,T)
t = 0; r = 0.05;
K = (100:100:4000)'; T = (0.1:0.1:10)';
[K,T] = meshgrid(K,T);
sig_E = repmat(0.4,size(K)); E_t = repmat(1300,size(K));
[A_t,sig_A,D_t,s,p,R,d1] = calcMertonModel(E_t,sig_E,K,t,T,r);

Acknowledgements

Mtimesx Fast Matrix Multiply With Multi Dimensional Support inspired this file.

Required Products MATLAB
MATLAB release MATLAB 7.12 (R2011a)
Other requirements mtimesx.m http://www.mathworks.com/matlabcentral/fileexchange/25977-mtimesx-fast-matrix-multiply-with-multi-dimensional-support
23 Aug 2013

user-friendly and fast calculating implementation of the Merton model.
fast adaptable and convenient for sensitivty analysis

17 May 2013
16 May 2013

To get mtimesx working, type

mex -setup

Select a compiler, [1] is the C compiler shipped with Matlab and will do

Then run

mtimesx_build

which will create a .mex32 file in your path. This is Matlabs "interface" to the C code

16 May 2013

I really don't know why I am getting this error

Error using mtimesx_build (line 169)
A C/C++ compiler has not been selected with mex -setup

09 May 2013

This model is excellent! Very flexible and user-friendly. It's been very useful for calculating credit spreads of bonds with different asset values, and volatilities.

07 Jan 2013

[A_t,sig_A,D_t,s,p,R] = calcMertonModel(E_t,sig_E,K,t,T,r);

25 Feb 2013

Minor code refactoring, code returns the Black-Scholes Parameter to allow for further sensitivity analysis & calculation of greeks

d = @(z,A_t,sig_A,T,t,K,r)
z=+1/-1 for Call/Put

25 Feb 2013

Added the Black-Scholes Parameter Anonymous Function Handle as an Output to allow for further analysis (sensitivity, greeks etc)

d = @(z,A_t,sig_A,T,t,K,r)((1/(sig_A*sqrt(T-t)))*(log(A_t/K) + (r + (z)*0.5*sig_A^2)*(T-t)));

z = +1/-1

14 May 2013

Removed fsolve dependency (Optim Toolbox) for efficiency increase (even in scalar inputs case)

Full Code re-factorization to facilitate matrixwise calculation of bivariate ranges of {E_t,sig_E,K,T} values using 3d Newton Jacobian solution.