python计算隐含波动率_用Python快速计算隐含波动率

你必须意识到隐含波动率计算的计算成本很高,如果你想要实时数据,也许python不是最好的解决方案。这里是一个你需要的函数的例子。import numpy as npfrom scipy.stats import normN = norm.cdfdef bs_call(S, K, T, r, vol):d1 = (np.log(S/K) + (r + 0.5*vol**2)*T) / (vol*np...
摘要由CSDN通过智能技术生成

你必须意识到隐含波动率计算的计算成本很高,如果你想要实时数据,也许python不是最好的解决方案。

这里是一个你需要的函数的例子。

import numpy as np

from scipy.stats import norm

N = norm.cdf

def bs_call(S, K, T, r, vol):

d1 = (np.log(S/K) + (r + 0.5*vol**2)*T) / (vol*np.sqrt(T))

d2 = d1 - vol * np.sqrt(T)

return S * norm.cdf(d1) - np.exp(-r * T) * K * norm.cdf(d2)

def bs_vega(S, K, T, r, sigma):

d1 = (np.log(S / K) + (r + 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T))

return S * norm.pdf(d1) * np.sqrt(T)

def find_vol(target_value, S, K, T, r, *args):

MAX_ITERATIONS = 200

PRECISION = 1.0e-5

sigma = 0.5

for i in range(0, MAX_ITERATIONS):

price = bs_call(S, K, T, r, sigma)

vega = bs_vega(S, K, T, r, sigma)

diff = target_value - price # our root

if (abs(diff) < PRECISION

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值