fxEuropeanOptionPricer
语法
fxEuropeanOptionPricer(instrument, pricingDate, spot,
domesticCurve, foreignCurve, volSurf)
详情
对外汇欧式期权进行定价,返回期权的净现值(NPV)。
返回值:DOUBLE 类型标量。
参数
instrument INSTRUMENT 类型标量,表示待定价的外汇欧式期权。外汇欧式期权所需的关键字段详见产品字段要求。
pricingDate DATE 类型标量,表示定价日期。
spot 数值类型标量,表示标的汇率的即期价格。
domesticCurve MKTDATA 类型对象(IrYieldCurve),表示本币的折现曲线。曲线所需包含的关键字段见曲线字段要求。
foreignCurve MKTDATA 类型对象(IrYieldCurve),表示外币的折现曲线。曲线所需包含的关键字段见曲线字段要求。
volSurf MKTDATA 类型(FxVolatilitySurface),表示外汇期权波动率曲面。曲线所需包含的关键字段见曲线字段要求。
例子
pricingDate = 2025.08.18
ccyPair = "USDCNY"
option = {
"productType": "Option",
"optionType": "EuropeanOption",
"assetType": "FxEuropeanOption",
"version": 0,
"notional": ["USD", 1E6],
"strike": 7.2,
"maturity": 2025.10.28,
"payoffType": "Call",
"dayCountConvention": "Actual365",
"underlying": ccyPair
}
quoteTerms = ['1d', '1w', '2w', '3w', '1M', '2M', '3M', '6M', '9M', '1y', '18M', '2y', '3y']
quoteNames = ["ATM", "D25_RR", "D25_BF", "D10_RR", "D10_BF"]
quotes = [0.030000, -0.007500, 0.003500, -0.010000, 0.005500,
0.020833, -0.004500, 0.002000, -0.006000, 0.003800,
0.022000, -0.003500, 0.002000, -0.004500, 0.004100,
0.022350, -0.003500, 0.002000, -0.004500, 0.004150,
0.024178, -0.003000, 0.002200, -0.004750, 0.005500,
0.027484, -0.002650, 0.002220, -0.004000, 0.005650,
0.030479, -0.002500, 0.002400, -0.003500, 0.005750,
0.035752, -0.000500, 0.002750, 0.000000, 0.006950,
0.038108, 0.001000, 0.002800, 0.003000, 0.007550,
0.039492, 0.002250, 0.002950, 0.005000, 0.007550,
0.040500, 0.004000, 0.003100, 0.007000, 0.007850,
0.041750, 0.005250, 0.003350, 0.008000, 0.008400,
0.044750, 0.006250, 0.003400, 0.009000, 0.008550]
quotes = reshape(quotes, size(quoteNames):size(quoteTerms)).transpose()
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
}
spot = 7.1627
instrument = parseInstrument(option)
domesticCurve = parseMktData(domesticCurveInfo)
foreignCurve = parseMktData(foreignCurveInfo)
surf = fxVolatilitySurfaceBuilder(pricingDate, ccyPair, quoteNames, quoteTerms, quotes, spot, domesticCurve, foreignCurve)
npv = fxEuropeanOptionPricer(instrument, pricingDate, spot, domesticCurve, foreignCurve, surf)
print(npv)
相关函数:parseInstrument, parseMktData
产品字段说明
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
productType | STRING | 固定填 "Option" | 是 |
optionType | STRING | 固定填 "EuropeanOpiton" | 是 |
assetType | STRING | 固定填 "FxEuropeanOpiton" | 是 |
version | INT | 版本号,默认值 0 | 非必填 |
notional | ANY 向量 | 名义本金,格式如 ["USD", 1.0] | 是 |
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" | 是 |
domesticCurve | STRING | 定价时参考的本币贴现曲线名称 | 否 |
foreignCurve | STRING | 定价时参考的外币贴现曲线名称 | 否 |
曲线字段要求
IrYieldCurve
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
mktDataType | STRING | 固定填 "Curve" | 是 |
referenceDate | DATE | 参考日期 | 是 |
version | INT | 版本号,默认值 0 | 否 |
curveType | STRING | 固定填 "IrYieldCurve" | 是 |
dayCountConvention | STRING |
曲线的日期计数惯例,可选值为:
|
是 |
interpMethod | STRING |
内插方法,可选值为:
|
是 |
extrapMethod | STRING |
外插方法,可选值为:
|
是 |
dates | DATE 向量 | 数据点的日期 | 是 |
values | DOUBLE 向量 | 数据点的值,与 dates 中的元素一一对应 | 是 |
curveName | STRING | 曲线名称 | 否 |
currency | STRING | 货币,可选值为"CNY", "USD", "EUR", "GBP", "JPY", "HKD" | 是 |
compounding | STRING |
复利类型,可选值为:
|
是 |
settlement | DATE | 结算日,如果指定了结算日,则后续期限间隔的计算都将从 settlement 开始,而不是 referenceDate | 否 |
frequency | INTEGRAL或 STRING |
计息频率,可选值为:
|
否 |
curveModel | STRING | 曲线构建模型,目前仅支持 "Bootstrap"。 | 否 |
curveParams | DICT | 模型的参数。 | 否 |
FxVolatilitySurface
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
mktDataType | STRING | 固定填 "Surface" | 是 |
referenceDate | DATE | 参考日期 | 是 |
version | INT | 版本号,默认值 0 | 否 |
surfaceType | STRING | 固定填 "FxVolatilitySurface" | 是 |
smileMethod | STRING |
波动率微笑方法,可选值为:
|
是 |
volSmiles | DICT(STRING, ANY) 向量 |
波动率微笑向量,向量中每个元素为一条波动率微笑。 包含以下成员:
|
是 |
termDates | DATE 向量 | volSmiles中每条波动率微笑对应的期限日期 | 是 |
surfaceName | STRING | 曲面名称 | 否 |
currencyPair | STRING |
外汇的货币对,可选值为"EURUSD", "USDCNY", "EURCNY", "GBPCNY", "JPYCNY", "HKDCNY"。 货币对的表示也可由 |
是 |