sud=s c_suu=round(max(suu-x,0),2) c_s=round(max(s-x,0),2) c_sdd=round(max(sdd-x,0),2) plt.figtext(0.8,0.94,'s*u*u') plt.figtext(0.8,0.91,s_dollar+str(suu)) plt.figtext(0.8,0.87,c_dollar+str(c_suu)) plt.figtext(0.8,0.6,s_dollar+str(sud)) plt.figtext(0.8,0.64,'s*u*d=s') plt.figtext(0.8,0.57,c_dollar+str(c_s)) plt.figtext(0.8,0.32,'s*d*d') plt.figtext(0.8,0.28,s_dollar+str(sdd)) plt.figtext(0.8,0.24,c_dollar+str(c_sdd)) # at level 1 c_01=round((p*c_suu+(1-p)*c_s)*exp(-r*deltaT),2) c_02=round((p*c_s+(1-p)*c_sdd)*exp(-r*deltaT),2) plt.figtext(0.43,0.78,'s*u') plt.figtext(0.43,0.74,s_dollar+str(su)) plt.figtext(0.43,0.71,c_dollar+str(c_01)) plt.figtext(0.43,0.32,'s*d') plt.figtext(0.43,0.27,s_dollar+str(sd)) plt.figtext(0.43,0.23,c_dollar+str(c_02)) # at level 0 (today) c_00=round(p*exp(-r*deltaT)*c_01+(1-p)*exp(-r*deltaT)*c_02,2) plt.figtext(0.09,0.6,s_dollar+str(s)) plt.figtext(0.09,0.56,c_dollar+str(c_00)) p4f.binomial_grid(n) show()
from math import sqrt,exp import matplotlib.pyplot as plt import p4f as p4f s=10;r=0.02;sigma=0.2;T=3./12;x=10 n=2;deltaT=T/n;q=0 u=exp(sigma*sqrt(deltaT));d=1/u a=exp((r-q)*deltaT) p=(a-d)/(u-d) su=round(s*u,2);suu=round(s*u*u,2) sd=round(s*d,2);sdd=round(s*d*d,2) sud=2 plt.figtext(0.08,0.6,'Stock '+str(s)) plt.figtext(0.33,0.76,"Stock price=$"+str(su)) plt.figtext(0.33,0.27,'Stock price='+str(sd)) plt.figtext(0.75,0.91,'Stock price=$'+str(suu)) plt.figtext(0.75,0.6,'Stock price=$'+str(sud)) plt.figtext(0.75,0.28,"Stock price="+str(sdd)) p4f.binomial_grid(n) plt.show()