如何解决jupyter笔记本中的交互功能和滑块存在问题
我使用用于将滑块绑定到函数的交互函数遇到一个奇怪的错误。我知道该函数可正确使用输入,但在被交互调用时它将停止工作。这是重现该错误的代码:
%matplotlib inline
# Import libraries
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import math
from ipywidgets import widgets
from ipywidgets import interact,interactive,fixed
from IPython.display import display
# Libraries
from scipy.stats import norm
# Other example: Black-Scholes-Merton
def d1f(St,K,tau,r,sigma):
d1 = (np.log(St/K) + (r + 0.5*sigma**2)*tau)/ \
(sigma*np.sqrt(tau))
return d1
def BSM_call_value(St=100,K=100,tau=60,r=0.05/252,sigma=0.2/np.sqrt(252)):
d1 = d1f(St,sigma)
d2 = d1 - sigma*np.sqrt(tau)
call_value = St*norm.cdf(d1) - np.exp(-r*tau)*K*norm.cdf(d2)
return call_value
# Sliders
s_slider = widgets.IntSlider(
value=100,min=90,max=110,step=1,description='Price'
)
k_slider = widgets.IntSlider(
value=100,description='Strike'
)
tau_slider = widgets.IntSlider(
value=60,min=30,max=180,step=15,description='Maturity'
)
r_slider = widgets.IntSlider(
value=0.05/252,min=0.01/252,max=0.20/252,step=0.005,description='Maturity'
)
sigma_slider = widgets.IntSlider(
value=0.2/np.sqrt(252),min=0.05/np.sqrt(252),max=0.5/np.sqrt(252),step=0.01/np.sqrt(252),description='Volatility'
)
interact(d1f,St=s_slider,K=k_slider,tau=tau_slider,r=r_slider,sigma=sigma_slider)
我知道上面的d1f有效。您可以检查我为滑块提供的网格中的任何点,但看不到为什么它不起作用。如您所想,所有输入都必须严格为正,并且顾名思义,这是Black-Scholes-Merton模型中看涨期权价格的一部分。我最终想用它来制作交互式人物,但是我需要首先进行这一步骤!
因此,为了清楚起见,我将其标记为交互式和数字,因为这是最终目标。我只是想念一个包装函数,用BSM_call_value输出一个正确的图,但是当我调用这个函数时,d1f出现了错误,因此这篇文章。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。