3 votos

Black-Scholes - Fórmula Theta Futuroopción Divisaopción

No consigo averiguar cómo sería la fórmula theta para una opción futura y una opción sobre divisas.

Conozco la fórmula y la entiendo para una stockoption ordinaria - pero no para future-option y currency option.

En cuanto a la opción de futuro, creo que habría una ligera modificación, probablemente sustituir la S (stock) por el precio futuro. Pero no sé si el factor de interés en el lado derecho debe ser eliminado o no?

Con respecto a currencyoption - Sé cómo calcular el precio, pero no la theta aquí tampoco. He buscado mucho en Google y no encuentro ninguna fórmula en el libro de John C. Hulls (Option Futures and other derivatives).

Pero aquí está la fórmula para calcular theta para un stockoption. X = precio de ejercicio, S = precio de la acción, q = dividendo, r = interés, T-t = tiempo hasta el vencimiento, y sigma es la volatilidad.

enter image description here

1voto

Khb Puntos 1002

Wikipedia muestra todas las fórmulas: Griegos (finanzas) .

  • FX y Equity es idéntico (los dividendos son el segundo tipo de interés)
  • Los futuros utilizan el modelo Black (también en el enlace de Wikipedia)

Las configuraciones reales utilizan con frecuencia un cálculo de la theta de la diferencia finita (FD theta) como se muestra en esta respuesta que reproduce la theta de la herramienta de valoración de opciones FX OVML de Bloomberg, así como la theta analítica de Garman Kohlhagen (Black Scholes para FX). Utilizar FD theta tiene al menos dos ventajas:

  • BS theta puede superar el valor real de mercado de una opción si el tiempo hasta el vencimiento es corto (véase ici para ver un ejemplo)
  • Los días festivos y los fines de semana pueden incluirse fácilmente en el cómputo (el viernes será un theta de 3 días, siempre que el lunes sea laborable)

Pueden verse algunos detalles interesantes sobre theta para Black Scholes ici .

TL;DR

Por último, si interesan las opciones sobre futuros, con frecuencia también se consideran las opciones a plazo. Dado que los futuros se valoran a precios de mercado, no es necesario tener en cuenta la fecha de entrega del futuro. Sin embargo, en el caso de los contratos a plazo, sí es importante.

Puede verlo muy bien en Sitio web de Matlab (donde incluso se puede ejecutar el código sin tener licencia). Encontrará una explicación intuitiva en Wikipedia . Puede reproducirse rápidamente en cualquier lenguaje de programación. A continuación, utilizaré Julia .

Primero necesitamos importar los paquetes relevantes, definir el CDF y el Black pricer. Tenga en cuenta que T y T son necesarios para la fijación de precios con Black a plazo donde T > T.

using Distributions, DataFrames, Dates
N(x) = cdf(Normal(0,1),x)
# generic Black-76 allowing for futures and forwards
function Black(F,K,T,T,rd,)
    d1 = ( log(F/K) +  0.5*^2*T ) / (*sqrt(T))
    d2 = d1 - *sqrt(T)
    c  = exp(-rd*T)*(F*N(d1) - K*N(d2))
    p  = exp(-rd*T)*(K*N(-d2)-F*N(-d1))

  return c, p
end

Para las tasas, tenemos que ser coherentes con la implementación de Matlab, que utiliza 30/360 (SIA) en los ejemplos de la página web. Detalles para los Basis en el intenvset estructura de los tipos de interés ici . EndTimes es la fracción de año.

# rates
ValuationDate = Date(2014,1,1);
EndDates = Date(2015,1,1);
Rates = 0.03
# Matlab Basis set to 1 is 30/360 (SIA) https://uk.mathworks.com/help/fininst/intenvset.html#namevaluepairarguments
months = Dates.month(EndDates) - Dates.month(ValuationDate) # compute month difference
years = Dates.year(EndDates) - Dates.year(ValuationDate)
days = (years*12+months)*30
T = days/360
println("Days = $days")
println("Disc $(exp(-Rates*T))" )
println("EndTimes = $(T)")

$Matlab \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; Julia$ enter image description here

Ahora sólo queda definir los parámetros de las opciones para que coincidan exactamente con Matlab.

# option 
Strike = (200,90) # call / put
AssetPrice = 107
Sigma = 0.28
Settle = Date(2014,1,1)
Maturity = Date(2014,10,1)
months = Dates.month(Maturity) - Dates.month(Settle) # compute month difference
years = Dates.year(Maturity) - Dates.year(Settle)
days = (years*12+months)*30
T = days/360

DataFrame(Call = Black.(AssetPrice,Strike,T,T,Rates,Sigma)[1][1], 
          Put = Black.(AssetPrice,Strike,T,T,Rates,Sigma)[2][2])

$Matlab \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; Julia$ enter image description here

Un poco más interesante es comprobar qué ocurre cuando el vencimiento del plazo se fija en una fecha lejana. En Matlab, si ForwardMaturity la función calcula los precios de las opciones futuras. Si se pasa ForwardMaturity, la función calcula los precios de las opciones a plazo. Para la misma opción, estableciendo ForwardMaturity a 'Jan-1-2032' (puede probarlo usted mismo en la página web de Matlab) dará los siguientes resultados (tenga en cuenta, que el segundo resultado es una opción sobre un futuro (o donde el forward vence al vencimiento de la opción).

$Matlab \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\; Julia$ enter image description here

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