Opção Europeia Call (usando tkinter)

from tkinter import *
import math
import numpy as np

root= Tk()
root.title("Calcular o valor de uma Opção Europeia Call")
root.geometry("450x500")
root.resizable(False,False)
root.configure(bg="#dcdcdc")
text= Label(text="Valor de uma Opção Europeia Call",font=("arial","15","bold"),
fg="#e49b0f",bg="#dcdcdc")
text.place(relx=0.15,rely=0.05)

def calcular():
S0=ninicial.get()
K=pstrike.get()
T=m.get()
sigma1 =sigma.get()
r1= r.get()
r1p = r1/100

I=i.get()
z = np.random.standard_normal(I)
# index values at maturity
ST = S0 * np.exp((r1p - 0.5 * sigma1 ** 2) * T + sigma1 * math.sqrt(T) * z)
hT = np.maximum(ST - K, 0)
C0 = math.exp(-r1p * T) * np.mean(hT)
C0araund = round(C0,3)
mensagem = f'Value of the European call option {C0araund}.'
preco.set(mensagem)

def limpar():
v1_entrada.delete(0, END)
v2_entrada.delete(0, END)
v3_entrada.delete(0, END)
v4_entrada.delete(0, END)
v5_entrada.delete(0, END)
v6_entrada.delete(0, END)
ninicial = DoubleVar()
pstrike = DoubleVar()
m = DoubleVar()
sigma = DoubleVar()
r = DoubleVar()
i = IntVar()

v1 = Label(text="Nível Inicial: ",font=("arial","12","bold"), fg="#5d554c",bg="#dcdcdc")
v1.place(relx=0.2,rely=0.15)
v1_entrada = Entry(textvariable=ninicial,bg="green",justify='center')
v1_entrada.place(relx=0.5,rely=0.15)

v2 = Label(text="Preço strike: ",font=("arial","12","bold"), fg="#5d554c",bg="#dcdcdc")
v2.place(relx=0.2,rely=0.23)
v2_entrada = Entry(textvariable=pstrike,bg="green",justify='center')
v2_entrada.place(relx=0.5,rely=0.23)


v3 = Label(text="Maturidade: ",font=("arial","12","bold"), fg="#5d554c",bg="#dcdcdc")
v3.place(relx=0.2,rely=0.31)
v3_entrada = Entry(textvariable=m,bg="green",justify='center')
v3_entrada.place(relx=0.5,rely=0.31)

v4 = Label(text="Taxa de Juro sem risco(%): ",font=("arial","12","bold"),
fg="#5d554c",bg="#dcdcdc")
v4.place(relx=0.02,rely=0.39)
v4_entrada = Entry(textvariable=r,bg="green",justify='center')
v4_entrada.place(relx=0.5,rely=0.39)

v5 = Label(text="Volatilidade: ",font=("arial","12","bold"), fg="#5d554c",bg="#dcdcdc")
v5.place(relx=0.2,rely=0.45)
v5_entrada = Entry(textvariable=sigma,bg="green",justify='center')
v5_entrada.place(relx=0.5,rely=0.45)
v6 = Label(text="Número de Simulações: ",font=("arial","12","bold"), fg="#5d554c",bg="#dcdcdc")
v6.place(relx=0.05,rely=0.51)
v6_entrada = Entry(textvariable=i,bg="green",justify='center')
v6_entrada.place(relx=0.5,rely=0.51)
#, command=calcular
but1 =Button(text="Calcular",font=("arial","12",'bold'),
bg="blue", command=calcular)
but1.place(relx=0.2,rely=0.65,relwidth=0.3,relheight=0.15)
but2 =Button(text="Limpar",font=("arial","12",'bold'),
bg="blue", command=limpar)
but2.place(relx=0.55,rely=0.65,relwidth=0.3,relheight=0.15)
preco = StringVar()
resultado = Label(textvariable=preco,font=("arial","13"),
bg="Orange",justify='center',fg="white")
resultado.place(relx=0.15,rely=0.85,relwidth=0.7)
root.mainloop()

Comentários

Mensagens populares deste blogue

Criar Cartões de Visita

12 signos egípcios

Calcular a percentagem de ocupação