FXRiskReversal#
- class rateslib.instruments.FXRiskReversal(*args, strike=(NoInput.blank, NoInput.blank), premium=(NoInput.blank, NoInput.blank), metric='vol', **kwargs)#
Bases:
FXOptionStrat,FXOptionCreate an FX Risk Reversal option strategy.
A RiskReversal is composed of a lower strike
FXPutand a higher strikeFXCall.For additional arguments see
FXOption.- Parameters:
args (tuple) – Positional arguments to
FXOption.strike (2-element sequence) – The first element is applied to the lower strike put and the second element applied to the higher strike call, e.g. [“-25d”, “25d”].
premium (2-element sequence, optional) – The premiums associated with each option of the risk reversal.
metric (str, optional) – The default metric to apply in the method
rate()kwargs (tuple) – Keyword arguments to
FXOption.
Notes
Buying a Risk Reversal equates to selling a lower strike
FXPutand buying a higher strikeFXCall. Thenotionalof each are the same, and should be entered as a single value. A positive notional will indicate a sale of the Put and a purchase of the Call.When supplying
strikeas a string delta the strike will be determined at price time from the provided volatility.This class is an alias constructor for an
FXOptionStratwhere the number of options and their definitions and nominals have been specifically overloaded for convenience.Attributes Summary
If set will also set the
fixed_rateof the contained leg1.If set will also set the
float_spreadof contained leg1.If set will also set the
index_baseof the contained leg1.If set will also set the
fixed_rateof the contained leg2.If set will also set the
float_spreadof contained leg2.If set will also set the
index_baseof the contained leg1.Methods Summary
analytic_delta(*args[, leg])Not implemented for Option types.
analytic_greeks([curves, solver, fx, base, vol])Return aggregated greeks of the FXOptionStrat.
cashflows([curves, solver, fx, base, vol])Return the properties of all periods used in calculating cashflows.
cashflows_table([curves, solver, fx, base])Aggregate the values derived from a
cashflows()method on an Instrument.delta([curves, solver, fx, base, local])Calculate delta risk of an Instrument against the calibrating instruments in a
Solver.exo_delta(vars[, curves, solver, fx, base, ...])Calculate delta risk of an Instrument against some exogenous user created Variables.
gamma([curves, solver, fx, base, local])Calculate cross-gamma risk of an Instrument against the calibrating instruments of a
Solver.npv([curves, solver, fx, base, local, vol])Return the NPV of the FXOptionStrat.
plot_payoff([range, curves, solver, fx, ...])rate([curves, solver, fx, base, vol, metric])Return various pricing metrics of the FXOptionStrat.
Attributes Documentation
- fixed_rate#
If set will also set the
fixed_rateof the contained leg1.Note
fixed_rate,float_spread,leg2_fixed_rateandleg2_float_spreadare attributes only applicable to certainInstruments. AttributeErrors are raised if calling or setting these is invalid.- Type:
float or None
- float_spread#
If set will also set the
float_spreadof contained leg1.- Type:
float or None
- index_base#
If set will also set the
index_baseof the contained leg1.Note
index_baseandleg2_index_baseare attributes only applicable to certainInstruments. AttributeErrors are raised if calling or setting these is invalid.- Type:
float or None
- leg2_fixed_rate#
If set will also set the
fixed_rateof the contained leg2.- Type:
float or None
- leg2_float_spread#
If set will also set the
float_spreadof contained leg2.- Type:
float or None
- leg2_index_base#
If set will also set the
index_baseof the contained leg1.Note
index_baseandleg2_index_baseare attributes only applicable to certainInstruments. AttributeErrors are raised if calling or setting these is invalid.- Type:
float or None
- periods#
- rate_weight = [-1.0, 1.0]#
- rate_weight_vol = [-1.0, 1.0]#
- style = 'european'#
Methods Documentation
- analytic_delta(*args, leg=1, **kwargs)#
Not implemented for Option types. Use
analytic_greeks.
- analytic_greeks(curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, vol=NoInput.blank)#
Return aggregated greeks of the FXOptionStrat.
- Parameters:
curves (list of Curve) – Curves for discounting cashflows. List follows the structure used by IRDs and should be given as: [None, Curve for domestic ccy, None, Curve for foreign ccy]
solver (Solver, optional) – The numerical
Solverthat constructs Curves, Smiles or Surfaces from calibrating instruments.fx (FXForwards) – The object to project the relevant forward and spot FX rates.
base (str, optional) – Not used by analytic_greeks.
vol (float, Dual, Dual2, FXDeltaVolSmile or FXDeltaVolSurface, or Sequence of such, optional) – The volatility used in calculation.
- Return type:
dict
Notes
If the
voloption is given as a Sequence of volatility values, these should be ordered according to each FXOption or FXOptionStrat contained on the Instrument. For nested FXOptionStrat use nested sequences.
- cashflows(curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, vol=NoInput.blank)#
Return the properties of all periods used in calculating cashflows.
- Parameters:
curves (list of Curve) – Curves for discounting cashflows. List follows the structure used by IRDs and should be given as: [None, Curve for domestic ccy, None, Curve for foreign ccy]
solver (Solver, optional) – The numerical
Solverthat constructsCurvesfrom calibrating instruments.fx (FXForwards) – The object to project the relevant forward and spot FX rates.
base (str, optional) – Not used by rate.
vol (float, Dual, Dual2, FXDeltaVolSmile or FXDeltaVolSurface) – The volatility used in calculation.
- Return type:
DataFrame
- cashflows_table(curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, **kwargs)#
Aggregate the values derived from a
cashflows()method on an Instrument.- Parameters:
curves (CurveType, str or list of such, optional) – Argument input to the underlying
cashflowsmethod of the Instrument.solver (Solver, optional) – Argument input to the underlying
cashflowsmethod of the Instrument.fx (float, FXRates, FXForwards, optional) – Argument input to the underlying
cashflowsmethod of the Instrument.base (str, optional) – Argument input to the underlying
cashflowsmethod of the Instrument.kwargs (dict) – Additional arguments input the underlying
cashflowsmethod of the Instrument.
- Return type:
DataFrame
- delta(curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, local=False, **kwargs)#
Calculate delta risk of an Instrument against the calibrating instruments in a
Solver.- Parameters:
curves (Curve, str or list of such, optional) –
A single
Curveor id or a list of such. A list defines the following curves in the order:solver (Solver, optional) – The
Solverthat calibrates Curves from given Instruments.fx (float, FXRates, FXForwards, optional) – The immediate settlement FX rate that will be used to convert values into another currency. A given float is used directly. If giving a
FXRatesorFXForwardsobject, converts from local currency intobase.base (str, optional) – The base currency to convert cashflows into (3-digit code), set by default. Only used if
fx_rateis anFXRatesorFXForwardsobject.local (bool, optional) – If True will ignore
base- this is equivalent to settingbaseto None. Included only for argument signature consistent with npv.
- Return type:
DataFrame
- exo_delta(vars, curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, local=False, vars_scalar=NoInput.blank, vars_labels=NoInput.blank, **kwargs)#
Calculate delta risk of an Instrument against some exogenous user created Variables.
See What are exogenous variables? in the cookbook.
- Parameters:
vars (list[str]) – The variable tags which to determine sensitivities for.
curves (Curve, str or list of such, optional) –
A single
Curveor id or a list of such. A list defines the following curves in the order:solver (Solver, optional) – The
Solverthat calibrates Curves from given Instruments.fx (float, FXRates, FXForwards, optional) – The immediate settlement FX rate that will be used to convert values into another currency. A given float is used directly. If giving a
FXRatesorFXForwardsobject, converts from local currency intobase.base (str, optional) – The base currency to convert cashflows into (3-digit code), set by default. Only used if
fx_rateis anFXRatesorFXForwardsobject.local (bool, optional) – If True will ignore
base- this is equivalent to settingbaseto None. Included only for argument signature consistent with npv.vars_scalar (list[float], optional) – Scaling factors for each variable, for example converting rates to basis point etc. Defaults to ones.
vars_labels (list[str], optional) – Alternative names to relabel variables in DataFrames.
- Return type:
DataFrame
- gamma(curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, local=False, **kwargs)#
Calculate cross-gamma risk of an Instrument against the calibrating instruments of a
Solver.- Parameters:
curves (Curve, str or list of such, optional) –
A single
Curveor id or a list of such. A list defines the following curves in the order:solver (Solver, optional) – The
Solverthat calibrates Curves from given Instruments.fx (float, FXRates, FXForwards, optional) – The immediate settlement FX rate that will be used to convert values into another currency. A given float is used directly. If giving a
FXRatesorFXForwardsobject, converts from local currency intobase.base (str, optional) – The base currency to convert cashflows into (3-digit code), set by default. Only used if
fx_rateis anFXRatesorFXForwardsobject.local (bool, optional) – If True will ignore
base. This is equivalent to settingbaseto None. Included only for argument signature consistent with npv.
- Return type:
DataFrame
- npv(curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, local=False, vol=NoInput.blank)#
Return the NPV of the FXOptionStrat.
- Parameters:
curves (list of Curve) – Curves for discounting cashflows. List follows the structure used by IRDs and should be given as: [None, Curve for ccy1, None, Curve for ccy2]
solver (Solver, optional) – The numerical
Solverthat constructs Curves, Smiles or Surfaces from calibrating instruments.fx (FXForwards) – The object to project the relevant forward and spot FX rates.
base (str, optional) – 3-digit currency in which to express values.
local (bool, optional) – If True will return a dict identifying NPV by local currencies on each period.
vol (float, Dual, Dual2, FXDeltaVolSmile or FXDeltaVolSurface, or Sequence of such, optional) – The volatility used in calculation.
- Return type:
Notes
If the
voloption is given as a Sequence of volatility values, these should be ordered according to each FXOption or FXOptionStrat contained on the Instrument. For nested FXOptionStrat use nested sequences.
- plot_payoff(range=NoInput.blank, curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, local=False, vol=NoInput.blank)#
- rate(curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, vol=NoInput.blank, metric=NoInput.blank)#
Return various pricing metrics of the FXOptionStrat.
- Parameters:
curves (list of Curve) – Curves for discounting cashflows. List follows the structure used by IRDs and should be given as: [None, Curve for ccy1, None, Curve for ccy2]
solver (Solver, optional) – The numerical
Solverthat constructs Curves, Smiles or Surfaces from calibrating instruments.fx (FXForwards) – The object to project the relevant forward and spot FX rates.
base (str, optional) – Not used by the rate method.
vol (float, Dual, Dual2, FXDeltaVolSmile or FXDeltaVolSurface, or Sequence of such, optional) – The volatility used in calculation. See notes.
metric (str in {"pips_or_%", "vol", "premium"}, optional) – The pricing metric type to return. See notes for
FXOption.rate
- Return type:
Notes
If the
voloption is given as a Sequence of volatility values, these should be ordered according to each FXOption or FXOptionStrat contained on the Instrument. For nested FXOptionStrat use nested sequences.For example, for an FXBrokerFly, which contains an FXStrangle and an FXStraddle,
volmay be entered as [[12, 11], 10] which are values of 12% and 11% on the Strangle options and 10% for the two Straddle options, or just “fx_surface1” which will determine all volatilities from an FXDeltaVolSurface associated with a Solver, with id: “fx_surface1”.