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?
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?
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:
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"
)
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 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.