fxDigitalOptionPricer
首发版本:3.00.6
语法
fxDigitalOptionPricer(instrument, pricingDate, spot, domesticCurve,
foreignCurve, volSurf, [setting])
详情
对外汇数字期权进行定价,返回期权现值;也可以通过 setting 指定是否同时计算希腊字母(Greeks)。
参数
instrument INSTRUMENT 类型标量或向量,表示需要定价的外汇数字期权。外汇数字期权所需的关键字段,详见产品字段说明。
pricingDate DATE 类型标量或向量,表示定价日期。
spot 数值类型标量或向量,表示外汇即期价格。
domesticCurve MKTDATA 类型(IrYieldCurve)的标量或向量,表示本币贴现曲线。
foreignCurve MKTDATA 类型(IrYieldCurve)的标量或向量,表示外币贴现曲线。
volSurf 外汇波动率曲面,表示定价使用的波动率数据。
setting 可选参数,字典(Dictionary<STRING, ANY>),用于指定是否计算希腊字母(Greeks)所代表的期权价格敏感性指标。支持的键包括:
- "calcDelta":是否计算 Delta,即期权价格相对于标的资产价格的一阶敏感度,默认为 false。
- "calcGamma":是否计算 Gamma,即期权 Delta 相对于标的资产价格的二阶敏感度,默认为 false。
- "calcVega":是否计算 Vega,即期权价格相对于标的资产波动率的一阶敏感度,默认为 false。
- "calcTheta":是否计算 Theta,即期权价格相对于时间变化的敏感性,默认为 false。
- "calcRhoDomestic":是否计算本币利率 Rho,即期权价格对本币无风险利率的一阶敏感度,默认为 false。
- "calcRhoForeign":是否计算外币 Rho,即期权价格对外币无风险利率的一阶敏感度,默认为 false。
- "calcVolga":是否计算 Vega 对波动率的二阶敏感度,默认为 false。
- "calcVanna":是否计算 Delta 对波动率的交叉敏感度,默认为 false。
返回值
- 未指定 setting 时,返回 DOUBLE 类型标量或向量,表示外汇数字期权的定价结果。
- 指定 setting 时,返回一个字典(Dictionary<STRING, DOUBLE>),包含定价结果以及通过 setting 指定计算的 Greeks。
例子
例1. 给一笔货币对为 EURUSD 的数字期权定价。
// 定价基准日
pricingDate = 2025.12.16
// 交易货币对:EUR 为外币,USD 为本币
ccyPair = "EURUSD"
// 标的资产的即期汇率,即 1 EUR 可兑换 1.1748 USD
spot = 1.1748
// 定义外汇数字期权的合约结构
option = {
"productType": "Option",
"optionType": "DigitalOption",
"assetType": "FxDigitalOption",
"notionalCurrency": "EUR",
"notionalAmount": 1E6,
"strike": 1.1799999114260407,
"direction": "Sell",
"maturity": 2026.03.16,
"payoffType": "Call",
"reportCurrency": "USD",
"dayCountConvention": "Actual365",
"underlying": ccyPair
}
instrument = parseInstrument(option)
// 构建本币与外币的利率收益率曲线
curveDates = [2026.02.24, 2026.05.20]
domesticCurveInfo = {
"mktDataType": "Curve",
"curveType": "IrYieldCurve",
"referenceDate": pricingDate,
"currency": "USD",
"dayCountConvention": "Actual360",
"compounding": "Simple",
"interpMethod": "Linear",
"extrapMethod": "Flat",
"frequency": "Annual",
"dates": curveDates,
"values": [0.03703, 0.03703]
}
foreignCurveInfo = {
"mktDataType": "Curve",
"curveType": "IrYieldCurve",
"referenceDate": pricingDate,
"currency": "EUR",
"dayCountConvention": "Actual360",
"compounding": "Simple",
"interpMethod": "Linear",
"extrapMethod": "Flat",
"frequency": "Annual",
"dates": curveDates,
"values": [0.01924, 0.01924]
}
domesticCurve = parseMktData(domesticCurveInfo)
foreignCurve = parseMktData(foreignCurveInfo)
// 构建外汇波动率曲面
surfInfo = {
"surfaceName": "EURUSD",
"mktDataType": "Surface",
"surfaceType": "FxVolatilitySurface",
"referenceDate": pricingDate,
"smileMethod": "Linear",
"termDates": curveDates,
"volSmiles": [
{"strikes": [1.1, 1.2, 1.3], "vols": [0.05736, 0.05736, 0.05736]},
{"strikes": [1.1, 1.2, 1.3], "vols": [0.05736, 0.05736, 0.05736]}
],
"currencyPair": "EURUSD"
}
surf = parseMktData(surfInfo)
// 配置 Greeks 计算设置
setting = dict(STRING, ANY)
setting["calcDelta"] = true
setting["calcGamma"] = true
setting["calcVega"] = true
setting["calcTheta"] = true
setting["calcRhoDomestic"] = true
setting["calcRhoForeign"] = true
setting["calcVolga"] = true
setting["calcVanna"] = true
// 调用定价函数并输出结果
res = fxDigitalOptionPricer(instrument, pricingDate, spot, domesticCurve, foreignCurve, surf, setting)
res
/* 返回结果:
npv: 591230.5971531753 期权现值。由于是 Sell(空头),正值代表卖出该期权已收取的账面价值(或权利金)。
delta: -14441185.231181722 EURUSD 汇率每变动 1.0,期权价值的变化量。
gamma: -399739.6773414655 Delta 的敏感度。
vega: -1157.952755196379 隐含波动率每上升 1%,该空头期权价值的变化量。
theta: 96.88165340417233 每日时间流逝对期权价值的影响。
rhoDomestic: -40374.9217293 本币 Rho(USD)。
rhoForeign: 41832.750598994 外币 Rho(EUR)。
volga: 0.16377576173769282 衡量 Vega 随波动率变化的速度。
vanna: 2429410.3420697395 衡量 Delta 随波动率变化的速度。
*/
例2. 仅返回期权定价结果。
price = fxDigitalOptionPricer(
instrument=instrument,
pricingDate=pricingDate,
spot=spot,
domesticCurve=domesticCurve,
foreignCurve=foreignCurve,
volSurf=surf)
price
// output: 591230.5971531753
例3. 只计算 Delta 和 Vega。
setting = dict(STRING, ANY)
setting["calcDelta"] = true
setting["calcVega"] = true
result = fxDigitalOptionPricer(
instrument=instrument,
pricingDate=pricingDate,
spot=spot,
domesticCurve=domesticCurve,
foreignCurve=foreignCurve,
volSurf=surf,
setting=setting)
result
/* output:
npv: 591230.5971531753
delta: -14441185.231181722
vega: -1157.952755196379
*/
相关函数:parseInstrument, parseMktData
产品字段说明
| 字段名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| productType | STRING | 是 | 固定填 "Option"。 |
| optionType | STRING | 是 | 固定填 "DigitalOption"。 |
| assetType | STRING | 是 | 固定填 "FxDigitalOption"。 |
| notionalAmount | DOUBLE | 是 | 名义本金金额。 |
| notionalCurrency | STRING | 否 | 名义本金货币,如 "USD"。必须与货币对中的 base currency(ccy1)一致,即只能填写货币对的第一个币种。 |
| instrumentId | STRING | 否 | 金融工具 ID。 |
| maturity | DATE | 是 | 到期日。 |
| underlying | STRING | 是 |
货币对,格式如:"EURUSD","EUR.USD" 或 "EUR/USD"。支持以下货币对:
|
| direction | STRING | 是 | 交易方向,可选值为 "Buy" 或 "Sell"。 |
| strike | DOUBLE | 是 | 执行价格。 |
| dayCountConvention | STRING | 是 | 日期计数惯例,可选值为 "ActualActualISDA"、"ActualActualISMA"、"Actual365" 或 "Actual360"。 |
| payoffType | STRING | 是 | 收益类型,可选值为 "Call" 或 "Put"。 |
| reportCurrency | STRING | 是 | 最终输出(NPV / Greeks)使用的货币。 |
| domesticCurve | STRING | 否 | 定价时参考的本币贴现曲线名称。 |
| foreignCurve | STRING | 否 | 定价时参考的外币贴现曲线名称。 |
