<jupyter_start><jupyter_text>Modelo Black-Scholes Objetivo General - Utilizar el modelo matemático de Black - Scholes para la toma de decisiones financieras. Objetivos Específico - Determinar el costo de una acción usando el modelo Black - Scholes  Modelo que representa el problema  $ C = S.N(d1) - X.e ^-r.t . N(d2)$  Supuestos>- No hay costes de transacción o impuestos.>- La tasa de interés libre de riesgo es constante para todos los vencimientos.>- La acción no paga dividendos.>- La volatilidad se mantiene constante.>- Se permite la venta en corto.>- No hay oportunidades de arbitraje sin riesgo.>- Asume que la distribución de probabilidad de los retornos es una distribución normal.  Simulaciones<jupyter_code>import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt
%matplotlib inline
import time 
def d1(S0, K, r, sigma, T):
    return (np.log(S0/K) + (r + sigma**2 / 2) * T)/(sigma * np.sqrt(T))
def d2(S0, K, r, sigma, T):
    return (np.log(S0 / K) + (r - sigma**2 / 2) * T) / (sigma * np.sqrt(T))
S0 = 50
K = 40
r=0.1
sigma = 0.30
T = 0.25
Otype='C'
print ("S0 = Precio de la accion en el tiempo 0:", S0)
print ("K = Precio fijo:", K)
print ("r = Tasa libre de riesgo:", r)
print ("sigma = Volatilidad del precio:", sigma)
print ("T = Periodo de vencimiento:", T)

d1(S0 , K , r , sigma , T)
d2(S0 , K , r , sigma , T)
def BlackScholes(type,S0, K, r, sigma, T):
    if type=="C":
        # Opcion C es una opcion de compra Europea
        return S0 * ss.norm.cdf(d1(S0, K, r, sigma, T)) - K * np.exp(-r * T) * ss.norm.cdf(d2(S0, K, r, sigma, T))
    else:
        return K * np.exp(-r * T) * ss.norm.cdf(-d2(S0, K, r, sigma, T)) - S0 * ss.norm.cdf(-d1(S0, K, r, sigma, T))
S0 = 50
K = 40
r=0.1
sigma = 0.30
T = 0.25
Otype='C'
print ("S0 = Precio de la accion en el tiempo 0:", S0)
print ("K = Precio fijo:", K)
print ("r = Tasa libre de riesgo:", r)
print ("sigma = Volatilidad del precio:", sigma)
print ("T = Periodo de vencimiento:", T)
t=time.time()
BS = BlackScholes(Otype,S0, K, r, sigma, T)
elasticidad=time.time()-t
print ("Black-Scholes price:",BS)
print("Elasticidad" , elasticidad)
plt.scatter(BS,elasticidad, c = "m")
plt.scatter(S0,T, c = "g")<jupyter_output><empty_output>
StarcoderdataJupyterStructuredCleanDedup