Методика расчётов
Здесь описано, как калькулятор получает каждую цифру: какие формулы применяются, как округляются суммы и почему результат может отличаться от банковского на копейки. Ядро вычислений покрыто тестами: эталонные графики, инвариантные проверки на случайных наборах параметров и граничные случаи.
Денежные величины
Все суммы хранятся и обрабатываются как целые числа копеек. Числа с плавающей точкой для хранения денег не используются: они дают ошибку уже на третьем знаке и накапливают её на длинном графике.
Промежуточные вычисления ведутся в обычных числах, но результат каждого шага округляется до целых копеек математическим округлением: 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 итераций.
Если платёж меньше процентов за первый период, кредит не будет погашен никогда — расчёт срока в этом случае возвращает ошибку с понятным объяснением.
Что калькулятор не считает
Не моделируются: страховые платежи (кроме разовой комиссии при выдаче), налоговый вычет, материнский капитал, рефинансирование, плавающие и субсидированные ставки, пени и штрафы.
Кредитный договор может содержать особые условия округления и начисления, из-за которых график банка отличается на несколько копеек. Если расхождение больше, напишите нам — форма обратной связи не запрашивает суммы и ставки.
Расчёт не сходится с вашим банком?
Расхождение обычно составляет копейки. Если оно больше, проверьте метод начисления процентов и дату первого платежа: когда между выдачей и первым платежом больше или меньше месяца, первый платёж отличается от остальных.
Сообщить о расхождении →