计算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 Intellij和Eclipse无法找到库工件   java Mapbox Android Symbolayer重置筛选器   java如何在顶部显示特定的recyclerview项?   java如何在Hibernate中使用@Qualifier   我想计算特定文本webdriver java在多个页面上可用的HTML表中的数据   java捕获Spring MVC REST服务抛出的Jersey REST客户端的异常   java Hibernate flush()影响事务   密钥绑定Java密钥绑定   sonarqube java,sonar,圈复杂度   使用3DES在Java中加密,在SQL Oracle中解密   regex正则表达式在regex101上工作。com,但不是prod   JAVAsql。SQLException:ORA00600:内部错误代码,参数:[12811],[93233]   java H2数据库存储在哪里?   java如何避免在使用Jackson时从JSON字符串反序列化空JSON数组元素