---
source_url: https://docs.dolphindb.cn/zh/funcs/f/fxVolatilitySurfaceBuilder.html
fetched_at: 2026-05-19T09:22:15Z
category: funcs
title: fxVolatilitySurfaceBuilder
sha1: 17d459d35d98b80cc390229f99efaa5c8471dd6a
---

# fxVolatilitySurfaceBuilder

首发版本：3.00.4

## 语法

`fxVolatilitySurfaceBuilder(referenceDate, currencyPair,
quoteNames, quoteTerms, quotes, spot, domesticCurve, foreignCurve,
[model='SVI'], [surfaceName])`

## 详情

构建外汇波动率曲面。

## 参数

**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 对象，表示本币的折现曲线。本币折现曲线所需包含的关键字段见[曲线字段要求](#topic_o13_dm2_ngc)。

**foreignCurve** MKTDATA 类型标量，一个 IrYieldCurve 对象，表示外币的折现曲线。外币折现曲线所需包含的关键字段见[曲线字段要求](#topic_o13_dm2_ngc)。

**model** 可选参数，STRING 类型标量，指定构建波动率曲面所用模型。支持以下选项：

- “SVI”：默认值，Stochastic Volatility Inspired 模型
- “SABR”：Stochastic Alpha Beta Rho 模型
- “Linear”：线性模型
- “CubicSpline”：三次样条模型

**surfaceName** 可选参数，STRING 类型标量，指定曲面的名称。默认值为 "FXVOLSURF/{currencyPair}"。

## 返回值

MKTDATA 类型标量，一个 FxVolatilitySurface 对象。

## 例子

```dolphindb
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](../e/extractMktData.html),
[parseMktData](../p/parseMktData.html)

## 曲线字段要求

| 字段名 | 类型 | 描述 | 是否必填 |
| --- | --- | --- | --- |
| mktDataType | STRING | 固定填 "Curve" | 是 |
| referenceDate | DATE | 参考日期 | 是 |
| 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 | 模型的参数。 | 否 |
