FXBrokerFly#
- class rateslib.instruments.FXBrokerFly(*args, strike=[NoInput.blank, NoInput.blank, NoInput.blank], premium=[NoInput.blank, NoInput.blank, NoInput.blank, NoInput.blank], notional=[NoInput.blank, NoInput.blank], metric='single_vol', **kwargs)#
Bases:
FXOptionStrat
,FXOption
Create an FX BrokerFly option strategy.
For additional arguments see
FXOption
.- Parameters:
args (tuple) – Positional arguments to
FXOption
.strike (3-element sequence) – The first element is applied to the lower strike put, the second element to the straddle strike and the third element to the higher strike call, e.g. [“-25d”, “atm_delta”, “25d”].
premium (4-element sequence, optional) – The premiums associated with each option of the strategy; lower strike put, straddle put, straddle call, higher strike call.
metric (str, optional) – The default metric to apply in the method
rate()
kwargs (tuple) – Keyword arguments to
FXOption
.
Notes
When supplying
strike
as a string delta the strike will be determined at price time from the provided volatility.Buying a BrokerFly equates to buying an
FXStrangle
and selling aFXStraddle
, where the convention is to set the notional on the Straddle such that the entire strategy is vega neutral at inception.Warning
The default
metric
for an FXBrokerFly is ‘single_vol’, which requires an iterative algorithm to solve. For defined strikes it is usually very accurate but for strikes defined by delta it will return a solution within 0.1 pips. This means it is both slower than other instruments and inexact.Attributes Summary
Methods Summary
analytic_greeks
([curves, solver, fx, base, ...])cashflows_table
([curves, solver, fx, base])delta
([curves, solver, fx, base, local])Calculate delta risk of an Instrument against the calibrating instruments in a
Solver
.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])plot_payoff
([range, curves, solver, fx, ...])rate
([curves, solver, fx, base, vol, metric])Return the mid-market rate of an option strategy.
Attributes Documentation
- rate_weight = [1.0, 1.0]#
- rate_weight_vol = [1.0, -1.0]#
- style = 'european'#
Methods Documentation
- analytic_greeks(curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank, local=False, vol=NoInput.blank)#
- cashflows_table(curves=NoInput.blank, solver=NoInput.blank, fx=NoInput.blank, base=NoInput.blank)#
- 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
Curve
or id or a list of such. A list defines the following curves in the order:solver (Solver, optional) – The
Solver
that 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
FXRates
orFXForwards
object, 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_rate
is anFXRates
orFXForwards
object.local (bool, optional) – If True will ignore
base
- this is equivalent to settingbase
to None. Included only for argument signature consistent with npv.
- 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
Curve
or id or a list of such. A list defines the following curves in the order:solver (Solver, optional) – The
Solver
that 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
FXRates
orFXForwards
object, 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_rate
is anFXRates
orFXForwards
object.local (bool, optional) – If True will ignore
base
. This is equivalent to settingbase
to 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)#
- 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 the mid-market rate of an option strategy.
Notes
The different types of
metric
return different quotation conventions.‘single_vol’: the default type for a
FXStrangle
‘vol’: sums the mid-market volatilities of each option multiplied by their respective
rate_weight_vol
parameter. For example this is the default pricing convention for aFXRiskReversal
where the price is the vol of the call minus the vol of the put and therate_weight_vol
parameters are [-1.0, 1.0].‘pips_or_%’: sums the mid-market pips or percent price of each option multiplied by their respective
rate_weight
parameter. For example for aFXStraddle
the total premium is the sum of two premiums and therate_weight
parameters are [1.0, 1.0].