Результаты проверок

Проверок: 4 · 🟢 0 · 🟡 0 · 🔴 4


Проверка соответствия отчёта и кода (code_review)

Не пройдено

Требований: 9 · найдено: 7 · не найдено: 2

Пропуски числовых признаков заполняются медианой train-выборки.
Требование не найдено в коде

Найдено заполнение нулём (fillna(0)) в feature_engineering.py:210, медианная импутация по train в коде отсутствует.

Вероятности калибруются изотонической регрессией.
Требование не найдено в коде

В model_training.py используется CalibratedClassifierCV(method='sigmoid') — это Platt scaling, а не изотоническая регрессия.

Целевая переменная — факт выхода на просрочку 90+ дней в течение горизонта 12 месяцев от даты наблюдения.
Требование найдено в коде
target_calculation.py:34-58

Функция build_target() помечает наблюдение дефолтным при max(dpd) >= 90 внутри окна 12 месяцев; горизонт задаётся параметром HORIZON_MONTHS = 12.

Из выборки исключаются закрытые, реструктуризированные и цессионные договоры.
Требование найдено в коде
data_preparation.py:71-89

В filter_contracts() применяется маска по contract_status not in ('CLOSED', 'RESTRUCTURED', 'CESSION').

Категориальные признаки кодируются WOE-преобразованием, рассчитанным на train-выборке.
Требование найдено в коде
feature_engineering.py:120-167

Класс WOEEncoder обучается только на train и применяется к valid/test; биннинг — монотонный по дефолт-рейту.

Разбиение train/valid/test — 60/20/20 со стратификацией по таргету и фиксированным seed.
Требование найдено в коде
data_preparation.py:142-160

train_test_split с stratify=y и random_state=RANDOM_SEED (=42), пропорции 0.6/0.2/0.2 заданы константами.

Отбор факторов по Information Value с порогом IV > 0.02.
Требование найдено в коде
feature_engineering.py:245-279

select_by_iv() отбрасывает признаки с IV <= IV_THRESHOLD (=0.02).

Целевая модель — градиентный бустинг (CatBoost) с ранней остановкой по valid-выборке.
Требование найдено в коде
model_training.py:55-98

CatBoostClassifier с eval_set=valid и early_stopping_rounds=50.

Скоринговый витринный SQL рассчитывает признаки на ту же дату наблюдения, что и обучение.
Требование найдено в коде
scoring_pipeline.sql:12-77

CTE feature_asof фиксирует report_dt и джойнит источники строго по as-of дате.


Проверка наличия необходимой документации (documentation_check)

Не пройдено

Проверок: 15 · пройдено: 9 · не пройдено: 6 (блокирующих: 3)

Не пройдено — блокирующие
Обоснование использования непромышленных источников
Обоснование использования непромышленных источников отсутствует в отчёте о разработке

Тип: Блокирующий

В отчёте о разработке есть обоснование использования переменных из источников, не загруженных в целевые хранилища Банка при наличии аналогичных по бизнес-смыслу переменных в промышленных источниках

Найдено: Обоснование по team_risk_dev.experimental_macro в отчёте не найдено

Обоснование: Используются непромышленные источники (sandbox_ivanov, team_risk_dev, ext_vendor_scoring), но обоснование их применения при наличии промышленных аналогов отсутствует.

Правила отбора наблюдений для формирования выборки
Правила отбора наблюдений не описаны в отчёте о разработке

Тип: Блокирующий

В отчёте о разработке описаны правила отбора наблюдений: правила фильтрации, правила отбора наблюдений в выборку для разработки из ГС, правила искусственного увеличения количества наблюдений

Найдено: Правила фильтрации описаны, правила сэмплирования из ГС — нет

Обоснование: Не описаны правила отбора наблюдений из генеральной совокупности.

Параметр seed
Параметр seed не указан в отчёте о разработке

Тип: Блокирующий

В отчёте о разработке указано значение параметра seed в случае, если разработка происходит на случайной подвыборке

Обоснование: Разработка велась на случайной подвыборке, но значение seed в отчёте не зафиксировано.

Не пройдено — информационные
Атрибутный состав пользовательских витрин
Атрибутный состав не всех пользовательских витрин, справочников и внешних источников описан в отчёте о разработке

Тип: Информационный

В отчёте о разработке есть описание атрибутного состава пользовательских витрин, справочников и внешних источников

Найдено: Витрина user_features: 47 атрибутов описаны в приложении А; Справочник region_dict: 5 полей

Обоснование: Атрибутный состав пользовательской витрины user_features описан полностью; для внешнего источника ext_vendor_scoring описание отсутствует.

