На связи команда по разработке риск-моделей для крупного корпоративного, а также малого и среднего бизнеса банка «Открытие» — Андрей Бояренков, Владимир Иванов и Иван Луговский. В этой статье мы расскажем про наш опыт улучшения показателей ранжирования моделей оценки вероятности дефолта заемщика/скоринговых моделей за счет использования различных источников данных и объединения их в отдельные модули.
Стоит начать с ответа на вопрос, для чего вообще нужны скоринговые модели в банке? Скоринговые модели и модели оценки вероятности дефолта заемщика (PD модели) оказывают существенное влияние на все процессы банка и его доход. Такие модели используются как при принятии решений по заемщикам в качестве Cut-off при одобрении сделки, так и в подходах Risk Based Limit (RBL), Risk Based Pricing (RBP). То есть в подходах, когда лимит и процентная ставка зависят от вероятности дефолта отдельно взятого заемщика.
Помимо указанных выше областей применения скоринговые и PD модели также используются:
-
При расчете резервов банка и требуемого капитала;
-
Для риск-отчетности по качеству кредитного портфеля;
-
Для установления внутренних лимитов по рискам;
-
Для мониторинга изменения качества конкретных заемщиков и кредитного портфеля в целом.
Учитывая такое влияние, к моделям оценки вероятности дефолта предъявляются очень высокие требования в части ранжирующей способности и точности.

Теперь, когда функции скоринговых моделей определены, стоит разобраться с общей структурой модели. Нередко модели для клиентов корпоративного сегмента состоят из нескольких отдельных модулей, которые отличаются источниками данных для моделирования и, соответственно, объединяют факторы в одну смысловую группу. При грамотном подходе чем больше источников используется в модели, тем выше ее ранжирующая способность. Исторически в корпоративных моделях стандартно использовались следующие модули:
-
Модуль с финансовыми показателями, характеризующими деятельность компании. Данный модуль включает в себя факторы, связанные с ликвидностью, оборачиваемостью, финансовой независимостью, рентабельностью и динамикой бизнеса;
-
Модуль качественных факторов. К этому модулю относятся такие факторы, как прозрачность бизнеса, наличие конфликтов у акционеров, прогнозы рынка и т.п. Как правило, для формирования факторов используется историческая статистика из внутренних данных банка, то есть данные, которые оценивались банком при принятии решений по заемщикам.
Поскольку банки ограничены собственной статистикой, а также из-за того, что на рынке периодически происходят объединения банков, возникают сложности в сборе качественных факторов в исторических периодах для разработки моделей. Сами факторы могут не совпадать, методология сбора может отличаться, а информация может быть в наличии только за разрозненные периоды.
Поэтому сейчас уже фактически стало стандартом использование ряда дополнительных источников, которые помогают в решении данной проблемы. Самыми распространенными источниками на данный момент являются:
-
Транзакционные данные;
-
Данные кредитной истории;
-
Данные источников-агрегаторов;
-
Арбитражи.

Далее последовательно приведем описание всех перечисленных источников, каждый из которых формирует отдельный модуль модели.
Транзакционные данные
В каждом банке есть очень важный, доступный и бесплатный источник информации по клиентам — обороты по счетам и данные по депозитам. Эти данные могут оказывать разное влияние на вероятность дефолта. Например, вероятность дефолта клиента, как правило, тем ниже:
-
Чем ниже доля штрафов и судебных платежей в его расходах;
-
Чем выше доля уплаченных налогов;
-
Чем более стабильны поступления и расходы (самую низкую вероятность дефолта показывают клиенты, у которых идет умеренный рост поступлений и расходов, и, наоборот, резкий рост или падение расходов/поступлений могут увеличивать вероятность дефолта).
В целом из опыта можно сказать, что для малого и среднего бизнеса, который чаще, чем крупный держит средства в одном банке, это один из самых предсказательных модулей (коэффициент Джини более 50%), к тому же этот модуль показывает очень стабильные результаты при мониторинге модели.
Стоит отметить, что для работы с данным источником требуется формирование отдельных правил раскраски транзакций заемщика по категориям с использованием парсинга текста проводок. Например, возможно выделение таких категорий, как погашение кредитов, оплата налогов, выдача из кассы, аренда, инкассация, платежи от покупателей и т.д. Возможно выделение большого количества таких категорий, в том числе с использованием подходов ML.
Данные кредитной истории
При количественной оценке кредитного риска очень важна информация о том, как заемщик ранее обслуживал свой долг. Необходимо формирование в банке витрин, которые содержат информацию и по внутренней кредитной истории, и по внешней — из запросов в БКИ, которые делались по клиенту. Можно привести следующие примеры факторов:
-
Максимальный бакет просрочки по заемщику за последний год (1-30, 31-60, 60+);
-
Количество договоров, по которым допущена просрочка определенного типа за последний год;
-
Количество погашенных/закрытых договоров, количество действующих договоров;
-
Срок кредитной истории.
Возможен также учет типа продуктов: например, потребительских кредитов по индивидуальным предпринимателям.
Данные источников-агрегаторов
В качестве отдельных модулей могут использоваться данные источников-агрегаторов — таких, как: СПАРК, Селдон, Контур-фокус, БИР-Аналитик, Интегрум. Из данных источников можно взять информацию по отрасли, региону работы, сроку работы компании, количеству смен руководителей/собственников и т.д.
Арбитражи
Данные по арбитражам также могут оказывать сильное влияние на ранжирующую способность модели. В качестве примера можно привести следующие факторы:
-
Суммы исков в качестве ответчика по отношению к выручке/активам/прибыли;
-
Динамика зарегистрированных исков/проигранных дел (суммы, количество) за текущий год к предыдущему году;
-
Доля проигранных дел от всех поданных исков;
-
Возможно использование исков определенного типа (хозяйственные, налоговые, корпоративные, имущественные, административные, финансовые, др.)
Этот источник также важен для среднего и крупного бизнеса, поскольку, как правило, у таких компаний арбитражных споров больше.
Помимо перечисленных выше источников также возможно использование в моделях скорингов, основанных на данных телекоммуникационных компаний, по интернет-активности, платежных и фискальных данных.
Теперь, когда мы разобрались с возможной структурой модели, состоящей из разных модулей, возникает вопрос, как эти модули связать между собой, чтобы это стало полноценной моделью? Сейчас постепенно придем к ответу на этот вопрос.
При наличии большого количества источников наиболее оптимально формирование модульной структуры модели, когда каждый модуль отвечает за один или несколько схожих источников информации, а потом они взвешиваются с определяемыми на статистике весами в единый стекинг.

Разберемся, кто такой, а, точнее, что такое стекинг и как он применяется.
Стекинг
Стекинг в данном случае — это алгоритм объединения результатов работы различных модулей с целью получения итогового прогноза модели. Задача на этапе стекинга — получить финальный скоринговый балл (далее — скор) на основании скоров по всем модулям модели. Однако по определенной части наблюдений может не быть информации, необходимой для расчета скора по тому или иному модулю (например, если у компании нет отчетности или нет кредитной истории для применения соответствующих модулей). Чтобы решить эту проблему для каждого наблюдения, по которому нет необходимой информации, рассчитываются прокси-скоры.
Перед расчетом прокси-скоров по каждому из модулей модели необходимо рассчитать уровни дефолтности (Default Rate, DR):
-
по наблюдениям, где есть скоры (DR);
-
по наблюдениям, где нет скоров (DRns).
Для справки: Default Rate (DR), или уровень дефолтности — это отношение фактически вышедших в дефолт заемщиков ко всем недефолтным заемщикам на начало рассматриваемого периода, обычно выражается в процентах.
Для построения регрессии и расчета прокси-скоров рассчитывается калибровочный вес по формуле:
где dr — фактическая вероятность дефолта по выборке, tr — целевая вероятность дефолта.
Затем на данных выборки строится логистическая регрессия с присвоением классам весов W_calib для недефолтных и 1 для дефолтных наблюдений. Из результатов регрессии сохраняются коэффициенты a и b.
def calibration(scores, target, tr): ””” Функция калибровки. - scores – значения скоров - target – массив меток о дефолте в выборке для разработки - tr – целевой Default Rate ””” model = LogisticRegression(penalty=’none’, class_weight={0:w_calib, 1:1}) model.fit(scores, target) # параметры a = model.intercept_[0] b = model.coef_[0][0] return a, b
Здесь и для дальнейшего понимания нужно учесть, что вероятность дефолта связана со скором следующей формулой:
где S — скор, PD — вероятность дефолта (probability of default)
На основании полученных коэффициентов a и b значение вероятности дефолта может быть переведено в скор по формуле, приведенной выше.
Вероятность дефолта наблюдений без реальных скоров по модулю считается равной DRns, таким образом, прокси-значение скора по данным наблюдениям получается путем преобразования DRns в скор. После этого в выборке с наблюдениями без скора проставляется полученный единый для таких наблюдений прокси-скор.
Для получения итогового скора применяется логистическая регрессия, имеющая вид:

