if __name__ == "__main__": n = 10 u = 1.1 d = 0.9 r0 = 0.05 a = 0.01 b = 1.01 rec = 0.2 F = 100 qu = 0.5 qd = 1-0.5 # set up short rate lattice rlat = bino.setShortRateLattice(0.05,1.1,0.9,n) # set up default probability hlat = BT.BinomialTree(n+1) for i in range(n+1): for j in range(i+1): hlat.setNode(i,j,a*b**(j-i/2.)) # set up price z = BT.BinomialTree(n+1) i = n for j in range(i+1): z.setNode(i,j,F) for i in range(n-1,-1,-1):
# solution for homework 5 import bfc.binomial as bi if __name__ == "__main__": srl = bi.setShortRateLattice(0.05,1.1,0.9,10) zcb = bi.setZCB(srl) # question 1 print zcb.getNode(0,0) # question 2 print bi.forwardBond(zcb,4,srl) # question 3 print bi.futureBond(zcb,4,srl) # question 4 print bi.callBond(80,6,zcb,srl) # question 5 d = bi.elementarySecurity(srl) price = 0 for i in range(2,12): s = [(srl.getNode(i-1,j)-0.045)/(1+srl.getNode(i-1,j))*d.getNode(i-1,j) for j in range(i)] price += sum(s) print price*1000000 # question 6 e = bi.swap(10,srl,fr=0.045,start=1) print bi.swaption(e,srl,0,5)*1000000
# solution for homework 5 import bfc.binomial as bi if __name__ == "__main__": srl = bi.setShortRateLattice(0.05, 1.1, 0.9, 10) zcb = bi.setZCB(srl) # question 1 print zcb.getNode(0, 0) # question 2 print bi.forwardBond(zcb, 4, srl) # question 3 print bi.futureBond(zcb, 4, srl) # question 4 print bi.callBond(80, 6, zcb, srl) # question 5 d = bi.elementarySecurity(srl) price = 0 for i in range(2, 12): s = [(srl.getNode(i - 1, j) - 0.045) / (1 + srl.getNode(i - 1, j)) * d.getNode(i - 1, j) for j in range(i)] price += sum(s) print price * 1000000 # question 6 e = bi.swap(10, srl, fr=0.045, start=1)