Перейти к основному содержимому
Перейти к основному содержимому

Финансовые функции

financialInternalRateOfReturn

Введено в: v25.7

Вычисляет внутреннюю норму доходности (IRR) для серии денежных потоков, происходящих через регулярные интервалы. 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

Примеры

simple_example

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

simple_example_with_guess

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

Примеры

simple_example

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

simple_example_with_guess

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

simple_example_daycount

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] — Необязательный логический параметр, указывающий, следует ли начинать расчет NPV с периода 0 (true) или с периода 1 (false, совместимый с Excel). По умолчанию: true. Bool

Возвращаемое значение

Возвращает чистую приведенную стоимость в виде значения Float64. Float64

Примеры

default_calculation

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

excel_compatible_calculation

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

financialNetPresentValueExtended

Введено в: v25.7

Вычисляет расширенную чистую приведенную стоимость (XNPV) для серии денежных потоков, происходящих в нерегулярные интервалы. XNPV учитывает конкретное время каждого денежного потока при вычислении приведенной стоимости.

Уравнение XNPV для ACT_365F:

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 — Массив дат, соответствующий каждому денежному потоку. Должен иметь такой же размер, как массив cashflows. Array(Date) или Array(Date32)
  • [, daycount] — Необязательная конвенция учета дней. Поддерживаемые значения: 'ACT_365F' (по умолчанию) — Фактические/365 фиксированные, 'ACT_365_25' — Фактические/365.25. String

Возвращаемое значение

Возвращает чистую приведенную стоимость в виде значения Float64. Float64

Примеры

Basic usage

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

Using different day count convention

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