FXForward

FXForward#

class sigtech.framework.instruments.fx_otc.FXForward

Baseclasses: FXOTC

FXForward will pay 1.0 in the under currency minus strike amount in the over currency at payment_date.

Keyword arguments:

  • under: The base currency of the FX forward, e.g. GBP in GBP/USD.

  • over: The quote currency of the FX forward, e.g. USD in GBP/USD.

  • payment_date: Payment date (maturity date) of the FX forward.

  • strike: Forward strike (Optional, default is None and the fair strike will be used at valuation point).

  • start_date: Trade date of the FX forward.

  • deliverable: Boolean flag indicating deliverable/non-deliverable (optional, default is True).

  • is_hedge: Boolean flag indicating if hedge trade or outright trade (optional, default is False).

  • forbid_settlement: Boolean flag forcing strategies to get out of instrument prior to settlement (optional, default is False)

One of strike or start_date input must be supplied in the parameters.

Example object creation:

fx_forward = sig.FXForward(
    over='USD',
    under='EUR',
    start_date=dtm.date(2018, 3, 5),
    payment_date=dtm.date(2018, 4, 5)
)

The value of the instrument is

\[P(0,t) * (FX_t - K)\]

where \(K\) is the strike, and discount factor and FX forward are obtained from the FXMarket instance.

dead_instrument: Optional[str]
deliverable: Optional[bool]
execution_datetime: Optional[datetime]
forbid_settlement: Optional[bool]
is_hedge: Optional[bool]
payment_date: date
property settlement_type

Type of settlement ('Physical' or 'Cash').

start_date: date
strike: Optional[float]
static daily_fx_forward_dependencies(forward_over, forward_under, time, tzinfo, start_dt, end_dt) list[sigtech.framework.internal.infra.mu.graph.registry.factory.Dependency]

Return the dependencies required to value fx forwards at this time and timezone every day

get_strike()

Strike value.

roll_down(d: date, dates: Union[str, date, list[Union[str, datetime.date]]], data_point: DataPoint = None)

Compute roll-down of fx forward by moving the valuation date forward to the requested dates, keeping spot rate and depo curves constant, i.e. depo_rate(from_original_date, for_x_number_of_days) equals depo_rate(from_the_forward_date, for_x_number_of_days).

Parameters:
  • d – Valuation date.

  • dates – String/date or a list of strings/dates for which the carry/roll-down is needed.

  • data_point – Data point for the original curves.

Returns:

DataFrame with 1 columns roll_down - change in FXForward PV.

validate()

Make sure FXForward currency is equal to over currency.