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, irSingleCurrencyCurveBuilder,parseMktData
曲线字段要求
字段名 | 类型 | 描述 | 是否必填 |
---|---|---|---|
mktDataType | STRING | 固定填 "Curve" | 是 |
referenceDate | DATE | 参考日期 | 是 |
version | INT | 版本号,默认值 0 | 否 |
curveType | STRING | 固定填 "IrYieldCurve" | 是 |
dayCountConvention | STRING |
曲线的日期计数惯例,可选值为:
|
是 |
interpMethod | STRING |
内插方法,可选值为:
|
是 |
extrapMethod | STRING |
外插方法,可选值为:
|
是 |
dates | DATE 向量 | 数据点的日期 | 是 |
values | DOUBLE 向量 | 数据点的值,与 dates 中的元素一一对应 | 是 |
curveName | STRING | 曲线名称 | 否 |
currency | STRING | 货币,可选值为"CNY", "USD", "EUR", "GBP", "JPY", "HKD" | 是 |
compounding | STRING |
复利类型,可选值为:
|
是 |
settlement | DATE | 结算日,如果指定了结算日,则后续期限间隔的计算都将从 settlement 开始,而不是 referenceDate | 否 |
frequency | INTEGRAL或 STRING |
计息频率,可选值为:
|
否 |
curveModel | STRING | 曲线构建模型,目前仅支持 "Bootstrap"。 | 否 |
curveParams | DICT | 模型的参数。 | 否 |