creditDefaultSwapPricer

首发版本:3.00.6

语法

creditDefaultSwapPricer(instrument, pricingDate, discountCurve, creditCurve, [config])

详情

对信用违约互换(Credit Default Swap, CDS)进行定价。

参数

instrument INSTRUMENT 类型标量或向量,表示需要定价的信用违约互换(CreditDefaultSwap)。信用违约互换所需的关键字段详见产品字段说明

pricingDate DATE 类型标量或向量,表示定价日期。

discountCurve MKTDATA 类型(IrYieldCurve)的标量或向量,表示用于计算折现因子的即期曲线。

creditCurve MKTDATA 类型(CreditCurve)的标量或向量,表示定价用到的信用曲线。

config 可选参数,字典(Dictionary<STRING, ANY>),用于设置静态数据。目前支持以下键值对:

值类型 描述
"recoveryRate" DOUBLE 标量 违约回收率,默认为 0.4。

返回值

DOUBLE 类型标量或向量,表示信用违约互换定价的结果。

例子

对信用违约互换进行定价。

// =====================================================
// 一、构造 CNY FR007 贴现零息收益率曲线
// =====================================================
def createCnyFr007CurveForCds(asOfDate){
    pillarDates = asOfDate + [
        2, 8, 93, 185, 276, 367,
        732, 1099, 1463, 1828, 2558, 3654
    ]
    pillarValues = [
        0.0215993931630537,
        0.0229075517972275,
        0.0253020667393029,
        0.0257564866303201,
        0.0259751440992468,
        0.0260355181479988,
        0.0265336263144786,
        0.0272721454114050,
        0.0282024453631075,
        0.0290231222075799,
        0.0304665029488732,
        0.0319855013976250
    ]
    discountCurveDict = {
        "mktDataType": "Curve",
        "curveType": "IrYieldCurve",
        "referenceDate": asOfDate,
        "currency": "CNY",
        "curveName": "CNY_FR_007",
        "dayCountConvention": "Actual365",
        "compounding": "Continuous",
        "interpMethod": "Linear",
        "extrapMethod": "Flat",
        "frequency": "NoFrequency",
        "dates": pillarDates,
        "values": pillarValues
    }
    return parseMktData(discountCurveDict)
}
// =====================================================
// 二、构造 CDS 信用曲线
// =====================================================
def createCreditCurveForCds(asOfDate){
    pillarDates = asOfDate + [
        2, 8, 93, 185, 276, 367,
        732, 1099, 1463
    ]
    hazardRates = [
        0.001577614619366,
        0.001587614619366,
        0.00217392030740149,
        0.00327736067786984,
        0.00687303437629905,
        0.0141416564486811,
        0.0219406380083359,
        0.0292999285840119,
        0.0342083758016553
    ]
    creditCurveDict = {
        "mktDataType": "Curve",
        "curveType": "CreditCurve",
        "referenceDate": asOfDate,
        "currency": "CNY",
        "curveName": "CFETS_SHCH_GTJA",
        "interpMethod": "Linear",
        "extrapMethod": "Flat",
        "dayCountConvention": "Actual365",
        "dates": pillarDates,
        "values": hazardRates
    }
    return parseMktData(creditCurveDict)
}
// =====================================================
// 三、设置定价日
// =====================================================
pricingDate = 2020.09.07
// =====================================================
// 四、构造 CDS 产品
// =====================================================
instrumentDict = {
    "productType": "Swap",
    "swapType": "CreditDefaultSwap",
    "instrumentId": "CFETS_SHCH_GTJA",
    "notionalAmount": 1.0e7,
    "notionalCurrency": "CNY",
    "start": 2019.06.20,
    "maturity": 2024.06.20,
    "payReceive": "Pay",
    "protectionLegRefPrice": 0.0,
    "protectionLegLeverage": 1.0,
    "protectionLegRecoveryRate": 0.4,
    "creditProtectionType": "PayProtectionAtMaturity",
    "creditPremiumType": "PayPremiumUptoCurrentPeriod",
    "premiumRate": 0.01,
    "dayCountConvention": "Actual360",
    "frequency": "Quarterly",
    "businessDayConvention": "ModifiedFollowing",
    "calendar": "CFET",
    "upfrontRate": 0.01,
    "rebateAccrual": false
}
instrument = parseInstrument(instrumentDict)
// =====================================================
// 五、生成贴现曲线与信用曲线
// =====================================================
discountCurve = createCnyFr007CurveForCds(pricingDate)
creditCurve = createCreditCurveForCds(pricingDate)
// =====================================================
// 六、设置 CDS 定价参数
// =====================================================
config = {
    "recoveryRate": 0.4
}
// =====================================================
// 七、调用 CDS 定价器
// =====================================================
npv = creditDefaultSwapPricer(
    instrument,
    pricingDate,
    discountCurve,
    creditCurve,
    config=config
)
// =====================================================
// 八、输出 CDS 定价结果
// =====================================================
print("CreditDefaultSwap NPV = " + string(npv))

