def main(): S = np.arange(80, 121) Sl = 0 Su = 200 N = 128 * T K = 8 * (Su - Sl) Sk = K * (S - Sl) / (Su - Sl) model1 = FDEModel(N, dS_total, payoff) model2 = FDEModel(N, dS, payoff) A.R = 1.0 plt.plot(S, model1.price(Sl, Su, K).V[0][Sk]) plt.plot(S, model2.price(Sl, Su, K).V[0][Sk]) A.R = 0.5 plt.plot(S, model1.price(Sl, Su, K).V[0][Sk]) A.R = 0.0 plt.plot(S, model1.price(Sl, Su, K).V[0][Sk]) plt.ylim(100, 150) plt.xlabel("Stock Price") plt.ylabel("Convertible Bond Price") plt.legend([ "Total default (R=100%)", "No default", "Total default (R=50%)", "Total default (R=0%)" ], loc=2) if __name__ == "__main__": plotmain(main)
from convertible_bond import dS_total as dS, payoff, C, T from model import FDEModel from plot import plotmain def main(): S = np.linspace(0, 200, 200 * 8 + 1) Sl = 0 Su = 250 N = 128 * T K = 8 * (Su - Sl) Sk = (K * (S - Sl) / (Su - Sl)).astype(int) legend = [] label = "$\\Omega^c = \\{%i\\}$" model = FDEModel(N, dS, payoff) fig = plt.figure() ax = fig.add_subplot(111) for i in range(1, 5): C.times = [i] ax.plot(S, model.price(Sl, Su, K).V[0][Sk]) legend.append(label % i) plt.xlabel("Stock Price") plt.ylabel("Convertible Bond Price") plt.legend(legend) if __name__ == "__main__": plotmain(main)