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