Как я играл в банк

в 5:31, , рубрики: just for fun, банки, кредиты, Финансы в IT-индустрии

Привет!
Лето, все в отпуске. У всех расходы. Где взять денег? У банка!
Только за этот июль крупнейший банк России выдал кредитов физическим лицам на 73 545 493 тыс. руб. Если верить этой статье, то средний размер потребительского кредита около 140 тыс. руб. Выходит, банк умудрился за месяц выдать кредит более чем полумиллиону человек. Конечно, в этом банке используют скоринговые системы.
Я узнал про скоринговые системы пару лет назад и был потрясен. Сама идея, что бездушная машина может принимать решение о выдаче кредита на основе статистических данных, не выходила из головы. Я захотел поиграть в банк и проверить, выдаст ли компьютер кредиты моим друзьям, just for fun. Настоящие скоринговые системы я никогда не видел, но решил, что это и неважно, напишу сам.
Сказано — сделано.
Осторожно, много изображений!

Вступление

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

Программа написана 2 года назад, за 2 недели, на C# + MSSQL.
Сейчас случайно откопал ее и решил показать хабрасообществу. А вдруг какой-нибудь мелкий банк купит?
Открыл код, испугался, добавил немножко многопоточности и закрыл.
Исходники буду высылать только по личной просьбе. Не потому что жадный, а потому что стыдно.
Как я играл в банк
SQL-запросы прямо в обработчиках — это ужасно, я знаю. Но доделывать неинтересно, уже наигрался.

Разработка

Алгоритм с точки зрения клиента примерно такой:

  1. Клиент заполняет анкету с вариантами ответов.
  2. Далее выбирает сумму кредита, в базе данных создается заявка.
  3. Система считает баллы за выбранные ответы и определяет, выдать кредит или нет.
  4. Если кредит одобрен, в базе данных создается договор и таблица платежей.
  5. Клиент выполняет платежи.
  6. Когда накопится статистика, можно посмотреть, какие критерии клиента влияют на его платежеспособность.
  7. ???????
  8. PROFIT!

Значит, для начала нужна анкета, которая по-умному называется «скоринговая карта».
На сайтах 3 крупнейших российских банков были найдены анкеты для получения потребительских кредитов. Собираем из трех одну, распечатываем и создаем экспертную комиссию. Были пойманы 15 человек, этого оказалось достаточно. Эксперт оценивает каждый критерий скоринговой карты в диапазоне от 0 до 100 баллов. Также есть следующие варианты:

  • -1 балл — ответ нестандартный и оценивается кредитным специалистом.
  • -10 — отказ в кредите.

Затем находится средний балл за каждый критерий и получается итоговая анкета.

Показатель Значение показателя Балл
Фамилия -1
Имя -1
Отчество -1
Дата рождения -1
Место рождения -1
Пол -1
Документ, подтверждающий личность -1
Серия, номер -1
Кем выдан -1
Дата выдачи -1
Телефон -1
Адрес -1
Возраст Менее 20 лет 8
20-25 лет 21
25-30 лет 36
30-35 лет 53
35-50 лет 60
50-60 лет 37
60-65 лет 15
Больше 65 лет -10
Проживание Собственное жилье 47
Аренда жилья 13
Общежитие 8
У родственников 10
Воинская часть 9
Другое (уточните) -1
Гражданство РФ 43
Другое (являюсь резидентом РФ) (уточните) 5
Не являюсь резидентом РФ -10
Семейное положение Холост (не замужем) 40
Женат (замужем) 65
Женат (замужем) но живет раздельно 26
В разводе 29
Вдовец (вдова) 34
Наличие детей Нет детей 66
Один 57
Два 48
Три 36
Более трех 24
Наличие иждивенцев Нет 66
Один 57
Два 48
Три 36
Более трех 24
Уровень образования Ниже среднего 11
Среднее 21
Среднее специальное 33
Незаконченное высшее 39
Высшее 58
Несколько высших 77
Ученая степень 84
Занимаемая должность (позиция) Руководитель (дир., зам.дир., гл. бух.) 94
ИП 92
Госслужащий 47
Военнослужащий 56
Специалист 46
Спортсмен 30
Рабочий 32
Студент (неработающий) 9
Пенсионер (неработающий) 8
Безработный 0
Количество мест работы за последние 3 года Одно 52
Два 38
Три 21
Более трех 9
Стаж на данном месте работы Менее 1 года 7
До 3 лет 24
До 5 лет 40
Более 5 лет 56
Общий стаж работы Менее 1 года 10
До 3 лет 20
До 10 лет 37
Более 10 лет 62
Вид деятельности организации Финансы, банки, страхование 37
Консалтинговые услуги 32
Строительство 39
Органы власти и управления 42
Промышленность и машиностроение 37
Инофрмационные технологии/телекоммуникации 38
Оптовая и розничная торговля 35
Транспорт 30
Туризм 36
Охранная деятельность 34
Образование 32
Медицина 30
Наука 33
Вооруженные силы 31
Социальная сфера 21
Другие отрасли (уточните) -1
Среднемесячные доходы -1
Среднемесячные расходы -1
Собственность недвижимого имущества Гараж 38
Квартира 58
Дом 65
Дача 51
Земельный участок 63
Другое (уточните) -1
Наличие транспортного средства Наименование, марка, год выпуска (уточните) -1
Нет транспортного средства 0

Эта анкета заносится в систему.

Как я играл в банк

Вообще, обязательных вопросов всего 2 — «Среднемесячные доходы» и «Среднемесячные расходы». Без них нет смысла в кредитовании вообще. Остальные вопросы можно изменять, удалять, или добавлять свои.