где:
-
PD (F1, F2,…,Fn) — моделируемая вероятность дефолта;
-
Fn — трансформированное и нормализованное значение скора модуля n;
-
βn — коэффициенты регрессии.
Значения коэффициентов регрессии получаем посредством максимизации функции правдоподобия:

где:
-
L (Y1, Y2,…, Yn; ϴ) — функция максимального правдоподобия;
-
Y1…n — реализованное событие;
-
Pϴ (Yn) — логистическая регрессия, моделирующая вероятность дефолта;
-
ϴ — вектор коэффициентов βn логистической регрессии.
Веса факторов определялись на основе коэффициентов логистической регрессии в соответствии с формулой:

где:
-
Wi – вес i-го фактора;
-
βi – коэффициент регрессии i-го фактора;
-
βj – коэффициенты логистической регрессии.
Подводя итог: данная структура модели — модули, взвешенные в единый стекинг — позволяет существенно улучшить ранжирование по модели, в отличие от «плоской» структуры, когда вся модель — это один модуль с набором факторов из разных источников. Можно привести пример, подтверждающий преимущества модульной структуры модели. Так, при тестировании одной из последних разработанных моделей были получены следующие показатели: +8% показателя Джини модели в абсолютном значении, +15% — в относительном при модульной структуре модели по сравнению с «плоской».
К этому моменту мы разобрались с различными источниками данных, из которых формируются модули модели и выяснили, что такое стекинг и для чего он нужен. Казалось бы, все шаги пройдены, итоговый скор по модели получен, все готово. Но нет. Остался последний, немаловажный этап — калибровка.
Калибровка
После стекинга средняя предсказанная вероятность дефолта может не совпадать с целевой вероятностью для всего портфеля. Поэтому полученные результаты нужно откалибровать на целевой прогнозируемый по кредитному портфелю показатель Default Rate (DR).
Калибровка выполняется в два этапа.
На первом этапе необходимо получить коэффициенты a и b калибровочной кривой. Они подбираются таким образом, чтобы средняя рассчитанная вероятность дефолта PD стремилась к заданному уровню. Важно отметить, что все действия выполняются на выборке для разработки.
Для выборки рассчитывается фактическая вероятность дефолта по формуле:
где N_def — количество дефолтов, N_obs — количество наблюдений.
Аналогично стекингу, здесь рассчитывается калибровочный вес и строится логистическая регрессия, из которой сохраняются коэффициенты a и b.
Первый этап калибровки (на выборке для разработки) может не позволить корректно учесть ряд существенных аспектов, влияющих на итоговую вероятность дефолта, т.к. в исторической статистике не было данной информации (например, влияние данных по поддержке группы, в которую входит заемщик, наличие предупреждающих сигналов и т.п.). Поэтому необходим второй этап калибровки, который проводится на выборке клиентов текущего портфеля, так как эта выборка более приближена к ситуации применения в силу наличия в ней большего количества информации по клиентам.
Целью второго этапа является изменение смещения калибровочной кривой при ее неизменной форме таким образом, чтобы средняя вероятность дефолта PD текущего портфеля с учетом дополнительных модулей соответствовала целевому прогнозируемому по кредитному портфелю показателю Default Rate (DR).
print(‘Подбор параметра минимизации’) methods = [‘BFGS’, ‘L-BFGS-B’, ‘SLSQP’, ‘Nelder-Mead’, ‘Powell’, ‘CG’, ‘Newton-CG’, ‘TNC’, ‘COBYLA’, ‘trust-constr’, ‘dogleg’, ‘trust-ncg’, ‘trust-exact’, ‘trust-krylov’] for method in methods: print(method) minimizer = minimize( calc_min_score, a, method = method ) if minimizer.success: break if not minimizer.success: raise ValueError(‘Подбор не удался!’) res = minimizer.x.tolist()[0]
И вот теперь точно все! В этой статье мы рассказали вам о сущности и областях применения скоринговых моделей и моделей PD; осветили возможные дополнительные источники данных для моделирования, а также их связь с модулями модели; объяснили, как связать все модули для получения итогового скора (стекинг) и коротко описали процесс калибровки полученной модели.
Для решения задач, описанных в статье, применяются стандартные функции sklearn и scipy в Python.
ссылка на оригинал статьи https://habr.com/ru/articles/732216/
Добавить комментарий