RollingButterflyOptionsStrategy

RollingButterflyOptionsStrategy#

class sigtech.framework.strategies.rolling_options_baskets.RollingButterflyOptionsStrategy

Baseclasses: RollingOptionsStrategyBase

Is a three-part strategy that takes long and short positions in call or put options with the same expiration but different strike price.

A long butterfly spread with calls is created by buying one call option at a lower strike price, selling two call options with a higher strike price and buying one call option with even higher strike price.

A long butterfly spread with puts is created by buying one put option at a higher strike price, selling two put options with a lower strike price and buying one put option with even lower strike price.

A short butterfly spread with calls is created by selling one call option at a lower strike price, buying two call options with a higher strike price and selling one call option with even higher strike price.

A short butterfly spread with puts is created by selling one put option at a higher strike price, buying two put options with a lower strike price and selling one put option with even lower strike price.

Parameters are the same as in the base RollingOptionsStrategyBase strategy.

Additional attributes:

  • strike_1: The price at which the first options leg contract can be exercised. For FX can be also 'ATM+/-XX%' if strike_type is set to ATM type ('SPOT', 'FWD', or 'DN') (both call and put).

  • strike_2: The price at which the second options leg contract can be exercised. For FX can be also 'ATM+/-XX%' if strike_type is set to ATM type ('SPOT', 'FWD', or 'DN') (both call and put).

  • strike_3: The price at which the third options leg contract can be exercised. For FX can be also 'ATM+/-XX%' if strike_type is set to ATM type ('SPOT', 'FWD', or 'DN') (both call and put).

  • group_name: Name of the option group to trade options for.

  • exercise_type: 'European' or 'American'. Optional, if omitted, group default is used.

  • option_type: 'Call' or 'Put'. Optional, if omitted, 'Call' is used by default.

  • butterfly_direction: 'long' or 'short' butterfly. Optional, 'long' is used by default.

Example usage:

import datetime as dtm
import sigtech.framework as sig

group = sig.obj.get('USDJPY OTC OPTION GROUP')

butterfly = sig.RollingButterflyOptionsStrategy(
    start_date=dtm.date(2021, 1, 4),
    end_date=dtm.date(2023, 1, 4),
    currency=group.underlying_obj.currency,
    group_name=group.name,
    rolling_frequencies=['3M'],
    maturity='12M',
    option_type='Call',
    butterfly_direction='long',
    strike_type='SPOT',
    strike_1='ATM',
    strike_2='ATM+3%',
    strike_3='ATM+5%',
    target_type='Vega',
    target_quantity=10.0,
)
butterfly_direction: Optional[Literal['long', 'short']]
currency: Optional[str]
exercise_type: Optional[Literal['European', 'American']]
group_name: str
option_type: Optional[Literal['Call', 'Put']]
strike_1: Union[float, int, str]
strike_2: Union[float, int, str]
strike_3: Union[float, int, str]
roll_options(dt)

Set option positions.

Parameters:

dt – Decision datetime.

validate()

Validate strikes for calls and puts.