Кнопка «Сортировать» определит максимальный и минимальный балл скоринговой карты, а также определит тип вопроса.
При прохождении анкеты элементы создаются автоматически. Если у вопроса один ответ, он будет отображаться как поле, если больше 1 ответа, он превращается в выпадающий список. Так выглядит анкета с точки зрения клиента.

Как я играл в банк

А это клиент указал наличие транспортного средства, и описал его. Кредитный специалист оценил в баллах данный критерий.

Как я играл в банк

Оценка системой анкеты.

Как я играл в банк

Чистый среднемесячный доход — это разница между доходами и расходами. Для повышения гарантии платежа, в программе учитывается понижающий коэффициент платежа от чистой прибыли, например 0.7. Это значит, если клиент указывает 100 рублей чистой прибыли в месяц, банк рассчитывает до 70 рублей ежемесячного платежа. Чистый доход умножается на данный коэффициент. Коэффициент можно изменять в настройках.

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

Как я играл в банк

Клиент хочет получить 230 000 рублей со сроком выплаты 24 месяца дифференцированными платежами под 22,5 процента. За 24 месяца клиент выплатит 283 906 рублей.

Как я играл в банк

Вот график платежей.

Как я играл в банк

Потными от волнения руками нажимается кнопка «Оформить». Первый платеж клиента самый большой, он составляет 13 896 рублей. Месячная платежеспособность клиента определена в 14 611 рублей, поэтому банк согласен выдать кредит.

Как я играл в банк

Ура! Если кредит одобрен, создаются заявка, договор и таблица платежей.

Как я играл в банк

Обратите внимание на статус — клиент плохой. Статусов всего 2 — хороший и плохой. Почему плохой, клиент же только что взял кредит? Дело в том, что первый платеж должен поступить уже сегодня.

Как я играл в банк

Система определяет статус клиента по таблице платежей. Для каждого платежа указана дата. Определяются платежи, которые на сегодняшний день уже должны быть оплачены. Клиент признается плохим, если количество невыплат

  • ≥ 1/3 от всех платежей по договору, или
  • ≥ 4 (задается в настройках).

Дальше в дело должны вступать служба безопасности банка, коллекторы и т.п., но они в программе не предусмотрены.
Кнопка «Оплатить» поможет изменить состояние платежа.

Как я играл в банк

Платеж оплачен, транзакция прошла!
Если честно, то номера счетов, договоров, заявок и транзакции платежей генерируются случайным образом, и для работы системы не нужны вообще. Но я же солидный банк!
Зато клиент стал хорошим.

Как я играл в банк

Грязный хак — можно хорошего клиента сделать плохим, отменив его платежи.

Статистика

И наконец-то добрались до самого интересного — статистики!
Список вопросов формируется из анкет клиентов, которым одобрен кредит.
Можно выбрать любой вопрос и смотреть соотношение хороших/плохих клиентов.

Как я играл в банк

Кредитное предложение «Добрый кредит»

Можно создавать свои кредитные предложения. Редактор позволяет задать максимальную сумму и длительность выплат, выставить процентную ставку в зависимости от размера кредита.

Как я играл в банк

А теперь я хочу взять 140 000 рублей на год под «Добрый кредит».

Как я играл в банк

Переплата 303 рубля — мечта!

Но вот все друзья получили кредит, статистика идеальна, рынок насытился. Банк в стагнации. Что делать? НУЖНО БОЛЬШЕ КЛИЕНТОВ! Где их взять? Сгенерировать!

Генерация клиентов

Были найдены текстовые файлы

  • список населенных пунктов РФ
  • список мужских имен
  • список женских имен
  • список фамилий

Итак, генератор для стандартной анкеты:

Вопрос Ответ
Пол Случайно
Имя Из списка
Фамилия Из списка
Отчество Имя из списка плюс «ович» или «овна»
Место рождения Из списка
Дата рождения От 1940 г. до 1997 г.
Документ, подтверждающий личность Паспорт
Номер паспорта От 0000 000000 до 9999 999999
Дата выдачи Любой момент, с тех пор как клиенту исполнилось 14 лет
Место выдачи Из списка
Среднемесячные доходы От 4 тыс. до 60 тыс. руб.
Среднемесячные расходы От 2 тыс. до 30 тыс. руб.
Остальные вопросы Случайно
Кредитное предложение Случайно
Сумма кредита От 1 тыс. руб. до максимальной суммы кредитного предложения
Количество месяцев выплат От минимального до максимального для данного кредитного предложения

Хотя доходы в 2 раза превышают расходы, все равно иногда попадается, что чистый доход отрицателен.
Если выбран ответ с уточнением, заявка аннулируется, а в строке состояния появляется подпись «Невозможно сгенерировать заявку с уточнением».
Если кредит одобрен, то генерируются выплаты. Вероятность неплатежа равна 1/20, но некоторым клиентам не везет и они пропускают по 4 платежа подряд.

Генератор был вынесен в главное меню, можно создать 1 или сразу 200 заявок.

Как я играл в банк

Также генератор есть при прохождении анкеты.

Как я играл в банк

Баллы сгенерированных клиентов подчиняются нормальному распределению. Крайний левый столбец — это те, кому отказано в кредите.

Как я играл в банк

В анкетах конечно получаются глупости, зато статистика сразу стала повеселее!

Как я играл в банк

Как я играл в банк

Как я играл в банк

Вывод — худшим клиентом является холостой (незамужняя) индивидуальный предприниматель, с несколькими высшими образованиями.

Прилагаю ссылку на скоринговую систему. Играйтесь на здоровье!
Могут понадобиться .NET Framework 4.5 и SQL LocalDB 2012 x86 или SQL LocalDB 2012 x64.
Спасибо за внимание и приятной пятницы всем!

Автор: Muxto

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js