irCapFloorPricer
首发版本:3.00.6
语法
irCapFloorPricer(instrument, pricingDate, discountCurve,
forwardCurve, volSurf, [setting], [model='Bachelier'],
[method='Analytic'])
详情
对利率上下限期权进行定价。
参数
instrument INSTRUMENT 类型标量或向量,表示需要定价的利率上下限期权(IrCapFloor)。利率上下限期权所需的关键字段详见产品字段说明。
pricingDate DATE 类型标量或向量,表示定价日期。
discountCurve MKTDATA 类型(IrYieldCurve)的标量或向量,表示用于计算折现因子的即期曲线。
forwardCurve MKTDATA 类型(IrYieldCurve)的标量或向量,表示用于计算远期利率的即期曲线。
volSurf MKTDATA 类型(IrCapFloorVolatilitySurface)的标量或向量,表示波动率曲面。
setting 可选参数,字典(Dictionary<STRING, BOOL>),用于指定是否计算希腊字母(Greeks)所代表的期权价格敏感性指标。可选值:
| 键 | 值 | 描述 |
|---|---|---|
| calcDelta | 布尔值,默认为 false | 是否计算 Delta,即期权价格相对于标的资产价格的敏感性。 |
| calcGamma | 布尔值,默认为 false | 是否计算 Gamma,即期权 Delta 相对于标的资产价格的敏感性。 |
| calcVega | 布尔值,默认为 false | 是否计算 Vega,即期权价格相对于标的资产波动率的敏感性。 |
| calcTheta | 布尔值,默认为 false | 是否计算 Theta,即期权价格相对于时间变化的敏感性。 |
| calcRho | 布尔值,默认为 false | 是否计算 Rho,即期权价格相对于无风险利率的敏感性。 |
model 可选参数,STRING 类型标量,表示使用的定价模型。可选值:"Bachelier"(默认值)和 "Black76"。若设置为 "Bachelier",波动率曲面 volSurf 的 volType 必须为 "Normal";若设置为 "Black76",volType 必须为 "Lognormal"。
method 可选参数,STRING 类型标量,表示使用的求解方法,目前仅支持 "Analytic"。
返回值
-
未指定 setting 时,返回 DOUBLE 类型标量或向量,表示利率上下限期权的净现值 NPV。
-
指定 setting 时,返回一个字典(Dictionary<STRING, DOUBLE>),包含净现值 NPV 以及通过 setting 指定计算的 Greeks。
例子
对利率上下限期权进行定价。
// =====================================================
// 一、设置定价日
// =====================================================
// LPR 1Y Floor 的定价日
lpr1yPricingDate = 2021.03.18
// =====================================================
// 二、构造 LPR 1Y Floor 产品字典
// =====================================================
lpr1yFloorDict = {
"productType": "Option",
// 期权类型
"optionType": "EuropeanOption",
// 标的资产类型
"assetType": "IrCapFloor",
// 产品标识
"instrumentId": "LPR1Y_FLOOR_SAMPLE_11",
// 名义本金
"notionalAmount": 37000000.0,
// 名义本金币种
"notionalCurrency": "CNY",
// 起始日
"start": 2021.03.18,
// 到期日
"maturity": 2022.03.17,
// 执行利率
"strike": 0.035,
// 上一次已经确定的 fixing 利率
"lastFixing": 0.0340,
// 支付频率
"frequency": "Quarterly",
// Cap/Floor 类型
"capFloorType": "Floor",
// 浮动端参考利率指数:LPR 1Y
"iborIndex": "LPR_1Y",
// 日计数规则
"dayCountConvention": "Actual360",
// 贴现曲线名称
"discountCurve": "CNY",
// 远期曲线名称
"forwardCurve": "LPR_1Y"
}
// -----------------------------------------------------
// 将产品字典解析为 DDB 系统可识别的金融产品对象
// -----------------------------------------------------
lpr1yFloor = parseInstrument(lpr1yFloorDict)
// =====================================================
// 三、构造贴现曲线 discount curve
// =====================================================
// 创建一条默认平坦利率曲线作为贴现曲线。
lpr1yDiscountCurve = createDefaultFlatIrYieldCurve(
// 曲线参考日
lpr1yPricingDate,
// 币种
"CNY",
// 利率
0.0280,
// 曲线日计数规则
"Actual365",
// 复利频率
"NoFrequency",
// 复利方式
"Continuous"
)
// =====================================================
// 四、构造远期曲线 forward curve
// =====================================================
lpr1yForwardCurve = createDefaultFlatIrYieldCurve(
// 曲线参考日
lpr1yPricingDate,
// 币种
"CNY",
// 利率
0.037,
// 曲线日计数规则
"Actual365",
// 复利频率
"NoFrequency",
// 复利方式:连续复利
"Continuous"
)
// =====================================================
// 五、构造 LPR 1Y Cap/Floor 波动率曲面
// =====================================================
Lpr1yCapFloorSurf = {
// 波动率曲面名称
"surfaceName": "CNY_LPR_1Y",
// 市场数据类型
"mktDataType": "Surface",
// 曲面类型
"surfaceType": "IrCapFloorVolatilitySurface",
// 曲面参考日
"referenceDate": 2021.03.18,
// smile 插值方法
"smileMethod": "Linear",
// 期限节点日期
"termDates": [
2021.06.18,
2021.09.17,
2021.12.17,
2022.03.17
],
// 每个 termDate 对应一个 volatility smile。
// volSmiles 的长度应与 termDates 的长度一致。
// 每一组 smile 包含:
// strikes:执行利率节点;
// vols:对应执行利率节点上的波动率。
"volSmiles":[
{
"strikes": [0.0, 0.03, 0.06, 0.10],
"vols": [0.0067, 0.0064, 0.0066, 0.0071]
},
{
"strikes": [0.0, 0.03, 0.06, 0.10],
"vols": [0.0067, 0.0064, 0.0066, 0.0071]
},
{
"strikes": [0.0, 0.03, 0.06, 0.10],
"vols": [0.0067, 0.0064, 0.0066, 0.0071]
},
{
"strikes": [0.0, 0.03, 0.06, 0.10],
"vols": [0.0067, 0.0064, 0.0066, 0.0071]
}
],
// 币种
"currency": "CNY",
// 对应的浮动利率指数
"iborIndex": "LPR_1Y"
}
// -----------------------------------------------------
// 将波动率曲面字典解析为 DDB 系统可识别的市场数据对象
// -----------------------------------------------------
lpr1yVolSurf = parseMktData(Lpr1yCapFloorSurf)
// =====================================================
// 六、调用 Cap/Floor 定价器
// =====================================================
lpr1yFloorNpv = irCapFloorPricer(
lpr1yFloor,
lpr1yPricingDate,
lpr1yDiscountCurve,
lpr1yForwardCurve,
lpr1yVolSurf,
model="Bachelier"
)
// =====================================================
// 七、输出定价结果
// =====================================================
print("LPR1Y_FLOOR_SAMPLE_11 Bachelier NPV = " + string(lpr1yFloorNpv))
产品字段说明
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| productType | STRING | 固定填 "Option" | 是 |
| optionType | STRING | 固定填 "EuropeanOption" | 是 |
| assetType | STRING | 固定填 "IrCapFloor" | 是 |
| notionalAmount | DOUBLE | 名义本金数量,如 "1E8" | 是 |
| notionalCurrency | STRING | 名义本金货币,如 "CNY",默认为 "CNY" | 否 |
| instrumentId | STRING |
合约代码,标准格式为: "Cap/Floor_参考利率_期权期限"。 例如:"Cap_LPR1Y_6M" 表示参考利率为 LPR_1Y、期权期限为 6M 的利率上限期权。 |
否 |
| iborIndex | STRING | 参考利率,可选值为 "LPR_1Y" 或 "LPR_5Y" | 是 |
| lastFixing | DOUBLE | 最近一个已经确定的参考利率的 fixing 值 | 否 |
| start | DATE | 起息日 | 是 |
| maturity | DATE | 到期日 | 是 |
| strike | DOUBLE | 执行利率 | 是 |
| capFloorType | STRING |
标识“利率上限”或“利率下限”,可选:
|
是 |
| frequency | STRING |
支付频率,不填则使用参考利率的惯用频率,对于 "LPR_1Y" 及 "LPR_5Y",默认为 "Quarterly”。 可选值为:
|
否 |
| dayCountConvention | STRING | 日期计数惯例,可选 "ActualActualISDA", "ActualActualISMA", "Actual365", "Actual360" | 是 |
| discountCurve | STRING | 定价时参考的贴现曲线名称,如 "CNY_FR_007" | 否 |
| forwardCurve | STRING | 定价时参考的远期曲线名称,如 "CNY_LPR_1Y" | 否 |
曲线字段说明
| 字段名 | 类型 | 描述 | 是否必填 |
|---|---|---|---|
| mktDataType | STRING | 固定填 "Surface" | 是 |
| referenceDate | DATE | 参考日期 | 是 |
| surfaceType | STRING | 固定填 "IrCapFloorVolatilitySurface" | 是 |
| smileMethod | STRING |
波动率微笑方法,可选值为:
|
是 |
| volSmiles | DICT(STRING, ANY) 组成的元组 |
波动率微笑向量,向量中每个元素为一条波动率微笑。 包含以下成员:
|
是 |
| termDates | DATE 向量 | volSmiles 中每条波动率微笑对应的期限日期 | 是 |
| surfaceName | STRING | 曲面名称 | 否 |
| currency | STRING | 货币,可选值为 "CNY", "USD", "EUR", "GBP", "JPY", "HKD" | 是 |
| iborIndex | STRING |
表示参考利率,可选值为:
|
是 |
| volType | STRING |
表示波动率类型,可选值为:
|
否 |
相关函数:parseInstrument, parseMktData
