使用 tkinter 滑块输入来计算 Black Scholes 期权价格,使用 lambda 不起作用

问题描述

我试图在 jupyter notebook 中使用以下代码来使用 tkslider 改变 blackscholes 价格的输入。但是,计算按钮似乎不起作用 - 我只是得到一个显示 3 张幻灯片的 GUI 窗口和一个不打印 blackscholes 价格的计算按钮。

import numpy as np
from tkinter import *


def blackscholes(F,K,T,sigma,Type="p"):
    d1 = (np.log(F/K)+((sigma**2)/2)*T)/(sigma*np.sqrt(T))
    d2 = d1-sigma*np.sqrt(T)
    try:
        if Type=="p":
            price = F*norm.cdf(d1,1)-K*norm.cdf(d2,1)
        elif Type=="r":
            price = K*norm.cdf(-d2,1)-F*norm.cdf(-d1,1)
        return price
    except:
        print("rrr")

window = Tk()

def calculate_values(Strike):
    F = Fscale.get()
    sigma=sigmascale.get()
    T = Tscale.get()
    l.configure(text=blackscholes(F,Strike,"p"))

l=Label(window,text='')
    
Fscale=Scale(window,from_=1,to=1000,orient=HORIZONTAL,label="F")
Fscale.pack()

sigmascale=Scale(window,label="sigma")
sigmascale.pack()

Tscale=Scale(window,to=100,label="T")
Tscale.pack()

blackscholes_button=Button(window,text='Calculate',command=lambda: calculate_values(Strike=10))

blackscholes_button.pack()

window.mainloop()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)