Перейти к содержимому

Собеседование антифрод-аналитика: разбираю реальный кейс скоринга мошеннической транзакции

Собеседование антифрод-аналитика: разбираю реальный кейс скоринга мошеннической транзакции
Время чтения: 9 мин.

Три года назад на утреннем мониторинге я вытащил алерт: перевод 87 000 рублей с карты клиента, который до этого максимум покупал продукты на 3 000. Устройство новое, IP через мобильный прокси, получатель — свежий счёт без истории. Модель скоринга дала 0.91 из 1.0. Через 20 минут ручной проверки транзакция была заблокирована, а через неделю кандидат на позицию антифрод-аналитика получил от меня этот кейс как задачу на собеседовании.

Он не справился. Не потому что глупый — потому что не понимал, как скоринг работает изнутри. Знал слова «machine learning» и «feature engineering», но не мог объяснить, почему четыре слабых сигнала вместе дают 0.91.

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

Принцип работы антифрод-системы: скоринг транзакций изнутри

Антифрод-система — программный комплекс, который в реальном времени оценивает каждую транзакцию и решает: пропустить, отправить на ручную проверку или заблокировать. Центральный механизм — risk scoring (оценка риска): каждой операции присваивается числовой балл от 0 (безопасно) до 1.0 (почти наверняка фрод).

Скоринг транзакций работает в несколько слоёв. Архитектура в большинстве крупных систем — трёхуровневая:

Уровень 1 — жёсткие правила (0–50 мс). Мгновенные проверки: санкционные списки, velocity-лимиты (velocity — количество операций за единицу времени, например «больше 5 переводов за 10 минут»), известные индикаторы фрода. Правило сработало — транзакция блокируется без раздумий. Тут нет никакого ML, чистая логика «если — то».

Уровень 2 — ML-скоринг (50–200 мс). Модель машинного обучения (ML — machine learning) извлекает признаки транзакции: сумму, время, устройство, геолокацию, историю клиента — и выдаёт risk score. На практике чаще используют gradient boosting (XGBoost, LightGBM) — он быстрый и интерпретируемый. Нейросети реже, и причина прозаичная: объяснить регулятору «почему заблокировали» с нейросетью на порядок сложнее.

Уровень 3 — глубокий анализ (200 мс – 2 с). Графовый анализ связей между счетами, поведенческая биометрика, кросс-канальные паттерны. Подключается для пограничных случаев, где скор не даёт однозначного ответа.

Путь мошенника к аккаунту жертвы часто идёт через Valid Accounts (T1078 по MITRE ATT&CK — тактики Initial Access, Persistence, Privilege Escalation и Defense Evasion) — использование скомпрометированных учётных данных для доступа к счёту.

Первый вопрос, который вырастает из этой темы на собеседовании:

«Опишите архитектуру fraud scoring системы для компании с миллионом транзакций в день.»

Интервьюер проверяет: понимаете ли вы разницу между правилами и ML-моделью, знаете ли о latency-ограничениях (задержке ответа) и можете ли объяснить, зачем нужны все три уровня. Ответ «ML-модель считает скор» — уровень теоретика. Практик расскажет про слои, задержки и trade-off между скоростью и глубиной анализа.

Кейс: анализ мошеннической транзакции шаг за шагом

Что увидел алерт и почему модель насторожилась

Утро, дашборд транзакционного мониторинга. Среди сотен операций — красная: risk score 0.91. Система подсветила четыре фактора:

Фактор Значение Почему насторожило модель
Сумма 87 000 руб. В 29 раз выше средней для этого клиента
Устройство Новый fingerprint Возможен account takeover (захват аккаунта)
IP-адрес Мобильный прокси, другой регион Сокрытие реальной геолокации
Получатель Счёт открыт 2 дня назад, 0 входящих Типичный признак дроп-счёта

Каждый фактор по отдельности — не приговор. Клиент мог купить новый телефон, уехать в командировку, перевести деньги новому контрагенту. Но комбинация четырёх аномалий одновременно — это то, что модель оценила как 0.91 и отправила на ручную проверку. То есть мне.

Как проверял гипотезы вручную

Шаг 1: история клиента. Нужен SQL-доступ к базе транзакций (предусловие: права на чтение production-реплики, подключение через корпоративный VPN). Запрос, который покажет поведенческий паттерн клиента:

SELECT transaction_date, amount, merchant_category,
       device_fingerprint, ip_city
FROM transactions
WHERE customer_id = 'CUST_12345'
ORDER BY transaction_date DESC
LIMIT 50;

