irForwardRateAgreementPricer
首发版本:3.00.6
语法
irForwardRateAgreementPricer(instrument, pricingDate, discountCurve,
forwardCurve)
详情
对远期利率协议(FRA, Forward Rate Agreement)进行定价,返回其净现值(NPV)。
该函数基于给定的定价日期、折现曲线和远期曲线,对远期利率协议产品进行估值。
参数
注意:所有输入向量必须等长,输入标量将自动扩展以匹配其它向量的长度。
instrument 一个类型为 IrForwardRateAgreement 的 INSTRUMENT 标量或向量,表示需要定价的远期利率协议。
pricingDate DATE 类型标量或向量,表示定价日期。
discountCurve 一个类型为 IrYieldCurve 的 MKTDATA 标量或向量,表示定价使用的折现曲线。
forwardCurve 一个类型为 IrYieldCurve 的 MKTDATA 标量或向量,表示定价使用的远期曲线。
返回值
DOUBLE 类型标量或向量,表示远期利率协议的定价结果,即 NPV 值。
例子
例1. 使用收益率曲线对远期利率协议进行贴现定价。本示例以一份 3×6 FRA 为例,使用人民币收益率曲线同时作为折现曲线和远期曲线,对远期利率协议进行估值。为便于验证计算结果,示例将名义本金设置为 1;实际业务中通常使用实际交易本金,并根据市场情况分别构建折现曲线和远期曲线。
// 构造收益率曲线
pillar_values = [0.01459939316305370000, 0.02290755179722750000, 0.02530206673930290000, 0.02575648663032010000,
0.02597514409924680000, 0.02603551814799880000, 0.02653362631447860000, 0.02727214541140500000,
0.02820244536310750000, 0.02902312220757990000, 0.03046650294887320000, 0.03198550139762500188]
aod = 2019.07.08
pillar_dates = [aod + 2, aod + 8, aod + 93, aod + 185, aod + 276, aod + 367, aod + 732, aod + 1099, aod + 1463,
aod + 1828, aod + 2558, aod + 3654]
curve = {
"mktDataType": "Curve",
"curveType": "IrYieldCurve",
"referenceDate": aod,
"currency": "CNY",
"dayCountConvention": "Actual365",
"compounding": "Continuous",
"interpMethod": "Linear",
"extrapMethod": "Flat",
"dates": pillar_dates,
"values": pillar_values,
"settlement": aod
}
// 解析为市场数据对象
discountCurve = parseMktData(curve)
// 构造 FRA 合约
irFRA = {
"productType": "Forward",
"forwardType": "IrForwardRateAgreement",
"notionalAmount": 1.0,
"instrumentId": "3Mx6M",
"start": 2019.10.10,
"maturity": 2020.01.10,
"fixedRate": 0.03,
"calendar": "CFET",
"dayCountConvention": "Actual360",
"iborIndex": "SHIBOR_3M",
"payReceive": "Pay"
}
// 解析为金融产品对象
instrument = parseInstrument(irFRA)
// 使用收益率曲线进行定价
npv = irForwardRateAgreementPricer(
instrument=instrument,
pricingDate=aod,
discountCurve=discountCurve,
forwardCurve=discountCurve
)
print(npv)
// output: -0.00102224
例2. 本示例以一份 3×6 远期利率协议(FRA)为例,分别构建远期曲线(Forward Curve)和折现曲线(Discount Curve),并采用多曲线(Multi-Curve)框架对合约进行定价。其中,远期曲线用于预测未来浮动利率,折现曲线用于对未来现金流进行贴现。实际业务中,这两条曲线通常根据不同的市场报价分别构建。
// 远期曲线(SHIBOR Curve)
forward_values = [
0.0220,
0.0240,
0.0255,
0.0260,
0.0268,
0.0275,
0.0285,
0.0295
]
// 折现曲线(OIS Curve)
discount_values = [
0.0180,
0.0190,
0.0200,
0.0205,
0.0210,
0.0215,
0.0220,
0.0225
]
aod = 2019.07.08
curve_dates = [
aod + 30,
aod + 90,
aod + 180,
aod + 365,
aod + 730,
aod + 1095,
aod + 1825,
aod + 3650
]
forwardCurve = {
"mktDataType": "Curve",
"curveType": "IrYieldCurve",
"referenceDate": aod,
"currency": "CNY",
"dayCountConvention": "Actual365",
"compounding": "Continuous",
"interpMethod": "Linear",
"extrapMethod": "Flat",
"dates": curve_dates,
"values": forward_values,
"settlement": aod
}
discountCurve = {
"mktDataType": "Curve",
"curveType": "IrYieldCurve",
"referenceDate": aod,
"currency": "CNY",
"dayCountConvention": "Actual365",
"compounding": "Continuous",
"interpMethod": "Linear",
"extrapMethod": "Flat",
"dates": curve_dates,
"values": discount_values,
"settlement": aod
}
forwardCurveObj = parseMktData(forwardCurve)
discountCurveObj = parseMktData(discountCurve)
irFRA = {
"productType": "Forward",
"forwardType": "IrForwardRateAgreement",
"notionalAmount": 10000000,
"instrumentId": "3Mx6M",
"start": 2019.10.10,
"maturity": 2020.01.10,
"fixedRate": 0.028,
"calendar": "CFET",
"dayCountConvention": "Actual360",
"iborIndex": "SHIBOR_3M",
"payReceive": "Receive"
}
instrument = parseInstrument(irFRA)
npv = irForwardRateAgreementPricer(
instrument=instrument,
pricingDate=aod,
discountCurve=discountCurveObj,
forwardCurve=forwardCurveObj
)
print(npv)
// output: 3242.329429
