python - 在 true_divide 中遇到无效值

标签 python

我正在尝试使用 python 计算 black scholes 公式的隐含波动率。但是,我的代码有问题。我在运行代码时不断收到此错误消息:

RuntimeWarning: divide by zero encountered in true_divide
v = sigmaOld - bs_option_call(v, s, k, r, t, call_price1)/fprime(sigmaOld, s, k, r, t)e here

这是我的代码:

while True:
for (v, k, s, t, call_price1) in zip(sigma, K, S, Ta, call_price_list):
    sigmaOld = v
    v = sigmaOld - bs_option_call(v, s, k, r, t, call_price1) / fprime(sigmaOld, s, k, r, t)
    if scipy.absolute( v - sigmaOld ) < epsilon:
        break
print(sigma)

fprime 在哪里

def fprime(sigma, S, K, r, T):
    logSoverK = log(S / K)
    numerd1 = logSoverK + (r + sigma**2 / 2) * T
    d1 = numerd1 / (sigma*sqrt(T))
    return S * sqrt(T) * norm.pdf(d1) * exp(-r * T) 

K、Ta、S、sigma、call_price_list 是列表,r 只是一个数字。

我试过

import numpy as np
np.seterr(divide='ignore', invalid='ignore')

但由于某种原因它对我没有用!

任何人都可以看看我的代码并告诉我我的错误是什么! 非常感谢

最佳答案

将错误和警告打印到 stderr 是默认的 Python 功能。

您收到此警告是因为您除以零,即 fprime 返回零。


如果您想使用 warning filters 抑制警告:

np.seterr(divide='ignore')

它会告诉 Numpy 忽略被零除的警告 - seterr 的所有允许参数.

关于python - 在 true_divide 中遇到无效值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41612558/

相关文章:

python - 我如何在 python 中进行 monkeypatching?

python - 如何比较两个csv文件?

python - 使用 python 将纯 JSON 发送到 gRPC 服务器

python - 来自两个 pandas DataFrame 的不相交的记录集

javascript - DropzoneJS XHR 发送选项请求

python - 使用 IPython 显示(markdown())后不显示 Jupyter 笔记本输入()

python - 使用带有多个引用参数的子进程 Popen

python - 如何使用扩展策略和指标通过 boto 配置 Auto Scaling?

python - 当我有 key 时从字典中读取值

python - 如何在 python 中禁用 http.client.HTTPSConnection 类的 ssl 验证?