Table of Contents


File

getOptionPrice.m

Name

getOptionPrice

Synopsis

getOptionPrice - Calculates the greeks and the value of the embedded Bermudan put option in a mortgage using a binomial tree.

Introduction

NOTE: PART OF A SET OF 8 RELATED FILES:

Khandani, Lo, and Merton (2009) posit that rising home prices, declining interest rates, and near-frictionless refinancing opportunities led to vastly increased systemic risk in the financial system. A simultaneous occurrence of these factors imposes an unintentional synchronization of homeowner leverage. This synchronization, coupled with the indivisibility of residential real estate that prevents homeowners from deleveraging when property values decline and homeowner equity deteriorates, conspire to create a ratchet effect in which homeowner leverage is maintained or increased during good times without the ability to decrease leverage during bad times. To measure the systemic impact of this ratchet effect, the U.S. housing market is simulated with and without equity extractions, and the losses absorbed by mortgage lenders is estimated by valuing the embedded put option in non-recourse mortgages. The proposed systemic risk indicator for the housing market is the dollar-delta of this embedded put option.

License

=============================================================================

Copyright 2011, Dimitrios Bisias, Andrew W. Lo, and Stavros Valavanis

COPYRIGHT STATUS: This work was funded in whole or in part by the Office of Financial Research under U.S. Government contract TOSOFR-11-C-0001, and is, therefore, subject to the following license: The Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license to reproduce, prepare derivative works, distribute copies to the public, perform and display the work.
All other rights are reserved by the copyright owner.

THIS SOFTWARE IS PROVIDED "AS IS". YOU ARE USING THIS SOFTWARE AT YOUR OWN RISK. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS, CONTRIBUTORS, OR THE UNITED STATES GOVERNMENT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

=============================================================================

Inputs

current_house_value
Name:
current_house_value
Description:

The current value of the house.

Type:
float
Range:
(0,+inf)
Dimensions:

scalar


ltv
Name:
ltv
Description:

The loan-to-value ratio.

Type:
float
Range:
(0,+inf)
Dimensions:

scalar


house_volatility
Name:
house_volatility
Description:

The volatility (measured as one standard deviation / current house value) of the house price (e.g. 0.2) in annualized terms.

Type:
float
Range:
(0,+inf)
Dimensions:

scalar


rent_yield
Name:
rent_yield
Description:

The rental yield (e.g 0.04) in annualized terms.

Type:
float
Range:
(0,+inf)
Dimensions:

scalar


risk_free_rate
Name:
risk_free_rate
Description:

The risk free rate in annualized terms.

Type:
float
Range:
(0,+inf)
Dimensions:

scalar


mortgage_rate
Name:
mortgage_rate
Description:

The mortgage rate in annualized terms (APR).

Type:
float
Range:
(0,+inf)
Dimensions:

scalar


time_left
Name:
time_left
Description:

The time remaining until maturity of the mortgage, in months.

Type:
Integer
Range:
{0,...,360}
Dimensions:

scalar


Outputs

Put_Delta
Name:
Put_Delta
Description:

Delta (DLTi,t) is the sensitivity or first derivative of the value of the guarantee (GRTi,t) with respect to changes in the price of real estate for a single home from vintage i at time t.

Type:
float
Range:
(-1,0)
Dimensions:

scalar


Put_Gamma
Name:
Put_Gamma
Description:

Gamma is the second derivative of the value of the guarantee (GRTi,t) with respect to to changes in the price of real estate for a single home from vintage i at time t.

Type:
float
Range:
(0,1)
Dimensions:

scalar


Put_Vega
Name:
Put_Vega
Description:

Vega is the derivative of the option value with respect to the volatility of the price of real estate for a single home from vintage i at time t.

Type:
float
Range:
(0,1)
Dimensions:

scalar


Put_Value
Name:
Put_Value
Description:

The value of the guarantee, i.e., the put option, calculated for a single home from vintage i at time t.

Type:
float
Range:
(0,+inf)
Dimensions:

scalar


Code

% Run warning message
warning('OFRwp0001:UntestedCode', ...
    ['This version of the source code is very preliminary, ' ...
     'and has not been thoroughly tested. Users should not rely on ' ...
     'these calculations.']);





mortgage_amount = current_house_value*ltv;


StartDate = dateFromIndex(1); % It doesn't matter which dates you pick
MaturityDate = dateFromIndex(1+time_left);
TimeSpec = crrtimespec(StartDate, MaturityDate, time_left);

DividendType = 'constant';
ExDividendDates = TimeSpec.dObs(2:end)';

StockSpec = stockspec(house_volatility,current_house_value,DividendType, ...
rent_yield,ExDividendDates);

RateSpec = intenvset('Rates', risk_free_rate, 'StartDates',StartDate, ...
'EndDates', MaturityDate,'Compounding', -1);

CRRTree = crrtree(StockSpec, RateSpec, TimeSpec);
% We need to divide the mortgage rate with 12 since it is annualized 
[Principal, Interest, Balance, Payment] = amortize(mortgage_rate/12, ...
time_left, mortgage_amount);

OptSpec = 'Put';
Strike = Balance;
Settle = StartDate;
ExerciseDates = [TimeSpec.dObs(2:end)];
InstSet = instoptstock(OptSpec, Strike, Settle, ExerciseDates);

[Put_Delta, Put_Gamma, Put_Vega, Put_Value] = crrsens(CRRTree, InstSet);

Examples

NOTE: Numbers used in the examples are arbitrary valid values.
They do not necessarily represent a realistic or plausible scenario.

 current_house_value = 50
 ltv = 2
 house_volatility = 0.2
 rent_yield = 0.04
 risk_free_rate = 0.05
 mortgage_rate = 0.09
 time_left = 7

 [Put_Delta, Put_Gamma, Put_Vega, Put_Value] = getOptionPrice( ...
      current_house_value,ltv,house_volatility,rent_yield, ...
      risk_free_rate,mortgage_rate,time_left);

References

Khandani, A. E., Lo, A. W., & Merton, R. C. (2012). Systemic risk and the refinancing ratchet effect. Journal of Financial Economics.

Bisias et al. (2012). A survey of systemic risk analytics (Working paper #0001). Washington, DC: Office of Financial Research, 89-94.