Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- np.set_printoptions(formatter={'float_kind':lambda x:'%5.2f'%x})
- x0 = 50
- K = 50
- sigma = 0.4
- T = 5/12
- r = 0.1
- N = 5
- dt = T/N
- u = np.exp(sigma*np.sqrt(dt))
- d = 1 / u
- q = (np.exp(r*dt)-d) / (u - d)
- discount = np.exp(-r*dt)
- tree = np.empty((N+1,N+1))
- tree[:] = np.nan # for easier debugging
-
- def x(i,j):
- return x0 * u**j * d**(i)
- temp = tree.copy()
- for i in range(N+1):
- for j in range(N+1):
- temp[i,j] = x(i,j)
- temp
- array([[50.00, 56.12, 62.99, 70.70, 79.35, 89.07],
- [44.55, 50.00, 56.12, 62.99, 70.70, 79.35],
- [39.69, 44.55, 50.00, 56.12, 62.99, 70.70],
- [35.36, 39.69, 44.55, 50.00, 56.12, 62.99],
- [31.50, 35.36, 39.69, 44.55, 50.00, 56.12],
- [28.07, 31.50, 35.36, 39.69, 44.55, 50.00]])
- def prettyPrint(tree):
- newtree = np.empty((tree.shape[0],2*N+1))
- newtree[:]=np.nan
- #print(newtree)
- for i in range(tree.shape[0]):
- for j in range(i+1):
- newtree[i,N+(2*j-i)-i] = tree[i,j]
- print(newtree)
- prettyPrint(temp)
- [[ nan nan nan nan nan 50.00 nan nan nan nan nan]
- [ nan nan nan 44.55 nan 50.00 nan nan nan nan nan]
- [ nan 39.69 nan 44.55 nan 50.00 nan nan nan nan nan]
- [ nan 39.69 nan 44.55 nan 50.00 nan nan nan nan 35.36]
- [ nan 39.69 nan 44.55 nan 50.00 nan nan 31.50 nan 35.36]
- [ nan 39.69 nan 44.55 nan 50.00 28.07 nan 31.50 nan 35.36]]
-
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement