Финансовые функции
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вcagr→null. irrне сошёлся →null. Если потоки не имеют смены знака —null.pmtсn = 0→null.
Частые ошибки
- Складывают rate за год и за месяц. В
pmtставка должна быть за период. Для месячных платежей —annual_rate / 12. - Считают
cap_rateот валовой аренды, забывая расходы. Тогда это ужеgross_yield, а неcap_rate. Будьте внимательны к названию. - Используют
roiдля многопериодного проекта. ROI — простая разница «было/стало». Для многолетних —cagr, для денежных потоков —npv/irr. - Ожидают, что вернётся «5», а получают
0.05. Все финансовые функции возвращают дробь. Умножайте на 100 при отображении (или просто используйте формат «процент» в поле/виджете).