> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> 财务函数文档

# 财务函数

<Note>
  以下文档由 `system.functions` 系统表生成
</Note>

{/*AUTOGENERATED_START*/}

<div id="financialInternalRateOfReturn">
  ## financialInternalRateOfReturn
</div>

引入版本：v25.7.0

计算按固定时间间隔发生的一系列现金流的内部收益率 (IRR) 。
IRR 是使净现值 (NPV) 等于零时对应的折现率。

IRR 试图求解以下方程：

$$
\sum&#95;{i=0}^n \frac{cashflow_i}{(1 + irr)^i} = 0
$$

**语法**

```sql theme={null}
financialInternalRateOfReturn(cashflows[, guess])
```

**参数**

* `cashflows` — 现金流数组。每个值表示一笔支出 (负值) 或收入 (正值) 。[`Array(Int8/16/32/64)`](/reference/data-types/array) 或 [`Array(Float*)`](/reference/data-types/array)
* `[, guess]` — 内部收益率的可选初始估计值 (常量，默认值为 0.1) 。[`Float*`](/reference/data-types/float)

**返回值**

返回内部收益率；如果计算无法收敛、输入数组为空或仅包含一个元素、所有现金流均为零，或发生其他计算错误，则返回 `NaN`。[`Float64`](/reference/data-types/float)

**示例**

**simple\_example**

```sql title=Query theme={null}
SELECT financialInternalRateOfReturn([-100, 39, 59, 55, 20])
```

```response title=Response theme={null}
0.2809484211599611
```

**带估算的简单示例**

```sql title=Query theme={null}
SELECT financialInternalRateOfReturn([-100, 39, 59, 55, 20], 0.1)
```

```response title=Response theme={null}
0.2809484211599611
```

<h2 id="financialInternalRateOfReturnExtended">
  financialInternalRateOfReturnExtended
</h2>

引入版本：v25.7.0

计算一系列发生在不规则时间间隔上的现金流的扩展内部收益率（XIRR）。XIRR 是使所有现金流的净现值（NPV）等于零的折现率。

XIRR 尝试求解以下方程（以 `ACT_365F` 为例）：

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

数组应按日期升序排列，且日期不得重复。

**语法**

```sql theme={null}
financialInternalRateOfReturnExtended(cashflow, date [, guess, daycount])
```

**参数**

* `cashflow` — 与第二个参数中日期对应的现金流数组。[`Array(Int8/16/32/64)`](/reference/data-types/array) 或 [`Array(Float*)`](/reference/data-types/array)
* `date` — 与现金流对应的已排序唯一日期数组。[`Array(Date)`](/reference/data-types/array) 或 [`Array(Date32)`](/reference/data-types/array)
* `[, guess]` — 可选。XIRR 计算的初始猜测值（常量）。[`Float*`](/reference/data-types/float)
* `[, daycount]` —
  可选的日计数惯例（默认为 'ACT\_365F'）。支持的值：
* 'ACT\_365F' - 实际/365 固定：使用日期间的实际天数除以 365
* 'ACT\_365\_25' - 实际/365.25：使用日期间的实际天数除以 365.25
  [`String`](/reference/data-types/string)

**返回值**

返回 XIRR 值。若无法完成计算，则返回 NaN。[`Float64`](/reference/data-types/float)

**示例**

**simple\_example**

```sql title=Query theme={null}
SELECT financialInternalRateOfReturnExtended([-10000, 5750, 4250, 3250], [toDate('2020-01-01'), toDate('2020-03-01'), toDate('2020-10-30'), toDate('2021-02-15')])
```

```response title=Response theme={null}
0.6342972615260243
```

**simple\_example\_with\_guess**

```sql title=Query theme={null}
SELECT financialInternalRateOfReturnExtended([-10000, 5750, 4250, 3250], [toDate('2020-01-01'), toDate('2020-03-01'), toDate('2020-10-30'), toDate('2021-02-15')], 0.5)
```

```response title=Response theme={null}
0.6342972615260243
```

**simple\_example\_daycount**