Длинный список факторов. Перечисление
Не все факторы из длинного списка перечислены в отчёте о разработке

Тип: Информационный

В отчёте о разработке перечислены все факторы из длинного списка

Найдено: Длинный список заявлен на 214 факторов, в приложении приведено 198

Обоснование: 16 факторов длинного списка отсутствуют в перечислении.

Длинный список факторов. Бизнес-логика
Бизнес-логика и способ расчёта не всех атрибутов из длинного списка описаны в отчёте о разработке

Тип: Информационный

В отчёте о разработке описана бизнес-логика и способ расчёта всех факторов из длинного списка

Найдено: Описание бизнес-логики приведено выборочно (~70% факторов)

Обоснование: Для значимой части длинного списка способ расчёта не описан.

Пройдено (9)
Описание промышленных источников
Все используемые промышленные источники данных описаны в отчёте о разработке

Тип: Информационный

В отчёте о разработке должны быть указаны названия схем и таблиц всех используемых промышленных источников

Найдено: prx_credit.application_scoring — витрина заявок; arnsdprisk_default.dpd_history — история просрочек; arnsdprozn_client.socdem_profile — соцдем профиль; prx_bki.bureau_scores — скоры БКИ

Обоснование: Все промышленные источники из кода перечислены в разделе 3.2 отчёта с указанием схемы и таблицы.

Бизнес-логика пользовательских витрин
В отчёте о разработке дано подробное описание бизнес-логики расчёта пользовательских витрин

Тип: Блокирующий

В отчёте о разработке есть подробное описание, либо ссылки на документы содержащие подробное описание бизнес-логики расчёта пользовательских витрин

Найдено: Раздел 4.1 содержит формулы расчёта 12 агрегатов оборотов и просрочек

Обоснование: Бизнес-логика расчёта витрин описана с формулами и окнами агрегации.

Понятие наблюдения в выборке
Определение понятия наблюдения в выборке для разработки есть в отчёте о разработке

Тип: Информационный

В отчёте о разработке есть определение понятия наблюдения (зерна) в выборке для разработки

Найдено: Зерно выборки = пара (договор, дата наблюдения), раздел 2.1

Обоснование: Понятие наблюдения определено явно.

Короткий список факторов. Перечисление
Все факторы из короткого списка перечислены в отчёте о разработке

Тип: Блокирующий

В отчёте о разработке перечислены все факторы из короткого списка

Найдено: Короткий список: 18 факторов перечислены в таблице 5.1

Обоснование: Все 18 факторов короткого списка перечислены.

Короткий список факторов. Бизнес-логика
Бизнес-логика и способ расчёта всех атрибутов из короткого списка описаны в отчёте о разработке

Тип: Информационный

В отчёте о разработке описана бизнес-логика и способ расчёта всех факторов из короткого списка

Найдено: Для 18/18 факторов короткого списка описан способ расчёта

Обоснование: Бизнес-логика факторов короткого списка описана полностью.

Бизнес-логика расчёта объясняемой переменной
Бизнес-логика расчёта таргета описана в отчёте о разработке

Тип: Блокирующий

В отчёте о разработке есть описание бизнес-логики расчёта таргета, включая временной лаг необходимый для вызревания

Найдено: Раздел 2.3: дефолт 90+ на горизонте 12 мес, лаг вызревания 3 мес

Обоснование: Бизнес-логика таргета и временной лаг описаны.

Алгоритм обработки пропущенных и аномальных значений
Алгоритм обработки пропущенных и аномальных значений описан в отчёте о разработке

Тип: Информационный

В отчёте о разработке описан алгоритм обработки пропущенных и аномальных значений в выборках модели

Найдено: Раздел 4.4: импутация медианой, обрезка выбросов по 1/99 перцентилю

Обоснование: Алгоритм обработки пропусков и аномалий описан.

Ограничения на значения переменных
Ограничения на значения фичей и таргета описаны в отчёте о разработке

Тип: Информационный

В отчёте о разработке описаны ограничения на значения фичей и таргета

Найдено: Ограничения на таргет (0/1) и диапазоны 6 ключевых фичей

Обоснование: Ограничения на значения переменных описаны.

Количество наблюдений и временной период
Количество наблюдений и временной период в выборке указаны в отчёте о разработке

Тип: Блокирующий

В отчёте о разработке указаны количество наблюдений и охватываемый временной период в выборках модели

Найдено: train: 1 240 530 набл., 2019-01..2023-06; test: 312 010, 2023-07..2023-12

Обоснование: Количество наблюдений и период по всем выборкам указаны.


Проверка синтаксических ошибок в коде (script_reproducibility)