Результат — список из 50 последних операций. В моём случае: мелкие покупки в продуктовых, один и тот же device fingerprint, один город. Перевод на 87 000 руб. выбивался из паттерна полностью. Видите такую картину — гипотеза «клиент сам перевёл» становится маловероятной.

Шаг 2: проверить получателя. Дроп-счёт (счёт, открытый специально для приёма мошеннических переводов) обычно имеет характерные признаки: свежая дата открытия, отсутствие зарплатных зачислений, множество входящих переводов от разных отправителей.

SELECT sender_id, amount, transaction_date
FROM transactions
WHERE recipient_account = 'ACC_67890'
  AND transaction_date >= CURRENT_DATE - INTERVAL '7 days'
ORDER BY transaction_date;

Переводы от 5–10 разных отправителей за неделю на свежий счёт — серьёзный красный флаг. В моём кейсе отправителей оказалось 7. У каждого — одинаковый поведенческий разрыв: месяцы мелких покупок, потом резкий крупный перевод.

Шаг 3: графовый анализ связей. Есть ли другие аккаунты, привязанные к тому же устройству или IP? Мы используем Neo4j (графовая база данных, где связи между сущностями — рёбра графа, а сами сущности — узлы). Один device fingerprint фигурировал в операциях по трём разным клиентским аккаунтам. Все три — с идентичным паттерном «тихое поведение → крупный перевод на тот же дроп-счёт».

Итог: транзакция заблокирована. Клиент подтвердил по телефону, что перевод не совершал — его учётные данные были скомпрометированы. Три связанных аккаунта переданы в службу безопасности, на дроп-счёт наложены ограничения.

Вопросы на собеседовании антифрод-аналитика из этого кейса

Про расследование и fraud detection

«Опишите шаги расследования подозрительной транзакции.»

Самый частый вопрос. По данным interviews.chat и digitaldefynd.com, ожидается структурированный ответ:

  1. Изолировать транзакцию и аккаунт — предотвратить дальнейшие потери.
  2. Проверить историю клиента — отклонения от обычного поведенческого анализа транзакций.
  3. Проверить получателя — признаки дроп-схемы.
  4. Проверить внешние факторы — IP, устройство, геолокация.
  5. Связать с другими кейсами через графовый анализ.
  6. Задокументировать находки, принять решение, эскалировать при необходимости.

Типичная ошибка: кандидат начинает с «позвоню клиенту». Звонок — не первый шаг. Сначала данные, потом контакт. Если это account takeover, мошенник может успеть вывести средства, пока вы ждёте ответа от реального владельца.

Про правила скоринга мошенничества и пороги

«Как решаете — блокировать транзакцию или отправлять на проверку?»

Здесь проверяют понимание порогов. На практике:

  • Score > 0.85 → автоматическая блокировка
  • Score 0.50–0.85 → ручная проверка аналитиком
  • Score < 0.50 → пропуск

Пороги подбирают на исторических данных. Низкий порог блокировки — заблокируете легитимных клиентов (false positive, ложное срабатывание). Высокий порог — пропустите фрод (false negative, пропущенная мошенническая операция). Хороший кандидат объяснит этот trade-off и скажет, что конкретные числа зависят от бизнес-контекста и стоимости ошибки каждого типа.

Про метрики: precision, recall, false positive rate

«Какие метрики используете для оценки эффективности антифрод-системы?»

Три метрики, которые спросят обязательно:

Precision (точность) — из всех транзакций, помеченных как фрод, какая доля действительно мошеннические. Формула: TP / (TP + FP), где TP — true positive, FP — false positive. Precision = 0.30 означает, что 70% алертов ложные. Аналитики тратят время впустую.

Recall (полнота) — из всех реально мошеннических транзакций, какую долю система поймала. Формула: TP / (TP + FN), где FN — false negative (пропущенный фрод). Recall = 0.80 означает, что 20% фрода проходит незамеченным.

False Positive Rate (FPR) — из всех легитимных транзакций, какую долю система ошибочно пометила. Высокий FPR = злые клиенты с заблокированными картами.

Ситуационный вопрос, который я задаю на каждом интервью: «Что важнее — precision или recall?» Единственного правильного ответа нет. Есть правильный ход рассуждений. В банке с миллионом транзакций в день recall 0.95 при precision 0.10 означает, что на каждый реальный фрод приходится ~9 ложных алертов — при тысячах срабатываний в день обработать их физически невозможно. Обычно стремятся к recall выше 0.90 при precision в диапазоне 0.25–0.30. Но конкретные цифры определяет бизнес.

Тестовое задание антифрод-аналитика: формат и подход

