Estoy tratando de calcular griegas para una gran muestra de contratos de compensación de directores generales en R. Sin embargo, mis cálculos de vega dan como resultado un valor de cero.
Al hacerlo, sigo Core y Guay [2002] :
A continuación se muestra una instantánea de un contrato que contiene múltiples opciones:
library(tidyverse)
df <- tibble(prccf = rep(36.55, 15),
Xc = 28:42,
maturity = seq(0.5, 7.5, by = (1/2)),
rf = rnorm(15, 4.5, 0.25),
d = rep(0.025, 15),
sigma = rep(0.30, 15))
Calculo Z:
df <- df %>%
mutate(Zc = (log(prccf / Xc) + maturity * (rf - d + sigma^2 / 2)) / (sigma * sqrt(maturity)))
Luego tomo la primera derivada del valor de la opción Black-Scholes, con respecto a prccf
y sigma
:
deriv(~ ((prccf * exp(-d * maturity) * pnorm(Zc)) - (Xc * exp(-rf * maturity) * pnorm(Zc - sigma * sqrt(maturity)))), c("prccf", "sigma"))
que da:
delta = exp(-d * maturity) * pnorm(Zc)
vega = Xc * exp(-rf * maturity) * (dnorm(Zc - sigma * sqrt(maturity)) * sqrt(maturity))
Así que:
df <- df %>%
mutate(delta = exp(-d * maturity) * pnorm(Zc),
vega = Xc * exp(-rf * maturity) * (dnorm(Zc - sigma * sqrt(maturity)) * sqrt(maturity)))
Pero entonces todos los valores de vega son cero. Esto ocurre independientemente de los parámetros.
La parte vega se convierte en cero cuando se multiplica con la función de densidad normal: dnorm(Zc - sigma * sqrt(maturity))
porque Zc
contiene valores relativamente altos para la distribución normal, por lo que resulta en 0. Entonces toda la línea se multiplica por 0, resultando en 0s como valores finales también.
La verdad es que no veo cómo puedo arreglar esto, ya que Zc sí captura el valor correcto. (El "código delta" es correcto, porque puedo compararlo con otro conjunto de datos (correlación de 0,999)).
Esto también ocurre cuando confío en los paquetes en lugar de calcularlos manualmente, por ejemplo:
library(derivmkts)
bsopt(s = df$prccf,
k = df$Xc,
v = df$sigma,
r = df$rf,
tt = df$maturity,
d = df$d)[['Call']][c('Delta', 'Vega'), ]
¿Puede alguien ayudarme con este problema? Me he quedado atascado, sobre todo porque la parte delta es correcto. Gracias.