eqDividendCurveBuilder

语法

eqDividendCurveBuilder(referenceDate, termDates, method, [futPrices], [callPrices], [putPrices], [strikes], spot, discountCurve, dayCountConvention='Actual365', [curveName])

详情

构建权益类分红(股息)曲线。

参数

referenceDate DATE 类型标量,表示曲线的生成日期。

termDates DATE 类型向量,表示曲线的期限日期,要求严格单调递增,且大于 referenceDate

method STRING 类型标量,可选 “CallPutParity” 和 “FuturesPrice”:

  • method = “CallPutParity”,表示通过看涨看跌平价关系推导隐含股息率;需要使用 callPricesputPricesstrikes

  • method = “FuturesPrice”,表示通过期货价格公式推导隐含股息率;需要使用 futPrices

futPrices 可选参数,DOUBLE 类型向量,正数,表示标的期货合约价格。

callPrices 可选参数,DOUBLE 类型矩阵,正数,表示看涨期权的价格矩阵。

putPrices 可选参数,DOUBLE 类型矩阵,正数,表示看跌期权的价格矩阵。

strikes 可选参数,DOUBLE 类型矩阵,表示执行价,要求严格单调递增。

  • callPricesputPricesstrikes 三者形状一致且列数与 termDates 等长。

  • futPrices 也与 termDates 等长。

spot DOUBLE 类型标量,正数,表示标的的即期价格。

discountCurve MKTDATA 类型标量,一个 IrYieldCurve 对象,表示折现曲线。

dayCountConvention STRING 类型标量,表示计息日数惯例。可选值为:

  • "Actual365"(默认):实际/365

  • "Actual360":实际/360

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

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

curveName 可选参数,STRING 类型标量,表示曲线名称。

返回值

MKTDATA 类型对象。

例子

CallPutParity

通过 CallPutParity 方法构建一条上证 50ETF(标的代码: 510050.SH)的股息曲线。

referenceDate = 2026.02.13
spot = 3.114  // Close Price Of 510050.SH

// 1. Term Structure (Option Expiry Dates)
termDates = [2026.02.25, 2026.03.25, 2026.06.24, 2026.09.23]

// 2. Raw Data Matrices (Settlement Price)
callPrices = matrix(
    [0.2640, 0.2140, 0.1640, 0.1140, 0.0327, 0.0042, 0.0016, 0.0008, 0.0003, 0.0002],
    [0.2723, 0.2289, 0.1810, 0.1424, 0.0721, 0.0323, 0.0138, 0.0075, 0.0050, 0.0039],
    [0.3150, 0.2770, 0.2391, 0.2073, 0.1519, 0.1061, 0.0731, 0.0519, 0.0379, 0.0280],
    [0.3521, 0.3170, 0.2850, 0.2555, 0.2030, 0.1577, 0.1243, 0.0986, 0.0790, 0.0642]
)
putPrices = matrix(
    [0.0004, 0.0008, 0.0021, 0.0044, 0.0215, 0.0928, 0.1889, 0.2884, 0.3895, 0.4903],
    [0.0090, 0.0124, 0.0170, 0.0260, 0.0590, 0.1225, 0.1993, 0.2928, 0.3918, 0.4903],
    [0.0352, 0.0463, 0.0571, 0.0746, 0.1188, 0.1733, 0.2401, 0.3204, 0.4049, 0.4938],
    [0.0601, 0.0739, 0.0903, 0.1091, 0.1548, 0.2113, 0.2795, 0.3471, 0.4307, 0.5120]
)
strikes = matrix(
    [2.8500, 2.9000, 2.9500, 3.0000, 3.1000, 3.2000, 3.3000, 3.4000, 3.5000, 3.6000],
    [2.8500, 2.9000, 2.9500, 3.0000, 3.1000, 3.2000, 3.3000, 3.4000, 3.5000, 3.6000],
    [2.8500, 2.9000, 2.9500, 3.0000, 3.1000, 3.2000, 3.3000, 3.4000, 3.5000, 3.6000],
    [2.8500, 2.9000, 2.9500, 3.0000, 3.1000, 3.2000, 3.3000, 3.4000, 3.5000, 3.6000]
)

// 3. Discount Curve 
// Data From https://www.chinamoney.com.cn/chinese/bkcurvuir/
terms = [1d, 1w, 2w, 3w, 1M, 2M, 3M, 6M, 9M, 1y, 18M, 2y, 3y]
dates = array(DATE, size(terms))
for(i in 0..(size(terms)-1)){
    dates[i] = transFreq(temporalAdd(referenceDate, terms[i]), "CFET", "right", "right")
}
discountCurveDict = {
    "mktDataType": "Curve",
    "curveType": "IrYieldCurve",
    "curveName": "CNY_FR_007",
    "referenceDate": referenceDate,
    "currency": "CNY",
    "dayCountConvention": "Actual365",
    "compounding": "Continuous",
    "interpMethod": "Linear",
    "extrapMethod": "Flat",
    "dates": dates,
    "values":[1.5577, 1.5247, 1.5181, 1.5181, 1.5195, 1.5216, 1.5167, 1.4964, 1.4758, 1.4732, 1.4859, 1.4985,1.5306] \ 100
}
discountCurve = parseMktData(discountCurveDict)

// 4. Implied Dividend Curve
// Using Call-Put Parity on the full matrices
dividendCurve = eqDividendCurveBuilder(
    referenceDate, termDates, "CallPutParity", ,
    callPrices, putPrices, strikes, spot, discountCurve, "Actual365"
)

print(dividendCurve)

FuturesPrice

通过 FuturesPrice 方法构建一条沪深300股指(标的代码: 000300.SH)的股息曲线。

referenceDate = 2026.02.13
spot = 4660.41  // Close Price Of 000300.SH

// 1. Futures Price
termDates = [2026.02.24, 2026.03.20, 2026.06.22, 2026.09.18] // IF2602/03/06/09 Expiry Date
futPrices = [4650.6, 4639.6, 4601.2, 4540.4]  // Settlement Price

// 2. Discount Curve
// Data From https://www.chinamoney.com.cn/chinese/bkcurvuir/
terms = [1d, 1w, 2w, 3w, 1M, 2M, 3M, 6M, 9M, 1y, 18M, 2y, 3y]
dates = array(DATE, size(terms))
for(i in 0..(size(terms)-1)){
    dates[i] = transFreq(temporalAdd(referenceDate, terms[i]), "CFET", "right", "right")
}
discountCurveDict = {
    "mktDataType": "Curve",
    "curveType": "IrYieldCurve",
    "curveName": "CNY_FR_007",
    "referenceDate": referenceDate,
    "currency": "CNY",
    "dayCountConvention": "Actual365",
    "compounding": "Continuous",
    "interpMethod": "Linear",
    "extrapMethod": "Flat",
    "dates": dates,
    "values":[1.5577, 1.5247, 1.5181, 1.5181, 1.5195, 1.5216, 1.5167, 1.4964, 1.4758, 1.4732, 1.4859, 1.4985, 1.5306] \ 100
}
discountCurve = parseMktData(discountCurveDict)

//3. Build Dividend Curve
dividendCurve = eqDividendCurveBuilder(referenceDate, termDates, "FuturesPrice", futPrices,
    , , , spot, discountCurve, "Actual365", "HS300")
print(dividendCurve)

相关函数parseMktData