Не пройдено

Файлов: 5 · с ошибками: 3

feature_engineering.py
Python
Найдено синтаксических ошибок Python: 1

Строка 210, столбец 17: undefined name 'np' (numpy не импортирован)

Пояснение: Не импортирован numpy — добавь `import numpy as np` в начало файла.

SQL

Извлечено: 3 · валидных: 2 · с ошибками: 1

SELECT client_id, SUM(turnover) AS turnover_3m FROM custom_cib_txn.monthly_turnover GROUP BY client_id
Запрос валиден
SELECT client_id, bureau_score FROM prx_bki.bureau_scores WHERE report_dt = ${report_dt
Ошибок в запросе: 1

Expected '}' to close placeholder, got end of input near '${report_dt'

Пояснение: Незакрытый плейсхолдер `${...}` — добавь закрывающую `}` или подставь конкретное значение даты.

SELECT client_id, balance FROM prx_deposits.balance_snapshot
Запрос валиден
model_training.py
Python
Найдено синтаксических ошибок Python: 2

Строка 140, столбец 5: IndentationError: unexpected indent

Пояснение: Лишний отступ в строке — выровняй её по родительскому блоку.

Строка 141, столбец 1: invalid syntax (ожидался блок после ':')

Пояснение: После `:` нет тела блока — добавь отступленную строку с кодом (или `pass`).

SQL

SQL-запросы не извлечены.

scoring_pipeline.sql
Python
Синтаксических ошибок Python не найдено
SQL

Извлечено: 3 · валидных: 1 · с ошибками: 2

WITH feature_asof AS ( SELECT client_id, report_dt FROM prx_credit.application_scoring ) SELECT * FROM feature_asof
Запрос валиден
SELECT client_id grade FROM ext_vendor_scoring.partner_grade GROUP client_id
Ошибок в запросе: 1

Expected 'BY' after 'GROUP', got 'client_id'

Пояснение: Пропущено ключевое слово `BY` — напиши `GROUP BY client_id`.

SELECT client_id, FROM prx_bki.bureau_scores
Ошибок в запросе: 1

Expected expression after ',', got keyword 'FROM'

Пояснение: Лишняя запятая перед `FROM` — убери её после `client_id`.

data_preparation.py
Python
Синтаксических ошибок Python не найдено
SQL

Извлечено: 2 · валидных: 2 · с ошибками: 0

SELECT contract_id, report_dt, contract_status FROM prx_credit.application_scoring WHERE report_dt = DATE '2024-09-01'
Запрос валиден
SELECT client_id, age, region_code FROM arnsdprozn_client.socdem_profile
Запрос валиден
target_calculation.py
Python
Синтаксических ошибок Python не найдено
SQL

Извлечено: 1 · валидных: 1 · с ошибками: 0

SELECT contract_id, MAX(dpd) AS max_dpd FROM arnsdprisk_default.dpd_history WHERE event_dt BETWEEN report_dt AND report_dt + INTERVAL '12' MONTH GROUP BY contract_id
Запрос валиден

Проверка надёжности источников данных (sources_validity)

Не пройдено

Источников: 12 · промышленных: 6 · непромышленных: 6

Промышленными считаются источники с префиксами: prx_, arnsdprisk_, arnsdprozn_, custom_cib_

sandbox_ivanov.manual_overrides
НЕ промышленный источник

Читается файлами: data_preparation.py

team_risk_dev.experimental_macro
НЕ промышленный источник

Читается файлами: feature_engineering.py

hdfs://lake/raw/external_partner_bureau
НЕ промышленный источник

Читается файлами: feature_engineering.py

tmp_analyst.adhoc_sample_2024q3
НЕ промышленный источник

Читается файлами: data_preparation.py

gp_stage.unverified_geo_features
НЕ промышленный источник

Читается файлами: feature_engineering.py

ext_vendor_scoring.partner_grade
НЕ промышленный источник

Читается файлами: scoring_pipeline.sql

prx_credit.application_scoring
Промышленный источник

Читается файлами: data_preparation.py, scoring_pipeline.sql

arnsdprisk_default.dpd_history
Промышленный источник

Читается файлами: target_calculation.py

arnsdprozn_client.socdem_profile
Промышленный источник

Читается файлами: feature_engineering.py, data_preparation.py

custom_cib_txn.monthly_turnover
Промышленный источник

Читается файлами: feature_engineering.py

prx_bki.bureau_scores
Промышленный источник

Читается файлами: feature_engineering.py, scoring_pipeline.sql

prx_deposits.balance_snapshot
Промышленный источник

Читается файлами: feature_engineering.py