欧式和美式期权(Option)是最基础的衍生证卷。如何定价是初学金融工程者的必备知识。二叉树的又是最简单但是容易理解的工具。在网上有期权计算器可以很容易得到。但是练习自己编写还是有收益的。
欧式期权的无套利定价code非常简单:首先定义组合数,然后计算在不同节点的收益和概率,最后相加。
def nCr(n,r):
f =
math.factorial
return f(n)
/ (f(r) * f(n-r))
class Option(object):
def
__init__(self,s0,sigma,r,t,n,k,type=''):
self.s0=s0
self.sigma=sigma
self.r=r
self.t=t
self.n=n
self.k=k
self.type=type
def
Eu_price(self):
time=float(self.t)/self.n
u=math.exp(self.sigma*time**0.5)
d=math.exp(-self.sigma*time**0.5)
p=(math.exp(self.r*time)-d)/(u-d)
payment=0
for i in range(self.n+1):
if self.type=='Call':
pay=max(((self.s0*u**(self.n-2*i))-self.k),0)
elif self