1 votos

Valoración de opciones y cálculo de volatilidades implícitas mediante redes neuronales, forma extraña de un gráfico

A veces me confunde la expresión moneyness. ¿Alguien puede decirme qué es lo que se trama aquí? Es del documento llamado: Pricing Options and Computing Implied Volatilities using Neural Networks.

Normalmente, veo la volatilidad como una función de la forma como el negativo de una sigmoide (S invertida). Aquí la forma es diferente. Es la curva del precio contra $\frac {X_0} {K} $ ?

¿Es común que se trace así? ¿Qué hay de un complot contra $\frac {K} {X_0} $ enter image description here

1voto

nailitdown Puntos 3927

Como se ha mencionado, el moneyness se refiere a la relación entre el precio de la acción y el precio de ejercicio, es decir, $\frac{S}{K}.$ .

Reproduzco los siguientes gráficos utilizando Python 3.

enter image description here

Comparando el gráfico de arriba con el del artículo, muestran comportamientos bastante similares, excepto en la volatilidad cero (obtengo un error de división por cero).

Los códigos fuente son los siguientes y pueden encontrarse en mi github :

from Option import *
import numpy as np
import matplotlib.pyplot as plt

sigma_upper = 10
x = np.linspace(1, sigma_upper, sigma_upper)

d = 0
r = 0
T = 1
sigma = 0.1
K = 1

moneyness = np.arange(0.7, 1.4, 0.1)

for i in moneyness[::-1]:
  S = i * K
  y = [Option(S, K, r, d, sigma, T).european_call() for sigma in range(1, sigma_upper+1)]
  plt.plot(x,y, label = 'moneyness = ' + str(round(i,2)))
  plt.xlabel('Volatility')
  plt.ylabel('Option Price')
  plt.legend();

El Option El código fuente de script es el siguiente y puede encontrarse en mi github (He extraído sólo las partes necesarias):

from scipy.stats import norm

class Option:
    def __init__(self, S, K, r, d, sigma, T):
        '''
        Parameters:
        ===========
        S: stock price 
        K: strike price
        r: risk-free interest rate
        d: dividend 
        sigma: volatility (implied)
        T: time to maturity

        Returns: 
        ===========
        Forward price, vanilla European call and put option' prices, cash-or-nothing call and put options' prices,
        zero coupon bond and forward contract.
        '''

        self.S = S
        self.K = K
        self.r = r
        self.d = d
        self.sigma = sigma
        self.T = T

        self.d1 = (np.log(self.S/self.K) + (self.r - self.d + self.sigma**2 / 2) * self.T) / (self.sigma * np.sqrt(self.T))
        self.d2 = self.d1 - self.sigma * np.sqrt(self.T)

    def european_call(self):
        '''
        output vanilla European call option's price using Black-Scholes formula 
        '''        
        return self.S * np.exp(-self.d * self.T) * norm.cdf(self.d1) - self.K * np.exp(-self.r * self.T)*norm.cdf(self.d2)

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X