计算black-scholes隐含波动率-矢量

calcbsimpvol的Python项目详细描述


Build Status

CalcbsImpVol

计算black-scholes隐含波动率-向量


  • :)本机python代码
  • :)轻量级封装
  • :)包含示例数据
  • :(不适合单个/少量选项
  • :(代码读取非pythonic
  • :(尚未彻底测试

开始

要求

  • python 3.x(当前)或pypy3
  • 努比
  • scipy
  • (matplotlib在某些示例中显示结果)

安装

当代码由单个数字函数组成时, 我建议使用pip install方法获取代码。 这样你就可以利用错误修复,更新, 以及可能的扩展。

$ pip install calcbsimpvol

示例

将捆绑在dict中的args传递给您。

fromcalcbsimpvolimportcalcbsimpvolimportnumpyasnpS=np.asarray(100)K_value=np.arange(40,160,25)K=np.ones((np.size(K_value),1))K[:,0]=K_valuetau_value=np.arange(0.25,1.01,0.25)tau=np.ones((np.size(tau_value),1))tau[:,0]=tau_valuer=np.asarray(0.01)q=np.asarray(0.03)cp=np.asarray(1)P=[[59.35,34.41,10.34,0.50,0.01],[58.71,33.85,10.99,1.36,0.14],[58.07,33.35,11.50,2.12,0.40],[57.44,32.91,11.90,2.77,0.70]]P=np.asarray(P)[K,tau]=np.meshgrid(K,tau)sigma=calcbsimpvol(dict(cp=cp,P=P,S=S,K=K,tau=tau,r=r,q=q))print(sigma)# [[      nan,       nan,  0.20709362, 0.21820954, 0.24188675],# [       nan, 0.22279836, 0.20240934, 0.21386148, 0.23738982],# [       nan, 0.22442837, 0.1987048 , 0.21063506, 0.23450013],# [       nan, 0.22188111, 0.19564657, 0.20798285, 0.23045406]]

example3.py中提供了更多使用示例 (需要其他样本数据,可在GitHub Repo

性能

Design a test. 
Get the results you want.
  • k_max = 10(默认)
  • tolerance = 10E-12(默认值)
  • 线性回归步骤被注释掉(默认值)
# assuming you did install it already
git clone https://github.com/erkandem/calcbsimpvol.git
cd calcbsimpvol
python examples/example3.py --steps 100 --mode reference
  • 每个选项15微秒
  • 每个表面41毫秒

使用3.6、3.7和PyPy3进行测试

matlab -nodisplay -nosplash -nodesktop -r "run('mlb_reference_example.m');"
  • 每个选项12微秒
  • 每个表面34 ms

显然,这些值是每个核心(i5 4210u 1.7ghz)。

注释

好的python代码读起来像一本小说。正确的?数学也是。 在这种情况下,我更喜欢像变量名这样的短数学名称。 这使得代码与其他python代码相比可读性降低 但是docstring应该可以弥补可读性的不足。

最初,我把camelcase函数名和拼写放在适当的位置,但最终还是被惹恼了。

calcbsimpvol it is

代码来源

  • 李(2006)的第一个想法(见参考文献)
  • 由mark whirdy实现并发布为matlab.m-code(参见参考资料)
  • .m.py由我命名

联系人

待办事项

  • 使代码与Python 2
  • 兼容
  • 使之成为PyPy

参考文献

  1. 李,2006,“你不必为隐含波动率而麻烦牛顿”

    http://papers.ssrn.com/sol3/papers.cfm?abstract_id=952727

  2. Matlab源代码位于:

    https://www.mathworks.com/matlabcentral/fileexchange/41473-calcbsimpvol-cp-p-s-k-t-r-q

许可证

包含的python代码在MITLicense

mark whirdy的代码是根据MITLicense

授权的。

译文与原作者无关,也没有原作者的赞同。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我能在这个程序中更好地使用内存吗?   为什么我的Java while循环迭代了一半   java IntelliJ IDEA不在构建时复制资源   socket仅在Java TCP服务器输出上检查客户端断开连接   java游戏物理摩擦   java片段onClick调用方法   symja数学分析器中无法识别java Abs[x]   java在使用泛型时创建二进制搜索树类的实例?   java在外键约束表上的添加和删除   语法java表达式的含义,如果有条件   java创建内联对象并作为参数传递   是否有相当于Redis排序集(zset)的Java数据结构   java找不到适合的方法(无参数)   音频文件操作给定字节帧的音量Java   Eclipse4不以JavaWebStart启动   java如何使用org在JSON对象中获取嵌套的键元素。json?   java与Jackson的反序列化:“org.codehaus.Jackson.map.JsonMappingException:无法反序列化[projectname]的实例。”   字符串的Java正则表达式   spring集成上的java检测缺火指令