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

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

8 финансовых функций для инвестора. Все возвращают дробь (0.05 = 5 %). UI умножает на 100 при отображении в поле «Процент» или KPI с форматом процентов.

roi(profit, cost)

Доходность как (profit − cost) / cost.

roi(sale_price, purchase_price) // ROI продажи
roi(monthly_rent * 12, purchase_price) // годовая доходность от аренды

Возвращает null, если cost = 0.

Пример инвестора. Купили квартиру за 5 000 000 ₽. Продали за 6 200 000 ₽. ROI = 0.24 = 24 %.

cagr(start, end, years)

Среднегодовая доходность (Compound Annual Growth Rate).

cagr(initial_value, current_value, years_held)

Формула: (end / start)^(1/years) − 1.

Возвращает null, если start ≤ 0 или years ≤ 0. Если end ≤ 0−1 (полная потеря).

Пример инвестора. Портфель акций 5 лет назад стоил 1 000 000 ₽, сейчас — 1 800 000 ₽. CAGR = 0.124 = 12.4 % в год.

npv(rate, cf0, cf1, …)

Чистая приведённая стоимость денежного потока. Соглашение Excel: cf0 — на момент t = 0 без дисконта.

npv(0.10, -1000000, 200000, 300000, 400000, 500000)

Пример читается так: вложили 1 000 000 ₽ сегодня, получаете 200/300/400/500 тыс ₽ в годы 1-4 при ставке дисконтирования 10%.

Если значение положительное — проект выгодный при заданной ставке.

irr(cf0, cf1, …)

Внутренняя норма доходности — ставка, при которой NPV = 0.

irr(-1000000, 200000, 300000, 400000, 500000)

Решается итерациями (Ньютон-Рафсон). Возвращает null, если:

  • меньше двух cashflows;
  • нет смены знака между cashflows (нет действительного решения);
  • не сходится за 100 итераций (редкое exotic-условие).

Пример инвестора. Те же потоки — IRR покажет, под какой годовой ставкой ваш проект эквивалентен банковскому вкладу.

pmt(rate, n, principal)

Платёж по аннуитетному кредиту: (principal × rate) / (1 − (1 + rate)^−n).

  • rate — ставка за период (например, для месяца — годовая / 12).
  • n — количество периодов (для 10-летней ипотеки в месяцах — 120).
  • principal — тело кредита.

Возвращает положительное число — сумма, уходящая из кармана каждый период.

pmt(0.07 / 12, 10 * 12, 3000000)

Это месячный платёж по ипотеке 3 000 000 ₽ на 10 лет под 7 % годовых.

Возвращает null, если n ≤ 0. Если rate = 0 — равные доли тела.

cap_rate(net_income, price)

Cap rate = чистый годовой доход / цена. Базовый показатель доходности недвижимости.

cap_rate(monthly_rent * 12 - annual_expenses, purchase_price)

Возвращает null при price = 0.

Пример инвестора. Квартира 5 000 000 ₽, годовая аренда 600 000 ₽, расходы 100 000 ₽. Cap rate = 0.10 = 10 %.

gross_yield(annual_rent, price)

Валовая доходность — годовая аренда / цена, без учёта расходов.

gross_yield(monthly_rent * 12, purchase_price)

Простой быстрый показатель: насколько объект окупается на брутто-уровне.

net_yield(net_rent, price)

Чистая доходность — годовая аренда после расходов / цена.

net_yield(monthly_rent * 12 - annual_expenses, purchase_price)

Практически эквивалентно cap_rate. Используйте то, что у вас в терминологии привычнее.

Граничные случаи

  • Деление на 0 в знаменателе → null.
  • Отрицательное start в cagrnull.
  • irr не сошёлсяnull. Если потоки не имеют смены знака — null.
  • pmt с n = 0null.

Частые ошибки

  • Складывают rate за год и за месяц. В pmt ставка должна быть за период. Для месячных платежей — annual_rate / 12.
  • Считают cap_rate от валовой аренды, забывая расходы. Тогда это уже gross_yield, а не cap_rate. Будьте внимательны к названию.
  • Используют roi для многопериодного проекта. ROI — простая разница «было/стало». Для многолетних — cagr, для денежных потоков — npv / irr.
  • Ожидают, что вернётся «5», а получают 0.05. Все финансовые функции возвращают дробь. Умножайте на 100 при отображении (или просто используйте формат «процент» в поле/виджете).

Что дальше