产品字段说明

字段名 类型 描述 是否必填
productType STRING 固定填 "Swap"
swapType STRING 固定填 "CreditDefaultSwap"
notionalAmount DOUBLE 名义本金额
notionalCurrency STRING 名义本金货币,默认为 "CNY"
instrumentId STRING 金融工具 ID
start DATE 起息日
maturity DATE 到期日
payReceive STRING 收付标识,"Pay" 表示支付,"Receive" 表示收取
frequency STRING 付息频率,默认为 "Quarterly"
protectionLegRefPrice DOUBLE 保护腿参考价格
protectionLegLeverage DOUBLE 保护腿杠杆率
protectionLegRecoveryRate DOUBLE 保护腿回收率
creditProtectionType STRING

信用保护类型,可选值为:

  • "PayProtectionAtDefault": 在违约时支付保护

  • "PayProtectionAtMaturity": 在合约到期时支付保护

creditPremiumType STRING

信用保费类型

  • "PayPremiumAtDefault":在违约时支付保费

  • "PayPremiumUptoCurrentPeriod":在当期期限支付保费

  • "PayPremiumUptoMaturity":在到期时支付保费

  • "PayNothingAfterDefault":违约后不支付保费

premiumRate DOUBLE 保费利率
calendar STRING 交易日历
dayCountConvention STRING 日期计数惯例,可选 "ActualActualISDA"、"ActualActualISMA"、"Actual365"、"Actual360"
businessDayConvention STRING

工作日惯例,可选值为:

  • "Following":延顺

  • "ModifiedFollowing":修正延顺

  • "Preceding":提前

  • "ModifiedPreceding":修正提前

  • "Unadjusted":不调整

upfrontRate DOUBLE 前端费率
rebateAccrual BOOL 是否计算返利计提

曲线字段说明

字段名 类型 描述 是否必填
mktDataType STRING 固定填 "Curve"
referenceDate DATE 参考日期
curveType STRING 固定填 "CreditCurve"
curveName STRING 曲线名称
dayCountConvention STRING

曲线的日期计数惯例,可选值为:

  • "Actual360":实际天数除以360

  • "Actual365":实际天数除以365(不区分闰年)

  • "ActualActualISMA":实际天数/实际天数(ISMA规则)

  • "ActualActualISDA":实际天数/实际天数(ISDA规则)

interpMethod STRING

内插方法,可选值为:

  • "Linear":线性插值

  • "CubicSpline":三次样条插值

  • "CubicHermiteSpline":三次埃尔米特样条插值

extrapMethod STRING

外插方法,可选值为:

  • "Flat":平插

  • "Linear":线性插值

dates DATE 向量 数据点的日期
values DOUBLE 向量 危险率,数据点的值,与 dates 中的元素一一对应

相关函数:creditCurveBuilder, parseInstrument, parseMktData