fxVolatilitySurfaceBuilder
语法
fxVolatilitySurfaceBuilder(referenceDate, currencyPair,
quoteNames, quoteTerms, quotes, spot, domesticCurve, foreignCurve,
[model='SVI'])
详情
构建外汇波动率曲面。
返回值:MKTDATA 类型标量,一个 FxVolatilitySurface 对象。
参数
referenceDate DATE 类型标量,表示曲面的参考日期。
currencyPair STRING 类型标量,表示货币对,形式为 "EURUSD","EUR.USD" 或 "EUR/USD"。支持的货币对包括:
-
EURUSD:欧元兑美元
-
USDCNY:美元兑人民币
-
EURCNY:欧元兑人民币
-
GBPCNY:英镑兑人民币
-
JPYCNY:日元兑人民币
-
HKDCNY:港币兑人民币
quoteNames STRING 类型向量,须为 ["ATM", "D25_RR", "D25_BF", "D10_RR", "D10_BF"] 的一组排列,表示报价名称,其中:
-
"ATM":平值波动率
-
"D25_RR":Delta = 0.25 的风险逆转
-
"D25_BF":Delta = 0.25 的蝶式
-
"D10_RR":Delta = 0.1 的风险逆转
-
"D10_BF":Delta = 0.1 的蝶式
quoteTerms DURATION 或 STRING 类型向量,表示市场报价的对应期限。当为 STRING 类型标量时,除可以是能转换成 DURATION 的字符串外,还可以为以下可选值:
-
"ON":Overnight,近端起息日为 T,远端起息日为 T+1
-
"TN":Tomorrow-next,近端起息日为 T+1,远端起息日为 T+2
-
"SN":Spot-next,近端起息日为 T+2,远端起息日为 T+3
quotes DOUBLE 类型矩阵,形状为 (size(quoteTerms), size(quoteNames))
。第
i 行第 j 列表示 quoteNames[j] 在 quoteTerms[i] 上的市场报价。
spot DOUBLE 类型标量,表示即期汇率。
domesticCurve MKTDATA 类型标量,一个 IrYieldCurve 对象,表示本币的折现曲线。本币折现曲线所需包含的关键字段见曲线字段要求。
foreignCurve MKTDATA 类型标量,一个 IrYieldCurve 对象,表示外币的折现曲线。外币折现曲线所需包含的关键字段见曲线字段要求。
model 可选参数,STRING 类型标量,指定构建波动率曲面所用模型。支持以下选项:
-
“SVI”:默认值,Stochastic Volatility Inspired 模型
-
“SABR”:Stochastic Alpha Beta Rho 模型
-
“Linear”:线性模型
-
“CubicSpline”:三次样条模型
例子
refDate = 2025.08.18
ccyPair = "USDCNY"
quoteTerms = ['1d', '1w', '2w', '3w', '1M', '2M', '3M', '6M', '9M', '1y', '18M', '2y', '3y']
quoteNames = ["ATM", "D25_RR", "D25_BF", "D10_RR", "D10_BF"]
quotes = [0.030000, -0.007500, 0.003500, -0.010000, 0.005500,
0.020833, -0.004500, 0.002000, -0.006000, 0.003800,
0.022000, -0.003500, 0.002000, -0.004500, 0.004100,
0.022350, -0.003500, 0.002000, -0.004500, 0.004150,
0.024178, -0.003000, 0.002200, -0.004750, 0.005500,
0.027484, -0.002650, 0.002220, -0.004000, 0.005650,
0.030479, -0.002500, 0.002400, -0.003500, 0.005750,
0.035752, -0.000500, 0.002750, 0.000000, 0.006950,
0.038108, 0.001000, 0.002800, 0.003000, 0.007550,
0.039492, 0.002250, 0.002950, 0.005000, 0.007550,
0.040500, 0.004000, 0.003100, 0.007000, 0.007850,
0.041750, 0.005250, 0.003350, 0.008000, 0.008400,
0.044750, 0.006250, 0.003400, 0.009000, 0.008550]
quotes = reshape(quotes, size(quoteNames):size(quoteTerms)).transpose()
spot = 7.1627
curveDates = [2025.08.21,
2025.08.27,
2025.09.03,
2025.09.10,
2025.09.22,
2025.10.20,
2025.11.20,
2026.02.24,
2026.05.20,
2026.08.20,
2027.02.22,
2027.08.20,
2028.08.21]
domesticCurveInfo = {
"mktDataType": "Curve",
"curveType": "IrYieldCurve",
"referenceDate": refDate,
"currency": "CNY",
"dayCountConvention": "Actual365",
"compounding": "Continuous",
"interpMethod": "Linear",
"extrapMethod": "Flat",
"frequency": "Annual",
"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
}
foreignCurveInfo = {
"mktDataType": "Curve",
"curveType": "IrYieldCurve",
"referenceDate": refDate,
"currency": "USD",
"dayCountConvention": "Actual365",
"compounding": "Continuous",
"interpMethod": "Linear",
"extrapMethod": "Flat",
"frequency": "Annual",
"dates": curveDates,
"values":[4.3345,
4.3801,
4.3119,
4.3065,
4.2922,
4.2196,
4.1599,
4.0443,
4.0244,
3.9698,
3.7740,
3.6289,
3.5003]/100
}
domesticCurve = parseMktData(domesticCurveInfo)
foreignCurve = parseMktData(foreignCurveInfo)
surf = fxVolatilitySurfaceBuilder(refDate, ccyPair, quoteNames, quoteTerms, quotes, spot, domesticCurve, foreignCurve)
surfDict = extractMktData(surf)
print(surfDict)
相关函数:extractMktData, 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 | 模型的参数。 | 否 |