irCrossCurrencyCurveBuilder

语法

irCrossCurrencyCurveBuilder(referenceDate, currency, instNames, instTypes, terms, quotes, currencyPair, spot, dayCountConvention, discountCurve, [compounding='Continuous'], [frequency='Annual'], [curveName])

详情

构建跨币种利率互换收益率曲线。

返回值:MKTDATA 类型对象。

参数

referenceDate DATE 类型标量,指定收益率曲线的参考日期。

currency STRING 类型标量,表示曲线定义的货币,可选值为:

  • "CNY":人民币

  • "USD":美元

  • "EUR":欧元

  • "GBP":英镑

  • "JPY":日元

  • "HKD":港币

instNames STRING 类型向量,表示金融工具名称。

instTypes STRING 类型向量,表示金融工具类型。

目前instTypes 仅支持 "FxSwap",此时 instNames 必须为货币对,例如 "USDCNY"。

terms STRING 或 DURATION 类型向量,表示合约剩余期限,例如 "1M"。

quotes 数值类型向量,表示构建曲线所需的市场报价。

currencyPair STRING 类型标量,表示货币对,形式为 "EURUSD","EUR.USD" 或 "EUR/USD"。支持的货币对包括:

  • EURUSD:欧元兑美元

  • USDCNY:美元兑人民币

  • EURCNY:欧元兑人民币

  • GBPCNY:英镑兑人民币

  • JPYCNY:日元兑人民币

  • HKDCNY:港币兑人民币

spot DOUBLE 类型标量,表示参考日期的即期汇率。

dayCountConvention STRING 类型,表示计息日数规则,可选值为:

  • "Actual360": 实际/360

  • "Actual365": 实际/365

  • "ActualActualISMA": 实际/实际,遵循 ISMA(International Securities Market Association,国际证券市场协会)规则

  • "ActualActualISDA":实际/实际,遵循 ISDA(International Swaps and Derivatives Association,国际掉期及衍生工具协会)规则。

  • "Thirty360EU": 欧洲 30/360

  • "Thirty360US": 美国 (NASD) 30/360

discountCurve MKTDATA 类型对象(IrYieldCurve),表示货币对中另一方的贴现曲线,必须由 bootstrap 方法构建。曲线所需包含的关键字段见曲线字段要求

compounding 可选参数,STRING 类型标量,表示利率复利方式。可选值为:

  • "Compounded":离散复利。

  • "Simple":简单复利。

  • "Continuous":默认值,连续复利。

frequency 可选参数,STRING 类型标量,表示计算计息频率。可选值为:

  • "NoFrequency":无计息频率

  • "Annual":每年付息一次

  • "Semiannual":每半年付息一次

  • "EveryFourthMonth":每四个月付息一次

  • "Quarterly":每季度付息一次

  • "BiMonthly":每两月付息一次

  • "Monthly":每月付息一次

  • "EveryFourthWeek":每四周付息一次

  • "BiWeekly":每两周付息一次

  • "Weekly":每周付息一次

  • "Daily":每日付息一次

  • "Other":其他计息频率

curveName 可选参数,STRING 类型标量,表示生成的曲线名称,默认为空。

例子

// 以2025年8月18日的USDCNY美元隐含收益率曲线构建为例
refDate = 2025.08.18
spotDate1 = temporalAdd(refDate, 2, "XNYS")   //美元的即期日   
spotDate2 = temporalAdd(refDate, 2, "CFET")   //人民币的即期日  
spotDate = max(spotDate1, spotDate2)
instNames = take("USDCNY", 13)
instTypes = take("FxSwap", 13)
terms = ["1d", "1w", "2w", "3w", "1M", "2M", "3M", "6M", "9M", "1y", "18M", "2y", "3y"]
curveDates = array(DATE)
for(term in terms){
    dur = duration(term)
    days1 = transFreq(temporalAdd(spotDate, dur), "XNYS", "right", "right")
    days2 = transFreq(temporalAdd(spotDate, dur), "CFET", "right", "right")
    curveDates.append!(max(transFreq(temporalAdd(spotDate, dur), "XNYS", "right", "right"), transFreq(temporalAdd(spotDate, dur), "CFET", "right", "right")))
 }
quotes = [-5.54, 
          -39.00, 
          -75.40, 
          -113.20, 
          -177.00, 
          -317.00, 
          -466.00, 
          -898.50, 
          -1284.99, 
          -1676.00, 
          -2320.00, 
          -2870.00, 
          -3962.50] \ 10000  // fx swap points

cnyShibor3m = {
    "mktDataType": "Curve",
    "curveType": "IrYieldCurve",
    "version": 0,
    "referenceDate": refDate,
    "currency": "CNY",
    "dayCountConvention": "Actual365",
    "compounding": "Continuous",
    "interpMethod": "Linear",
    "extrapMethod": "Flat",
    "dates": curveDates,
    "values": [1.5113,
               1.5402,
               1.5660,
               1.5574,
               1.5556,
               1.5655,
               1.5703,
               1.5934,
               1.6040,
               1.6020,
               1.5928,
               1.5842,
               1.6068] \ 100,
    "settlement": spotDate
}

cnyShibor3m = parseMktData(cnyShibor3m)

spot = 7.1627
curve = irCrossCurrencyCurveBuilder(refDate, "USD", instNames, instTypes, terms, quotes, "USDCNY", spot, "Actual365", cnyShibor3m, "Continuous")
curveDict = extractMktData(curve)
for(i in 0..(size(quotes)-1) ){
    print(curveDict["values"][i]*100)
}

相关函数:bondYieldCurveBuilder, irSingleCurrencyCurveBuilderparseMktData

曲线字段要求

字段名 类型 描述 是否必填
mktDataType STRING 固定填 "Curve"
referenceDate DATE 参考日期
version INT 版本号,默认值 0
curveType STRING 固定填 "IrYieldCurve"
dayCountConvention STRING

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

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

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

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

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

interpMethod STRING

内插方法,可选值为:

  • "Linear":线性插值

  • "CubicSpline":三次样条插值

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

extrapMethod STRING

外插方法,可选值为:

  • "Flat":平插

  • "Linear":线性插值

dates DATE 向量 数据点的日期
values DOUBLE 向量 数据点的值,与 dates 中的元素一一对应
curveName STRING 曲线名称
currency STRING 货币,可选值为"CNY", "USD", "EUR", "GBP", "JPY", "HKD"
compounding STRING

复利类型,可选值为:

  • "Simple":单利

  • "Compounded":离散复利

  • "Continuous":连续复利

settlement DATE 结算日,如果指定了结算日,则后续期限间隔的计算都将从 settlement 开始,而不是 referenceDate
frequency INTEGRAL或 STRING

计息频率,可选值为:

  • -1 或 "NoFrequency":无效计息频率

  • 0 或 "Once":到期一次还本付息

  • 1 或 "Annual":每年付息一次

  • 2 或 "Semiannual":每半年付息一次

  • 3 或 "EveryFourthMonth":每四个月付息一次

  • 4 或 "Quarterly":每季度付息一次

  • 6 或 "BiMonthly":每两月付息一次

  • 12 或 "Monthly":每月付息一次

  • 13 或 "EveryFourthWeek":每四周付息一次

  • 26 或 "BiWeekly":每两周付息一次

  • 52 或 "Weekly":每周付息一次

  • 365 或 "Daily":每日付息一次

  • 999 或 "Other":其他计息频率

curveModel STRING 曲线构建模型,目前仅支持 "Bootstrap"。
curveParams DICT 模型的参数。