Example #1
0
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):
Example #2
0
# 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
Example #3
0
# 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)