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

相关函数:parseInstrumentparseMktData