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

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

Примечание

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

financialInternalRateOfReturn

Добавлена в: v25.7

Вычисляет внутреннюю норму доходности (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

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' - 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

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