Не так давно вступил в силу Федеральный закон №353, обязывающий финансовые организации раскрывать информацию о так называемой «Полной стоимости кредита(займа)» (далее — ПСК).
В этой статье (в принципе относящейся только к трудящимся в финансовой сфере), я бы хотел привести пример расчета ПСК. Возможно, кому-то пригодится.
Важно! Не так давно законодатели внести изменения в формулу, которая вступает в силу только с 1 сентября 2014. Все изложенное далее пригодно только для новой формулы. Статья описывает исключительно техническую реализацию расчета ПСК в соответствии с нормами закона.
Еще важнее! Вся приведенная ниже информация актуальна для случая, когда кредит выдается ОДНИМ платежом, т.е. заемщик получает денежные средства один раз, а возвраты происходят по заранее определенному графику платежей. Такой вариант покрывает 99% выдаваемых кредитов (кредитные карты не в счет).
Число i вычисляется путем решения следующего уравнения:
где:
Исходящие данные: значение ПСК (число).
В примерах взят график для кредита в 100 000 рублей на 3 месяца по ставке 12% годовых. Дата выдачи — 1 сентября 2014:
Если у вас есть замечания или вы нашли ошибку — прошу сообщать, буду благодарен. Самое опасное, что может быть — изначально неверная трактовка текста закона.
UPD Онлайн-калькулятор ПСК сuser-friendly вменяемым интерфейсом
В этой статье (в принципе относящейся только к трудящимся в финансовой сфере), я бы хотел привести пример расчета ПСК. Возможно, кому-то пригодится.
Важно! Не так давно законодатели внести изменения в формулу, которая вступает в силу только с 1 сентября 2014. Все изложенное далее пригодно только для новой формулы. Статья описывает исключительно техническую реализацию расчета ПСК в соответствии с нормами закона.
Еще важнее! Вся приведенная ниже информация актуальна для случая, когда кредит выдается ОДНИМ платежом, т.е. заемщик получает денежные средства один раз, а возвраты происходят по заранее определенному графику платежей. Такой вариант покрывает 99% выдаваемых кредитов (кредитные карты не в счет).
Собственно, вот сам зверь:

Понимаем значения терминов
ПСК определяется как произведение 3 величин – i, ЧБП и числа 100. Разберем используемые термины и обозначения:Что такое БП (базовый период)
БП по договору потребительского кредита (займа) — стандартный временной интервал, который встречается с наибольшей частотой в графике платежей по договору потребительского кредита (займа). Если в графике платежей по договору потребительского кредита (займа) отсутствуют временные интервалы между платежами продолжительностью менее одного года или равные одному году, то БП – один год.
Фактически БП – это наиболее часто встречающийся временной интервал между платежами. Если в графике платежей отсутствуют повторяющиеся временные интервалы и иной порядок не установлен Банком России, базовым периодом признается временной интервал, который является средним арифметическим для всех периодов, округленным с точностью до стандартного временного интервала. Стандартным временным интервалом признаются день, месяц, год, а также определенное количество дней или месяцев, не превышающее по продолжительности одного года. Таким образом вы можете определить свой БП. Если платежи ежемесячные, то БП=365/12~=30
Что такое ЧБП (число базовых периодов в календарном году)
Определение в законе весьма размытое, но как я понимаю – это количество базовых периодов, которые «влезают» в один календарный год, т.е.:
- Для стандартного графика платежей с ежемесячными выплатами: ЧБП = 12
- Ежеквартальные выплаты: ЧБП=4
- Выплаты раз в год или реже: ЧБП=1
- Если график платежей хитрый: например предусмотрено сначала 2 выплаты раз в квартал, а затем 6 выплат раз в месяц, затем 3 выплаты раз в день, то базовый период – 1 месяц. А ЧБП=12 (12 БП за календарный год).
Что такое i (процентная ставка базового периода, выраженная в десятичной форме)
Это невозможно понять (по крайней мере мне). Возможно, в определении числа i есть какой-то смысл, но этот смысл уловить интуитивно не представляется возможным. Как считать i — разберем в следующем разделе.
Как считать i
Оставим на потом попытки понять «физический» смысл числа i, и дадим ему такое определение:Число i вычисляется путем решения следующего уравнения:

