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

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

Примечание

Приведённая ниже документация сгенерирована из системной таблицы system.functions

financialInternalRateOfReturn

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

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

IRR определяется как решение следующего уравнения:

\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

простой_пример_с_начальным_приближением

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

financialInternalRateOfReturnExtended

Добавлено в версии: v25.7.0

Вычисляет расширенную внутреннюю норму доходности (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' - Actual/365 Fixed: использует фактическое количество дней между датами, делённое на 365
  • 'ACT_365_25' - Actual/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.0

Вычисляет чистую приведённую стоимость (Net Present Value, NPV) серии денежных потоков, предполагая, что временные интервалы между денежными потоками равны.

Вариант по умолчанию (start_from_zero = true):

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

Вариант, совместимый с Excel (start_from_zero = false):

\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_совместимое_вычисление

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

financialNetPresentValueExtended

Введено в версии: v25.7.0

Вычисляет расширенную чистую приведённую стоимость (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' (по умолчанию) — Actual/365 Fixed, 'ACT_365_25' — Actual/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