1 votos

¿En qué delta busco mi volatilidad para una opción de cambio?

Tengo una sonrisa donde necesito buscar vols basados en delta.

Pero en el espacio de opciones de FX, se habla de deltas que están ajustados por el precio de la prima o no.

Entonces, ¿qué delta debo usar para buscar en la superficie de volatilidad?

1voto

dotnetcoder Puntos 1262

Como los dos comentarios anteriores de @AKdemy y @Andrea han dejado claro, debes ser consciente de qué tipos de delta estás utilizando para que esto tenga sentido. Generalmente hay 4 tipos:

  • forward
  • spot
  • forward premium adjusted
  • spot premium adjusted

En mi biblioteca, tanto el Smile/Surface están etiquetados como construidos bajo un tipo y FXOptions pueden ser etiquetados como otro tipo de delta. La biblioteca realizará conversiones automáticas entre ambos, pero esto no es trivial y en los casos más lentos requiere solucionadores de raíces (generalmente al pasar de no ajustado por prima a ajustado por prima o viceversa). Algunos de los mecanismos de lo que está ocurriendo aquí se basa en el documento citado https://www.researchgate.net/publication/275905055_A_Guide_to_FX_Options_Quoting_Conventions

Por ejemplo, supongamos que se crea un FXDeltaVolSmile especificado con un tipo de delta forward:

from rateslib import *  # Python 3.12, rateslib 1.5.0

# Crear un mercado de Forwards de FX a partir de tasas al contado y curvas de tasas de interés
fxr = FXRates({"eurusd": 1.08}, settlement=dt(2024, 11, 26))
fxc = {
    "eureur": Curve({dt(2024, 11, 26): 1.0, dt(2025, 11, 26): 0.97}),
    "eurusd": Curve({dt(2024, 11, 26): 1.0, dt(2025, 11, 26): 0.97}),
    "usdusd": Curve({dt(2024, 11, 26): 1.0, dt(2025, 11, 26): 0.96}),
}
fxf = FXForwards(fx_rates=fxr, fx_curves=fxc)

# Crear un Vol Smile
fxs = FXDeltaVolSmile(
    eval_date=dt(2024, 11, 26),
    expiry=dt(2025, 4, 26),
    nodes={0.25: 10.4, 0.5: 8.4, 0.75: 10.1},
    delta_type="forward"
)

introducir descripción de la imagen aquí

Ahora, si construimos un Put del 25delta bajo la misma convención, esperamos que la volatilidad sea exactamente de 10.4 (porque ese es un punto indexado en el smile)

# Crear una FXOption
fxo = FXPut(
    strike="-25d", 
    delta_type="forward", 
    expiry=dt(2025, 4, 26), 
    pair="eurusd"
)
fxo.analytic_greeks(
    curves=[None, fxf.curve("eur", "usd"), None, fxf.curve("usd", "usd")], 
    fx=fxf, 
    vol=fxs
)
####
{'delta': -0.250000,
 '_delta_index': 0.250000,
 '__delta_type': 'forward',
 '__vol': 0.104000,
 '__strike': 1.0391718351025454,
}
####

Sin embargo, si se construye un Put bajo una definición de tipo de delta diferente (como spot premium adjusted) entonces los resultados serían diferentes.

fxo = FXPut(
    strike="-25d", 
    delta_type="spot_pa", 
    expiry=dt(2025, 4, 26), 
    pair="eurusd"
)
fxo.analytic_greeks(
    curves=[None, fxf.curve("eur", "usd"), None, fxf.curve("usd", "usd")], 
    fx=fxf, 
    vol=fxs
)
####
{'delta': -0.250000,
 '_delta_index': 0.243168,
 '__delta_type': 'spot_pa',
 '__vol': 0.104959,
 '__strike': 1.0372647541668385,
}
####

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