Подробное объяснение процесса расчета таблицы винтажного анализа.
Подробное объяснение процесса расчета таблицы винтажного анализа.

Привет всем, я Дон Ге.

В области контроля кредитного риска часто используется отчет о старении. Это одна из трудностей для новичков, поскольку он включает в себя различные действия, такие как погашение пользователем, просрочка платежа и различные статистические показатели в бизнесе. Не могу четко разобраться в логике. На этот раз я подробно познакомлю вас с базовой логикой вычислений отчетов Vintage.

1. 4 статистических момента времени

Если взять в качестве примера кредитный месяц 2022-11, то ставка просрочки M2+, соответствующая каждому MOB, равна:

M2+ставка просрочки MOB1 = M2+сумма просрочки MOB1/общая сумма кредита в ноябре 2022 г. = 0

Коэффициент просрочки М2+МОБ2 = сумма просроченной задолженности М2+МОБ2/общая сумма кредита в ноябре 2022 г. = 0,95%.

M2+ставка просрочки MOB12 = M2+сумма просрочки MOB12/общая сумма кредита в ноябре 2022 г. = 3,22%

общая формула:M2+процент просроченной задолженности MOB(N)=M2+сумма просроченной задолженности MOB(N)/общая сумма кредита в xx кредитном месяце

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

  • Срок погашения:После составления плана погашения,Определяется ежемесячная дата погашения. Есть два способа,Во-первых, дата погашения определяется на основе даты кредита.,Например, кредит будет выдан 10 ноября 2022 года.,Затем погашайте кредит 10-го числа каждого последующего месяца.,Во-вторых, все клиенты имеют одинаковую дату погашения.,Например, все клиенты производят выплаты 21 числа каждого месяца.
  • Фактическая дата погашения:Фактическая дата погашения клиентом,Определяется поведением клиента при погашении долга,Есть три способа сравнения со сроком сокращения.,Досрочное погашение、Погашайте вовремя、Неуплата после установленного срока.
  • День наблюдения МОБ:каждыйMOBЕжемесячное время наблюдения,также делится на два типа,Один из них — конец периода,Что-то вроде Это конец месяца。
  • Текущий день наблюдения:Просто предположим, что вы стоите в определенный момент времени,Затем просмотрите просроченную дату каждого MOB после каждого ежемесячного кредита в истории. Отличается от предыдущих трех временных точек,Текущий день наблюдения не генерируется периодически,Скорее, это исправлено,Это одинаково для всех месяцев кредита.

Подводя итог, есть несколько вещей, которые вам необходимо подтвердить, прежде чем выполнять расчеты Vintage:

  • Текущий день наблюдения Какой сегодня день?
  • День наблюдения Калибр МОБ,Это конец месяца,Или в конце срока?
  • Обратите внимание на степень просрочки: просрочена ли она в настоящее время или была ли она когда-либо просроченной?
  • Калибр суммы или калибр порядка?

В реальных бизнес-сценариях чаще используется калибр ставки просроченной задолженности: «Наблюдение за моментом времени на конец месяца MOB + текущий калибр просрочки + просроченный неурегулированный баланс».

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

2. Расчет дней просрочки

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

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

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

В-четвертых, фактическая дата погашения наступает после даты наблюдения MOB, хотя она и погашается, но позже, чем точка наблюдения MOB. Таким образом, текущая дата просрочки совпадает с предыдущей датой просрочки. = Дата наблюдения МОБ – дата погашения =21.

Пятый тип - это то, что с наступления срока платежа до текущей даты наблюдения клиент не совершил никаких действий по погашению, то есть не был произведен расчет. Таким образом, текущие стандарты просроченной и прошлой просрочки одинаковы. Количество дней просрочки = дата наблюдения МОБ - дата погашения = 21.

3. Расчет просроченных сумм

Ранее мы рассчитывали статус просрочки и дни просрочки каждого клиента по каждому мобу на основе 4 статистических моментов времени.

  • Количество дней просрочки можно конвертировать в количество периодов просрочки, например, M1+/M2+/M3+ и т. д., таким образом мы можем наблюдать тенденцию скорости просрочки M1+/M2+/M3+ при винтажном старении.
  • Судя по просроченному статусу каждого моба,Мы также можем статистически вывести оставшуюся невыплаченную основную сумму долга, которая просрочена.,Это числитель суммы просроченной задолженности, которую мы требовали ранее.

4. Логика расчета ставки просроченной задолженности

5. Практическая работа с кодом Python

Код Python для расчета дней и сумм просрочки в основной части показан ниже.

Язык кода:javascript
копировать
###########################Просроченная идентификация#################### #####################
# Обработать просроченный знак
data_all_1['odu_flag'] = 0
data_all_1.loc[(data_all_1['actual_repay_date']>data_all_1['obser_month_end'])|(data_all_1['actual_repay_date'].isnull()),'odu_flag'] = 1
data_all_1['odu_flag_sft'] = data_all_1.groupby('order_id')['odu_flag'].transform(lambda x:x.shift(1))
data_all_1['actual_repay_date_sft'] = data_all_1.groupby('order_id')['actual_repay_date'].transform(lambda x:x.shift(1))
data_all_1['odu_first_flag'] = 0
data_all_1.loc[(data_all_1['odu_flag_sft']==1)&(data_all_1['odu_flag']==1)&(data_all_1['actual_repay_date_sft']>data_all_1['obser_month_end']),'odu_first_flag'] = 2
data_all_1.loc[(data_all_1['odu_flag_sft']==1)&(data_all_1['odu_flag']==1)&(data_all_1['actual_repay_date_sft']<=data_all_1['obser_month_end']),'odu_first_flag'] = 1
# Обновить оставшуюся сумму основного долга
data_all_1.loc[data_all_1['odu_first_flag']==1,'balance'] = data_all_1['balance_sft']
data_all_1.loc[(data_all_1['odu_first_flag']==2),'balance'] = np.nan
data_all_1['balance'] = data_all_1.groupby('order_id')['balance'].transform(lambda x:x.ffill())
##########################Количество дней просрочки################### # ####################
# Фактически дата наблюдения в конце месяца еще не прошла.
data_all_1.loc[(data_all_1['actual_repay_date'].isnull()==False)&(data_all_1['actual_repay_date']<=data_all_1['obser_month_end']),'odu_days'] = 0
# Просрочено - просрочено впервые.
data_all_1.loc[(data_all_1['odu_first_flag']==1),'odu_days'] = (data_all_1['obser_month_end']-data_all_1['expected_date']).dt.days
# по-прежнему просрочено
data_all_1['expected_date_2'] = data_all_1['expected_date']
data_all_1.loc[(data_all_1['odu_first_flag']==2),'expected_date_2'] = np.nan
data_all_1['expected_date_2'] = data_all_1.groupby('order_id')['expected_date_2'].transform(lambda x:x.ffill())
data_all_1.loc[(data_all_1['odu_first_flag']==2),'odu_days'] = (data_all_1['obser_month_end']-data_all_1['expected_date_2']).dt.days

Вот и все.

Полный код выглядит следующим образом (реальные бизнес-данные + практика написания кода):

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose