跳到主要内容
跳到主要内容

财务函数

financialInternalRateOfReturn

引入于:v25.7

计算一系列定期现金流的内部收益率 (IRR)。内部收益率是使净现值 (NPV) 等于零的折现率。

IRR 尝试解决以下方程:

i=0ncashflowi(1+irr)i=0\sum_{i=0}^n \frac{cashflow_i}{(1 + irr)^i} = 0

语法

financialInternalRateOfReturn(cashflows[, guess])

参数

  • cashflows — 现金流数组。每个值表示支付(负值)或收入(正值)。Array(Int8/16/32/64)Array(Float*)
  • [, guess] — 可选的内部收益率初始猜测(常量值)(默认 0.1)。Float*

返回值

返回内部收益率或 NaN,如果计算无法收敛、输入数组为空或只有一个元素、所有现金流为零或发生其他计算错误。Float64

示例

简单示例

SELECT financialInternalRateOfReturn([-100, 39, 59, 55, 20])
0.2809484211599611

带猜测的简单示例

SELECT financialInternalRateOfReturn([-100, 39, 59, 55, 20], 0.1)
0.2809484211599611

financialInternalRateOfReturnExtended

引入于:v25.7

计算一系列不规则现金流的扩展内部收益率 (XIRR)。XIRR 是使所有现金流的净现值 (NPV) 等于零的折现率。

XIRR 尝试解决以下方程(ACT_365F 的示例):

i=0ncashflowi(1+rate)(dateidate0)/365=0\sum_{i=0}^n \frac{cashflow_i}{(1 + rate)^{(date_i - date_0)/365}} = 0

数组应按日期升序排列。日期需要是唯一的。

语法

financialInternalRateOfReturnExtended(cashflow, date [, guess, daycount])

参数

  • cashflow — 对应于第二参数中的日期的现金流数组。Array(Int8/16/32/64)Array(Float*)
  • date — 对应于现金流的唯一日期的已排序数组。Array(Date)Array(Date32)
  • [, guess] — 可选。XIRR 计算的初始猜测(常量值)。Float*
  • [, daycount] — 可选的天数计算约定(默认 'ACT_365F')。支持的值:
  • 'ACT_365F' - 实际/365 固定:使用两个日期之间的实际天数除以 365
  • 'ACT_365_25' - 实际/365.25:使用两个日期之间的实际天数除以 365.25 String

返回值

返回 XIRR 值。如果无法执行计算,则返回 NaN。Float64

示例

简单示例

SELECT financialInternalRateOfReturnExtended([-10000, 5750, 4250, 3250], [toDate('2020-01-01'), toDate('2020-03-01'), toDate('2020-10-30'), toDate('2021-02-15')])
0.6342972615260243

带猜测的简单示例

SELECT financialInternalRateOfReturnExtended([-10000, 5750, 4250, 3250], [toDate('2020-01-01'), toDate('2020-03-01'), toDate('2020-10-30'), toDate('2021-02-15')], 0.5)
0.6342972615260243

简单示例(天数计算)

SELECT round(financialInternalRateOfReturnExtended([100000, -110000], [toDate('2020-01-01'), toDate('2021-01-01')], 0.1, 'ACT_365_25'), 6) AS xirr_365_25
0.099785

financialNetPresentValue

引入于:v25.7

计算一系列现金流的净现值 (NPV),假设每个现金流之间的时间间隔相等。

默认变体(start_from_zero = true):

i=0N1valuesi(1+rate)i\sum_{i=0}^{N-1} \frac{values_i}{(1 + rate)^i}

与 Excel 兼容的变体(start_from_zero = false):

i=1Nvaluesi(1+rate)i\sum_{i=1}^{N} \frac{values_i}{(1 + rate)^i}

语法

financialNetPresentValue(rate, cashflows[, start_from_zero])

参数

  • rate — 要应用的折现率。Float*
  • cashflows — 现金流数组。每个值表示支付(负值)或收入(正值)。Array(Int8/16/32/64)Array(Float*)
  • [, start_from_zero] — 可选布尔参数,指示是从周期 0(true)开始计算 NPV,还是从周期 1(false,Excel 兼容)开始。默认:true。Bool

返回值

返回净现值,类型为 Float64。Float64

示例

默认计算

SELECT financialNetPresentValue(0.08, [-40000., 5000., 8000., 12000., 30000.])
3065.2226681795255

与 Excel 兼容的计算

SELECT financialNetPresentValue(0.08, [-40000., 5000., 8000., 12000., 30000.], false)
2838.1691372032656

financialNetPresentValueExtended

引入于:v25.7

计算一系列不规则现金流的扩展净现值 (XNPV)。XNPV 在计算现值时考虑每个现金流的具体时间。

ACT_365F 的 XNPV 方程:

XNPV=i=1ncashflowi(1+rate)(dateidate0)/365XNPV=\sum_{i=1}^n \frac{cashflow_i}{(1 + rate)^{(date_i - date_0)/365}}

数组应按日期升序排列。日期需要是唯一的。

语法

financialNetPresentValueExtended(rate, cashflows, dates[, daycount])

参数

  • rate — 要应用的折现率。Float*
  • cashflows — 现金流数组。每个值表示支付(负值)或收入(正值)。必须至少包含一个正值和一个负值。Array(Int8/16/32/64)Array(Float*)
  • dates — 对应于每个现金流的日期数组。必须与现金流数组大小相同。Array(Date)Array(Date32)
  • [, daycount] — 可选的天数计算约定。支持的值:'ACT_365F'(默认) — 实际/365 固定,'ACT_365_25' — 实际/365.25。String

返回值

返回净现值,类型为 Float64。Float64

示例

基本用法

SELECT financialNetPresentValueExtended(0.1, [-10000., 5750., 4250., 3250.], [toDate('2020-01-01'), toDate('2020-03-01'), toDate('2020-10-30'), toDate('2021-02-15')])
2506.579458169746

使用不同的天数计算约定

SELECT financialNetPresentValueExtended(0.1, [-10000., 5750., 4250., 3250.], [toDate('2020-01-01'), toDate('2020-03-01'), toDate('2020-10-30'), toDate('2021-02-15')], 'ACT_365_25')
2507.067268742502