fxForwardPricer
Syntax
fxForwardPricer(instrument, pricingDate, spot, domesticCurve,
foreignCurve)
Details
Computes the Net Present Value (NPV) of the FX forward contract based on the given spot rate, domestic and foreign discount curves, and the pricing date.
Parameters
instrument An INSTRUMENT scalar/vector of type FxForward, representing the FX forward to be priced. See Product Field Specifications for details.
pricingDate A DATE scalar/vector specifying the pricing date(s).
spot A DOUBLE scalar/vector representing the spot exchange rate(s).
domesticCurve A MKTDATA scalar/vector of type IrYieldCurve representing the domestic discount curve(s). See Curve Field Specifications for details.
foreignCurve A MKTDATA scalar/vector of type IrYieldCurve representing the foreign discount curve(s). See Curve Field Specifications for details.
Returns
A DOUBLE scalar/vector.
Examples
pricingDate = 2025.08.18
fxForward = {
"productType": "Forward",
"forwardType": "FxForward",
"expiry": 2025.12.16,
"delivery": 2025.12.18,
"currencyPair": "USDCNY",
"direction": "Buy",
"notionalCurrency": "USD",
"notionalAmount": 1E6,
"strike": 7.1
}
curveDates = [2025.08.21,
2025.08.27,
2025.09.03,
2025.09.10,
2025.09.22,
2025.10.20,
2025.11.20,
2026.02.24,
2026.05.20,
2026.08.20,
2027.02.22,
2027.08.20,
2028.08.21]
domesticCurveInfo = {
"mktDataType": "Curve",
"curveType": "IrYieldCurve",
"referenceDate": pricingDate,
"currency": "CNY",
"dayCountConvention": "Actual365",
"compounding": "Continuous",
"interpMethod": "Linear",
"extrapMethod": "Flat",
"frequency": "Annual",
"dates": curveDates,
"values":[1.5113,
1.5402,
1.5660,
1.5574,
1.5556,
1.5655,
1.5703,
1.5934,
1.6040,
1.6020,
1.5928,
1.5842,
1.6068]/100
}
foreignCurveInfo = {
"mktDataType": "Curve",
"curveType": "IrYieldCurve",
"referenceDate": pricingDate,
"currency": "USD",
"dayCountConvention": "Actual365",
"compounding": "Continuous",
"interpMethod": "Linear",
"extrapMethod": "Flat",
"frequency": "Annual",
"dates": curveDates,
"values":[4.3345,
4.3801,
4.3119,
4.3065,
4.2922,
4.2196,
4.1599,
4.0443,
4.0244,
3.9698,
3.7740,
3.6289,
3.5003]/100
}
instrument = parseInstrument(fxForward)
domesticCurve = parseMktData(domesticCurveInfo)
foreignCurve = parseMktData(foreignCurveInfo)
spot = 7.1627
fxForwardPricer(instrument, pricingDate, spot, domesticCurve, foreignCurve) // output: 1919.8118
fxForwardPricer([instrument, instrument], pricingDate, spot, domesticCurve, foreignCurve)
fxForwardPricer(instrument, [pricingDate, pricingDate], spot, domesticCurve, foreignCurve)
fxForwardPricer(instrument, pricingDate, [spot, spot], domesticCurve, foreignCurve)
fxForwardPricer(instrument, pricingDate, spot, [domesticCurve, domesticCurve], foreignCurve)
fxForwardPricer(instrument, pricingDate, spot, domesticCurve, [foreignCurve, foreignCurve])
Related functions: parseInstrument, parseMktData
Product Field Specifications
| Field Name | Data Type | Description | Required |
|---|---|---|---|
| productType | STRING | Product name. It must be "Forward". | √ |
| forwardType | STRING | Foreign exchange forward type. It must be "FxForward". | √ |
| notionalAmount | DOUBLE | Notional principal amount | √ |
| notionalCurrency | STRING | Notional principal | √ |
| instrumentId | STRING | InstrumentId ID | × |
| expiry | DATE | Value date | √ |
| delivery | DATE | Settlement date | √ |
| currencyPair | STRING |
The currency pair, in the format "EURUSD", "EUR.USD", or "EUR/USD". Supported currency pairs include:
|
√ |
| direction | STRING | Trading direction, can be "Buy" or "Sell" | √ |
| strike | DOUBLE | Strike price | √ |
| domesticCurve | STRING | The domestic discount curve name | × |
| foreignCurve | STRING | The foreign discount curve name | × |
Curve Field Specifications
| Field Name | Data Type | Description | Required |
|---|---|---|---|
| mktDataType | STRING | Must be "Curve" | √ |
| referenceDate | DATE | Reference Date | √ |
| curveType | STRING | Must be "IrYieldCurve" | √ |
| dayCountConvention | STRING |
The day count convention to use. It can be:
|
√ |
| interpMethod | STRING |
Interpolation method. It can be:
|
√ |
| extrapMethod | STRING |
Extrapolation method. It can be
|
√ |
| dates | DATE vector | Date of each data point | √ |
| values | DOUBLE vector | Value of each data point, corresponding to the elements in dates. | √ |
| curveName | STRING | Curve name | × |
| currency | STRING | Currency. It can be CNY", "USD", "EUR", "GBP", "JPY", "HKD" | √ |
| compounding | STRING |
The compounding interest. It can be:
|
√ |
| settlement | DATE | Settlement date. If specified, all subsequent tenor intervals are computed starting from "settlement" rather than from "referenceDate". | × |
| frequency | INTEGRAL/STRING |
The interest payment frequency. Supported values:
|
× |
| curveModel | STRING |
Curve construction model; Currently, only "Bootstrap" is supported. |
× |
| curveParams | DICT | Model parameters. | × |
