Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python jupyter笔记本中的交互功能和滑块问题_Python_Jupyter Notebook_Widget_Interactive_Figure - Fatal编程技术网

Python jupyter笔记本中的交互功能和滑块问题

Python jupyter笔记本中的交互功能和滑块问题,python,jupyter-notebook,widget,interactive,figure,Python,Jupyter Notebook,Widget,Interactive,Figure,我在使用interact函数将滑块与函数绑定时遇到了一个奇怪的错误。我知道这个函数可以正确地处理输入,但是当interact调用它时,它就会停止工作。下面是重现错误的代码: %matplotlib inline # Import libraries import matplotlib.pyplot as plt import numpy as np import scipy.stats as stats import math from ipywidgets import widgets f

我在使用interact函数将滑块与函数绑定时遇到了一个奇怪的错误。我知道这个函数可以正确地处理输入,但是当interact调用它时,它就会停止工作。下面是重现错误的代码:

%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, K, tau, r, 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,
   min=90,
   max=110,
   step=1,
   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是有效的。你可以检查我为滑块提供的网格中的任何点,我不明白为什么它不起作用。所有的输入都必须是严格正的,如果你使用它,正如名字所暗示的,这是布莱克-斯科尔斯-默顿模型中看涨期权价格的一部分。我最终想用它制作交互式图形,但我需要先完成这一步

所以,为了清楚起见,我用互动和数字来标记这一点,因为这是最终目标。我只是错过了一个包装器函数来输出一个带有BSM_call_值的正确绘图,但是当我调用这个函数时,d1f出现了一个错误,因此这篇文章