Методика расчётов

Здесь описано, как калькулятор получает каждую цифру: какие формулы применяются, как округляются суммы и почему результат может отличаться от банковского на копейки. Ядро вычислений покрыто тестами: эталонные графики, инвариантные проверки на случайных наборах параметров и граничные случаи.

Денежные величины

Все суммы хранятся и обрабатываются как целые числа копеек. Числа с плавающей точкой для хранения денег не используются: они дают ошибку уже на третьем знаке и накапливают её на длинном графике.

Промежуточные вычисления ведутся в обычных числах, но результат каждого шага округляется до целых копеек математическим округлением: 0,5 копейки — вверх. Перед округлением значение нормализуется до 15 значащих цифр, чтобы двоичная погрешность вида 12345,499999999998 не превращалась в лишнюю копейку.

Начисление процентов за период

Базовый метод — по фактическому числу дней. Проценты за период равны остатку долга, умноженному на годовую ставку и на долю дней периода в году.

Число дней в периоде — фактическое количество календарных дней между предыдущей датой платежа (для первого платежа — датой выдачи) и текущей датой платежа. База — 365 или 366 дней в зависимости от того, високосный ли год. Если период пересекает границу года, он разбивается на части, и каждая считается со своей базой.

Альтернативный метод — равными месяцами: за любой период начисляется ровно 1/12 годовой ставки, независимо от того, сколько в нём дней.

Проценты = Остаток × (Ставка / 100) × ДниВПериоде / ДнейВГоду

Если платёж вносится между датами графика, проценты за неполный период при методе «равными месяцами» делятся пропорционально дням.

Аннуитетный платёж

Размер платежа считается по классической формуле аннуитета, где i — месячная ставка, n — число месяцев. При нулевой ставке платёж равен сумме кредита, делённой на срок.

Результат округляется до целых копеек вверх: банки округляют платёж вверх, чтобы гарантировать погашение к концу срока.

Размер платежа рассчитывается по этой формуле независимо от выбранного метода начисления. Расхождение между расчётным платежом и фактически начисленными процентами поглощается частью основного долга, а последний платёж корректируется так, чтобы остаток стал ровно нулевым.

Платёж = Сумма × i / (1 − (1 + i)^(−n)),  i = Ставка / 100 / 12

Дифференцированный платёж

Часть основного долга в каждом платеже постоянна и равна сумме кредита, делённой на число месяцев, с округлением вниз до копейки. Накопленная за счёт округления разница добавляется к последнему платежу.

Проценты начисляются по общим правилам на остаток долга, поэтому платёж уменьшается от месяца к месяцу.

Платёж = Сумма / n + Проценты на остаток

Даты платежей и производственный календарь

Плановая дата платежа — то же число месяца, что и день платежа. Если в месяце меньше дней (например, 31-е в феврале), берётся последний день месяца, а в следующем месяце дата возвращается на своё число.

К плановой дате применяется правило переноса с нерабочего дня: на следующий рабочий день (по умолчанию), на предыдущий рабочий или без переноса. Используется производственный календарь России: нерабочие праздничные дни, перенесённые выходные и рабочие субботы.

Перенос даты меняет число дней в периоде, а значит, и сумму процентов в следующем расчёте.

Для годов, на которые постановление Правительства о переносах ещё не опубликовано, используются нерабочие праздничные дни по статье 112 ТК РФ. Интерфейс отмечает такие расчёты примечанием. Если данных о годе нет совсем, нерабочими считаются только субботы и воскресенья.

Досрочное погашение

Досрочный платёж, попадающий в дату регулярного платежа, применяется после начисления процентов и списания регулярного платежа — вся его сумма идёт в тело долга.

Досрочный платёж между датами платежей: сначала начисляются проценты на остаток за дни с предыдущей даты платежа, они гасятся из суммы досрочки, остаток идёт в тело долга. Следующий регулярный платёж рассчитывается уже от даты досрочки.

В режиме «сократить срок» размер регулярного платежа не меняется, а срок уменьшается за счёт более быстрого погашения остатка. В режиме «уменьшить платёж» дата окончания кредита остаётся исходной, а платёж пересчитывается по формуле аннуитета от нового остатка на оставшееся число периодов; для дифференцированного графика пересчитывается постоянная часть основного долга.

Если сумма досрочки превышает остаток долга вместе с начисленными процентами, кредит закрывается, а излишек показывается отдельно. Регулярные досрочки разворачиваются в набор разовых до начала расчёта.

Полная стоимость кредита

ПСК рассчитывается по методике статьи 6 Федерального закона № 353-ФЗ «О потребительском кредите (займе)». Решается уравнение приведённой стоимости денежных потоков: выдача входит со знаком минус, платежи — со знаком плюс.

Базовый период для ежемесячных платежей — месяц, число базовых периодов в году ЧБП = 12. Величина qk — число полных базовых периодов от выдачи до k-го потока, ek — остаток срока в долях базового периода. Уравнение решается методом бисекции на интервале от 0 до 5 с точностью 1e-9, результат округляется до трёх знаков.

Разовые комиссии при выдаче уменьшают сумму, фактически полученную заёмщиком, и потому увеличивают ПСК.

Σ ДПk / ((1 + ek × i) × (1 + i)^qk) = 0,   ПСК = i × ЧБП × 100

В техническом задании формула приведена с опечаткой (ЧБП внутри степени, переставленные qk и ek). Реализована формула в редакции закона — иначе результат не совпадал бы с ПСК из кредитного договора.

Обратные расчёты

Доступная сумма кредита по платежу, ставке и сроку и необходимый срок по сумме, ставке и платежу считаются аналитически — из той же формулы аннуитета.

Фактическая ставка по сумме, сроку и платежу находится методом бисекции на интервале от 0 до 200 % годовых с точностью 0,001 процентного пункта и ограничением в 100 итераций.

Если платёж меньше процентов за первый период, кредит не будет погашен никогда — расчёт срока в этом случае возвращает ошибку с понятным объяснением.

Что калькулятор не считает

Не моделируются: страховые платежи (кроме разовой комиссии при выдаче), налоговый вычет, материнский капитал, рефинансирование, плавающие и субсидированные ставки, пени и штрафы.

Кредитный договор может содержать особые условия округления и начисления, из-за которых график банка отличается на несколько копеек. Если расхождение больше, напишите нам — форма обратной связи не запрашивает суммы и ставки.

Расчёт не сходится с вашим банком?

Расхождение обычно составляет копейки. Если оно больше, проверьте метод начисления процентов и дату первого платежа: когда между выдачей и первым платежом больше или меньше месяца, первый платёж отличается от остальных.

Сообщить о расхождении →