На части собеседований дают тестовое — мини-кейс, похожий на разобранный выше. Стандартный формат: выгрузка из 1000–5000 транзакций (CSV или доступ к SQL-базе), задача — найти подозрительные паттерны и объяснить логику. Иногда просят сформулировать risk scoring правило.

Пример правила по кейсу выше:

ЕСЛИ device_fingerprint NOT IN known_devices
  И amount > avg_amount * 10
  И recipient_account_age < 7 дней
  И recipient_unique_senders_7d > 3
ТОГДА risk_score += 0.4

Правило поднимает score на 0.4 при совпадении четырёх условий. Оно не блокирует само по себе — увеличивает общий скор. Финальное решение принимает модель с учётом всех факторов.

На тестовом оценивают не столько SQL (хотя он обязателен), сколько умение сформулировать гипотезу и проверить её данными. «Вижу, что 15 транзакций ушли на один счёт от разных отправителей за 3 дня — похоже на дроп-схему» — вот что хочет услышать интервьюер.

Частые ошибки кандидатов на собеседовании антифрод-аналитика

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

Знают ML-теорию, не знают инструменты. Кандидат рассуждает про Random Forest и feature engineering, но не может написать GROUP BY. На практике 80% работы антифрод-аналитика — SQL-запросы к базе транзакций и BI-дашборды, а не обучение моделей с нуля. Если в вакансии написано «антифрод-аналитик», а не «ML-инженер» — SQL важнее Python.

Не понимают бизнес-контекст. Предлагают заблокировать все переводы свыше 50 000 рублей. VIP-клиенты уйдут, бизнес потеряет больше, чем от фрода. Выявление мошеннических операций — всегда баланс между безопасностью и клиентским опытом. Интервьюер ищет именно это понимание.

Не знают жизненный цикл платежа. Chargeback (процедура оспаривания транзакции через платёжную систему), 3DS (3D Secure — дополнительная аутентификация при онлайн-платежах), токенизация — базовые понятия антифрод-домена. Кандидат не знает, что такое chargeback — разговор заканчивается быстро.

Отвечают абстрактно. «Я бы проанализировал данные и нашёл паттерн.» Как именно? Какой запрос? Какие поля? Какой паттерн? На собеседовании ценятся конкретные названия полей, логика условий и числа порогов.

Требования в вакансиях антифрод-аналитика: чеклист для подготовки

Навык Уровень для Junior На чём проверяют
SQL Уверенный: JOIN, оконные функции, подзапросы Тестовое задание с выгрузкой
Платёжные системы Базовый: жизненный цикл транзакции, chargeback, 3DS Устный вопрос
Статистика Базовый: precision, recall, FPR, нормальное распределение Ситуационный вопрос
Python / pandas Желательно: обработка данных, визуализация Иногда в тестовом
Антифрод-платформы Знакомство: FICO Falcon, Feedzai или аналоги Устный вопрос
Коммуникация Объяснить решение нетехническому руководителю Ситуационный вопрос

По данным codeby.net и ibcourses.ru, в антифрод чаще приходят из банковской аналитики, риск-менеджмента, SOC (Security Operations Center — центр мониторинга безопасности) или из data-аналитики. Переход из смежных областей — нормальная практика. Ключевое преимущество при найме — не диплом, а умение работать с данными и формулировать проверяемые гипотезы.

Большинство материалов по подготовке к собеседованию антифрод-аналитика сводятся к спискам вопросов с шаблонными ответами. Выучил 20 формулировок — прошёл интервью. На практике это не работает. Интервьюер видит заученный ответ за секунду и тут же меняет условия кейса: «А если получатель — не новый счёт, а счёт с трёхлетней историей?» Кандидат плывёт, потому что у него нет модели мышления — есть набор фраз.

Я провёл больше 30 собеседований на позиции от Junior до Middle. Лучшие кандидаты — не те, кто знал все ответы. Лучшие — те, кто при незнакомом кейсе вслух проговаривал логику: «Сначала проверю X, потому что это даст информацию о Y, затем сравню с Z.» Это аналитическое мышление, и его невозможно подделать заученными формулировками.

И вторая вещь, о которой почти не пишут: в антифроде половина работы — коммуникация. Вы нашли паттерн, написали правило, протестировали на исторических данных — а потом нужно убедить product-менеджера, что блокировка 2% легитимных клиентов оправдана снижением фрода на 15%. Не умеете объяснять бизнесу на языке бизнеса — застрянете на первой линии мониторинга. Если переходите из IT в ИБ и хотите закрыть фундамент системно — на IB Basics в Codeby Academy эту базу дают за пару месяцев, от сетей до расследования инцидентов.

Эту тему и смежные навыки разбирают на практике в курсе «Антифрод-аналитик» Codeby Academy.