全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1239 3
2020-03-08
用python sympy写的基础版本black-scholes期权公式以及相关希腊字母的程序,可用于求具体的期权价值和希腊字母值
附件列表

black-scholes option models.rar

大小:42.6 KB

 马上下载

用sympy写的black-scholes 期权公式,可用于求值

本附件包括:

  • bsm models.html
  • bsm models.ipynb

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-3-9 17:08:29
附件将以上程序包装成了python class,用起来更方便.
附件是txt,自己改成.py文件

%run BSM.py
myoption=BSM().calculate()

vardict={S:1,X:2,r:0.05,sigma:0.29,T:1}
# 注意字典中的S:1不要写成"S":1,因为用的是sympy中的符号,不用引号

计算看涨期权
myoption.call(vardict)
0.0184
计算希腊值
myoption.Delta(vardict,tp='put')
-0.981
部分希腊值(Theta)定义不对,算出来是错误的.


附件列表

BSM.txt

大小:3.1 KB

 马上下载

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-3-10 10:00:43
实践证明,用sympy直接对变量求导的方法求希腊字母太不准了,比如Delta,直接算的话看涨期权Delta为N(d1),
假设{S:10,X:12,r:0.05,sigma:0.3,T:0.5},带入求得N(d1)=0.375
但是用c对S求导算得0.313
其他希腊字母简直差得太远,有的符号都反了,看来用求导的方式算希腊字母行不通,还得使用有限差分等办法.
程序中给出的希腊字母值可能连参考指标都算不上,顶多作为对概念理解的一个帮助吧. 慎用!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-3-10 10:06:02
由此可以看出,sympy真的只是符号方式,用于数值求解误差似乎大的难以接受
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群