Merton Structural Credit Model (Matrixwise Solver)
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)]
s: Credit Spread
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);
Cite As
Mark Whirdy (2024). Merton Structural Credit Model (Matrixwise Solver) (https://www.mathworks.com/matlabcentral/fileexchange/39717-merton-structural-credit-model-matrixwise-solver), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Acknowledgements
Inspired by: MTIMESX - Fast Matrix Multiply with Multi-Dimensional Support
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
Version | Published | Release Notes | |
---|---|---|---|
1.5.0.0 | 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. |
||
1.4.0.0 | 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 |
||
1.3.0.0 | 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)
|
||
1.1.0.0 | Added Expected-Recovery calclulation [A_t,sig_A,D_t,s,p,R] = calcMertonModel(E_t,sig_E,K,t,T,r); |
||
1.0.0.0 |