Работа с NumPy

NumPy, пособие для новичков. Часть 1

NPV - Чистый дисконтированный доход

Чистый дисконтированный доход (NPV, Net Present Value, чистая текущая стоимость, чистая дисконтированная стоимость)
\begin{equation} NPV = \sum \limits_{t=1}^{N} \frac{cashflow_t}{(1 + rate)^t} - IC \label{eq:npv} \end{equation}
import numpy as np
cashflows = [-45.45, 50]
npv = np.npv(0.1, cashflows)
print(round(50/(1+0.1), 2))
print(round(npv, 2))
>> 45.45
>> 0.0
Первый параметр это ставка процента(ставка дисконтирования). Ставка дисконтирования указывается в том же временном измерении, что и денежный поток. Т.е. если у нас платежи раз в год, то и ставка в годовых, если раз в квартал, то и ставка квартальная. Второй параметр - это массив представляющий денежный поток в момент времени t. Первое значение в массиве по умолчанию - это первоначальные инвестиции, поэтому они идут с отрицательным знаком. Документация.

IRR (internal rate of return) Внутренняя норма доходности

Это процентная ставка, при которой чистая приведённая стоимость (чистый дисконтированный доход — NPV) равна 0. NPV рассчитывается на основании потока платежей, дисконтированного к сегодняшнему дню. Перепишем формулу \eqref{eq:npv} в следующем виде:
\begin{equation} NPV = \sum \limits_{t=1}^{N} \frac{cashflow_t}{(1 + IRR)^t} - IC = 0 \\ или \\ IC = \sum \limits_{t=1}^{N} \frac{cashflow_t}{(1 + IRR)^t} \label{eq:irr} \end{equation}
import numpy as np
cashflows = [-45.45, 50]
irr = round(np.irr(cashflows), 2)
print(irr)
>> 0.1

Платеж по кредиту

Мы взяли кредит в банке в размере 2000000 рублей на 5 лет под 11% годовых. Сколько нам нужно выплачивать ежемесячно? Можно подсчитать воспользовавшись функцией pmt.
import numpy as np
kredit = 2000000
rate = 0.11/12 # приводим к месячным процентам
period = 5*12 # срок приводим к месяцам
payment = np.pmt(rate, period, kredit)
print(round(payment,2))
>> -43484.85
Получилось, что нужно будет выплачивать по 43484 рубля и 85 копеек ежемесячно.