Consider a single period model in which an opportunity, , has a random pay-off determined by a known distribution function, as discussed in Modelling Investment Opportunities. We assume there is no time-value of money (the market does not pay a risk free interest rate). An entrepreneur wishes to fund the opportunity by taking out a loan , what interest rate should a lender demand for the loan?
Employing the concept of reciprocity we can calculate the interest rate by identifying the repayment amount such that
Assuming has a continuous distribution, we can identify by looking for the solution of
where is the probability density of . This is trivial to calculate employing Newton-Raphson and there is a unique solution such that for . On this basis the simple interest rate in the single period model is given by
What is not immediately obvious, but has emerged when simulating, is that if then, for fixed , is invariant with respect to , the scale parameter. Similarly, if then, for fixed , is invariant to , the scale parameter.
- Does this link to risk neutral pricing in a Black-Scholes world, where the discounted asset prices evolve log-normally with zero drift, i.e. .
- Can these observations be proved to be true in general for distributions defined by shape/scale parameters?
The answer to the second question is possibly related to the fact that satisfies the expression
The fact that the fair interest rate is invariant to scale parameters is interesting since the expected return is dependent on the scale. Doing some simulations with the Gamma distribution and varying the parameter delivers the following result
This plot was produced using the following python code
import numpy as np from scipy.integrate import quad import scipy.stats as stats from scipy.special import gammainc, gammaincinv, gammaincc, gammainccinv, gamma import matplotlib.pyplot as plt #Define a function to calculate the fair value loan repayment # k, theta are the distribition parameters for the project payoff # L is the value of the loan requested def loan_repayment(k,theta,L): # Defining function to integrate #f1 calculates the expected value if the project pays out less than x f1 = lambda u: u*stats.gamma.pdf(u,k, scale = theta) #initialise parameters diff=L x=L # Do Newton-Raphson while diff>L/100: I1, err = quad(f1, 0, x) I2 = gammaincc(k,x/theta) num= I1 + x*I2 - L x = x - num/I2 diff=np.fabs(num/I2) return x # #Do the plot # #Set the variables/output, a bit clunky theta=1.0 k_5=np.arange(0.2,10.1,0.2) k_10=np.arange(0.2,10.1,0.2) k_20=np.arange(0.2,10.1,0.2) k_40=np.arange(0.2,10.1,0.2) k_j=0.0 #Lookp over shape parameter, and calculate r for different q's for j in range(len(k_5)): k_j=(j+1)*0.2 L=theta*gammaincinv(k_j,0.05) Lr=loan_repayment(k_j,theta,L) k_5[j]=(Lr-L)/L L=theta*gammaincinv(k_j,0.1) Lr=loan_repayment(k_j,theta,L) k_10[j]=(Lr-L)/L L=theta*gammaincinv(k_j,0.2) Lr=loan_repayment(k_j,theta,L) k_20[j]=(Lr-L)/L L=theta*gammaincinv(k_j,0.4) Lr=loan_repayment(k_j,theta,L) k_40[j]=(Lr-L)/L #Set up the x-axis, a bit clunky x=np.arange(0.2,10.1,0.2) #Do the plot fig, ax = plt.subplots() ax.plot(x, k_5, 'r-', label='$q=5\%$') ax.plot(x, k_10, 'b-', label='$q=10\%$') ax.plot(x, k_20, 'g-', label='$q=20\%$') ax.plot(x, k_40, 'k-', label='$q=40\%$') plt.xlabel('Shape $k$') plt.ylabel('Fair interest rate') plt.title(r'Fair interest rate, $\theta=1.0$, $q$ varies') # Now add the legend with some customizations. legend = ax.legend(loc='upper right') for label in legend.get_texts(): label.set_fontsize('large') for label in legend.get_lines(): label.set_linewidth(1.5) # the legend line width plt.show()