FXForwardHedgingStrategy

FXForwardHedgingStrategy#

class sigtech.framework.strategies.fx_forward_hedging_strategy.FXForwardHedgingStrategy

Baseclasses: DailyStrategy

FXForwardHedgingStrategy goes long an underlying strategy and short its currency (through FX forwards), effectively delivering the performance of the strategy hedged into a given currency. Intended to be used as a wrapper around a strategy.

The strategy consists of two exposures:

  • Exposure: 100% notional exposure to the underlying strategy. This is what delivers the performance of the underlying strategy.

  • Hedge: 100% notional exposure to FX forwards. This is what hedges the performance of the underlying strategy.

Keyword arguments:

  • currency: Target currency into which the underlying strategy’s performance is hedged.

  • strategy_name: Ticker of the strategy to hedge.

  • hedging_tenor: Tenor of the FX forwards to trade to hedge the performance. Examples - ‘1M’, ‘1Y’, for all available options, refer sigtech.framework.strategies.constants.ROLL_OFFSET.

  • exposure_rebalance_threshold: Magnitude of percentage slippage allowed between this strategy and its underlying strategy before a rebalance is triggered. Expressed as a decimal (e.g., 0.01).

  • hedge_rebalance_threshold: Magnitude of percentage slippage allowed between the FX forwards held in this strategy and the total currency notional of the underlying strategy before a rebalance is triggered. Expressed as a decimal (e.g., 0.02).

  • use_strategy_dates_for_exposure: Applicable only when the underlying strategy is SignalStrategy, If True, rebalancing thresholds are checked only on days when the underlying SignalStrategy rebalances. If False (default), thresholds are checked on every scheduled trading day.

  • use_holdings_for_hedge_ccy: Extract hedging currencies and values from bottom level instruments and cash. Otherwise, if False (default), hedge the full value of the underlying strategy from its currency to the currency of this hedging strategy.

  • custom_hedge_exposure: Allow to customize the hedge exposure by affecting the exposure that we want to hedge for each currency. Optional, it is an empty dict by default. The argument must be passed as following: {‘CCY’: exposure}. For instance to hedge 50% of GBP exposure and 20% of JPY exposure you would pass: {‘GBP’:0.5, ‘JPY’:0.2}.

Example object creation:

from sigtech.framework.default_strategy_objects.rolling_futures import gx_index_front
import sigtech.framework.signal.library as signal_lib
import numpy as np
import datetime as dtm

start_date = dtm.date(2018, 1, 4)
signal_ts = np.sign(gx_index_front().history())
signal_obj = signal_lib.from_ts(signal_ts.to_frame(gx_index_front().name))

strategy = sig.SignalStrategy(
    currency='EUR',
    signal_name=signal_obj.name,
    start_date=start_date,
    rebalance_frequency='EOM'
)

fx_hedged = sig.FXForwardHedgingStrategy(
    currency='USD',
    strategy_name=strategy.name,
    hedging_tenor='1M',
    exposure_rebalance_threshold=0.02,
    hedge_rebalance_threshold=0.02
)
custom_hedge_exposure: Optional[dict]
custom_roll_offset: Optional[int]
exposure_rebalance_threshold: float
hedge_rebalance_threshold: float
hedging_tenor: str
property roll_offset

Rolling offset for the strategy.

strategy: Optional[Strategy]
strategy_name: Optional[str]
use_holdings_for_hedge_ccy: Optional[bool]
use_strategy_dates_for_exposure: Optional[bool]
ann01_series()

Return the modified duration timeseries if the object is an instance of RollingBondStrategy.

bd_schedule()

Business days schedule for the strategy.

is_signal_strategy()

Return True if the object is an instance of SignalStrategy.

schedule_information()

Schedule information for the strategy.

strategy_initialization(dt)

Initial decision run on the start date of the strategy.

Parameters:

dt – Reference datetime.

yield_series()

Return the yield timeseries if the object is an instance of RollingBondStrategy.