fxForwardPricer
Syntax
fxForwardPricer(instrument, pricingDate, spot, domesticCurve,
foreignCurve)
Details
Computes the Net Present Value (NPV) of an FX forward contract based on the given spot rate, domestic and foreign discount curves, and the pricing date.
Return value: A DOUBLE scalar.
Arguments
instrument An INSTRUMENT object of type FxForward, representing the FX forward to be priced. See Product Field Specifications for details.
pricingDate A DATE scalar specifying the pricing date.
spot A DOUBLE scalar representing the spot exchange rate.
domesticCurve A MKTDATA object of type IrYieldCurve representing the domestic discount curve. See Curve Field Specifications for details.
foreignCurve A MKTDATA object of type IrYieldCurve representing the foreign discount curve. See Curve Field Specifications for details.
Examples
pricingDate = 2025.08.18
fxForward = {
"productType": "Forward",
"forwardType": "FxForward",
"version": 0,
"expiry": 2025.12.16,
"delivery": 2025.12.18,
"currencyPair": "USDCNY",
"direction": "Buy",
"notional": ["USD", 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
npv = fxForwardPricer(instrument, pricingDate, spot, domesticCurve, foreignCurve)
print(npv)
// output: 1919.8118
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". | √ |
version | INT | Version, default 0 | × |
notional | ANY vector | Notional principal amount, e.g., ["USD", 1.0] | √ |
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 | √ |
version | INT | Version, default 0 | × |
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. | × |