```sql title=Query theme={null}
SELECT round(financialInternalRateOfReturnExtended([100000, -110000], [toDate('2020-01-01'), toDate('2021-01-01')], 0.1, 'ACT_365_25'), 6) AS xirr_365_25
```

```response title=Response theme={null}
0.099785
```

<div id="financialNetPresentValue">
  ## financialNetPresentValue
</div>

引入版本：v25.7.0

计算一系列现金流的净现值 (NPV) ，并假定每笔现金流之间的时间间隔相等。

默认 Variant (`start_from_zero` = true) ：

$$
\sum&#95;{i=0}^{N-1} \frac{values_i}{(1 + rate)^i}
$$

与 Excel 兼容的 Variant (`start_from_zero` = false) ：

$$
\sum&#95;{i=1}^{N} \frac{values_i}{(1 + rate)^i}
$$

**语法**

```sql theme={null}
financialNetPresentValue(rate, cashflows[, start_from_zero])
```

**参数**

* `rate` — 要使用的折现率。[`Float*`](/reference/data-types/float)
* `cashflows` — 现金流数组。每个值表示一笔支出 (负值) 或收入 (正值) 。[`Array(Int8/16/32/64)`](/reference/data-types/array) 或 [`Array(Float*)`](/reference/data-types/array)
* `[, start_from_zero]` — 可选的布尔参数，指示 NPV 计算是从周期 `0` (true) 还是周期 `1` (false，兼容 Excel) 开始。默认值：true。[`Bool`](/reference/data-types/boolean)

**返回值**

返回净现值，类型为 Float64。[`Float64`](/reference/data-types/float)

**示例**

**default\_calculation**

```sql title=Query theme={null}
SELECT financialNetPresentValue(0.08, [-40000., 5000., 8000., 12000., 30000.])
```

```response title=Response theme={null}
3065.2226681795255
```

**Excel 兼容计算**

```sql title=Query theme={null}
SELECT financialNetPresentValue(0.08, [-40000., 5000., 8000., 12000., 30000.], false)
```

```response title=Response theme={null}
2838.1691372032656
```

<h2 id="financialNetPresentValueExtended">
  financialNetPresentValueExtended
</h2>

引入版本：v25.7.0

计算一系列发生在不规则时间间隔上的现金流的扩展净现值（XNPV）。XNPV 在计算现值时会考虑每笔现金流的具体发生时间。

`ACT_365F` 的 XNPV 计算公式：

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

数组应按日期升序排列，且日期不得重复。

**语法**

```sql theme={null}
financialNetPresentValueExtended(rate, cashflows, dates[, daycount])
```

**参数**

* `rate` — 所应用的折现率。[`Float*`](/reference/data-types/float)
* `cashflows` — 现金流数组。每个值表示一笔支出（负值）或收入（正值），必须至少包含一个正值和一个负值。[`Array(Int8/16/32/64)`](/reference/data-types/array) 或 [`Array(Float*)`](/reference/data-types/array)
* `dates` — 与每笔现金流对应的日期数组，大小必须与 cashflows 数组相同。[`Array(Date)`](/reference/data-types/array) 或 [`Array(Date32)`](/reference/data-types/array)
* `[, daycount]` — 可选的日计数惯例。支持的值：`'ACT_365F'`（默认）— 实际天数/365 固定，`'ACT_365_25'` — 实际天数/365.25。[`String`](/reference/data-types/string)

**返回值**

以 Float64 类型返回净现值。[`Float64`](/reference/data-types/float)

**示例**

**基本用法**

```sql title=Query theme={null}
SELECT financialNetPresentValueExtended(0.1, [-10000., 5750., 4250., 3250.], [toDate('2020-01-01'), toDate('2020-03-01'), toDate('2020-10-30'), toDate('2021-02-15')])
```

```response title=Response theme={null}
2506.579458169746
```

**使用不同的日计数惯例**

```sql title=Query theme={null}
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')
```

```response title=Response theme={null}
2507.067268742502
```

<div id="related-resources">
  ## 相关资源
</div>

* [ClickHouse 金融函数视频](https://www.youtube.com/watch?v=BePLPVa0w_o)