- m – количество денежных потоков, что равно количеству платежей в графике платежей плюс один (еще один платеж возникает из-за первого платежа – выдачи кредита).
- ДПк – размер к-го денежного потока (выдача кредита со знаком «минус», возвраты со знаком «плюс»).
- Qк — количество полных базовых периодов с момента выдачи кредита до k-го денежного потока. Qк можно вычислить по формуле:
Qк=floor[ (ДПк-ДП1)/БП ], где
- ДПк – дата к-го денежного потока,
- ДП1 – дата первого денежного потока (т.е. дата выдачи),
- БП – срок базового периода,
- floor[ ] – округление вниз до целого.
- Eк — здесь сразу напишем формулу, чтобы ваш мозг не взорвался от формулировки в законе:
Ek=mod[ (ДПк-ДП1) /БП ]/БП, где mod – остаток от деления
Алгоритм расчета ПСК
Входящие данные: два массива. Ключ – номер денежного потока, значения – даты платежа и сумма платежа.Исходящие данные: значение ПСК (число).
Порядок расчета:
- Вычисляем ЧБП(число базовых периодов). Число базовых периодов – сколько таких периодов «влезет» в 365 дней, т.е. ЧБП=floor[ 365/БП ].
- Для каждого k-го платежа считаем ДПk, Qk, Ek.
- Методами приближенного вычисления в точности до двух знаков после запятой считаем i.
- Умножаем ЧБП*i*100.
Код!
Есть готовое решение на javascript, а также на VBA (будет даже excel-файл для расчетов).Зачем VBA и Excel?
Если вдруг у вас случится пожар и ничего не будет работать 1 сентября 2014 года, то самое разумное — это разослать excel-табличку по местам заключения договоров, чтобы можно было рассчитывать ПСК хотя бы так в первое время.
В примерах взят график для кредита в 100 000 рублей на 3 месяца по ставке 12% годовых. Дата выдачи — 1 сентября 2014:
Ключ | Дата денежного потока | Сумма денежного потока |
0 | 01.09.2014 | -100 000 |
1 | 01.10.2014 | 34 002,21 |
2 | 01.11.2014 | 34 002,21 |
3 | 01.12.2014 | 34 002,21 |
Решение на javascript
код
Демо на jsfiddle: jsfiddle.net/exmmo/m5kbb0up/7function psk() {
//входящие данные - даты платежей
var dates = [
new Date(2014, 8, 01),
new Date(2014, 9, 01),
new Date(2014, 10, 01),
new Date(2014, 11, 01)];
//входящие данные - суммы платежей
var sum = [-100000,
34002.21,
34002.21,
34002.21 ];
var m = dates.length; // число платежей
//Задаем базвый период bp
bp=30;
//Считаем число базовых периодов в году:
var cbp = Math.round(365 / bp);
//заполним массив с количеством дней с даты выдачи до даты к-го платежа
var days = [];
for (k = 0; k < m; k++) {
days[k] = (dates[k] - dates[0]) / (24 * 60 * 60 * 1000);
}
//посчитаем Ек и Qк для каждого платежа
var e = [];
var q = [];
for (k = 0; k < m; k++) {
e[k] = (days[k] % bp) / bp;
q[k] = Math.floor(days[k] / bp);
}
//Втупую методом перебора начиная с 0 ищем i до максимального приблежения с шагом s
var i = 0;
var x = 1;
var x_m = 0;
var s = 0.000001;
while (x > 0) {
x_m = x;
x = 0;
for (k = 0; k < m; k++) {
x = x + sum[k] / ((1 + e[k] * i) * Math.pow(1 + i, q[k]));
}
i = i + s;
}
if (x > x_m) {
i = i - s;
}
//считаем ПСК
var psk = Math.floor(i * cbp * 100 * 1000) / 1000;
//выводим ПСК
alert("ПСК = " + psk + " %");
}
Решение на VBA+excel
Код
Демо в Excel+VBA: yadi.sk/i/oRTa8Id-a6UfVВ столбце А, начиная с 2ой строки находятся даты денежных потоков.
В столбце B, начиная с 2ой строки находятся суммы денежных потоков.
В столбце B, начиная с 2ой строки находятся суммы денежных потоков.
Sub psk()
Dim dates()
Columns("A:A").Select
dates() = Application.Transpose(Range(ActiveCell, Cells(Rows.count, ActiveCell.Column).End(xlUp)))
Dim summa()
Columns("B:B").Select
summa = Application.Transpose(Range(ActiveCell, Cells(Rows.count, ActiveCell.Column).End(xlUp)))
Dim m As Integer
m = UBound(dates)
bp = 30
cbp = Round(365 / bp)
ReDim Days(m)
For k = 2 To m
Days(k) = dates(k) - dates(2)
Next
ReDim e(m)
ReDim q(m)
For k = 2 To m
q(k) = Days(k) \ bp
e(k) = (Days(k) Mod bp) / bp
Next
i = 0
x = 1
x_m = 0
s = 0.000001
Do While x > 0
x_m = x
x = 0
For k = 2 To m
x = x + summa(k) / ((1 + e(k) * i) * ((1 + i) ^ q(k)))
Next
i = i + s
Loop
If x > x_m Then
i = i - s
End If
psk = Round(i * cbp, 5)
Cells(3, 7).Value = psk
End Sub
Заключение
Код далек от совершенства, можно даже сказать, что он убогий. Например, приближенное вычисление выполняется самым глупым из известных человечеству способом. Прошу понять и простить, в текущей ситуации времени на написание чего-то презентабельного категорически не хватает. Виноват, исправлюсь.Если у вас есть замечания или вы нашли ошибку — прошу сообщать, буду благодарен. Самое опасное, что может быть — изначально неверная трактовка текста закона.
UPD Онлайн-калькулятор ПСК с