К содержимому
MoranaLabs
Платежи / Антифрод — 04 апр. 2026 г.

Антифрод в реальном времени на потоке транзакций 

В антифроде обе ошибки видит клиент: пропущенный мошенник — это его деньги, а ложная блокировка — его несостоявшаяся покупка. Мы уложили решение в 40 мс и снизили оба показателя разом, добавив к признакам транзакции граф связей.

40 мс
p99 решения в потоке
−47 %
потери от фрода
−31 %
ложных блокировок
стенд · запускается здесь

Стенд: порог блокировки в рублях

Единственный стенд, где у порога есть правильное место: обе ошибки стоят денег, и минимум суммы считается. Двигайте ручку и смотрите, где она относительно оптимума.

ОПТИМУМ ПО ЦЕНЕ0 — уверенно нетуверенно да — 1
нормальная транзакциямошенническая транзакцияложные тревогипропуски

Поток за сутки: 2,4 млн нормальных транзакций и 1 850 мошеннических транзакций.

83,1 %
поймано мошеннических транзакций
105
ложных тревог за сутки
312
пропущено из 1 850 за сутки
6,88 млн ₽
цена ошибки за сутки
Без единого гейта на том же пороге было бы 152 ложных за сутки — гейты снимают 31 % мусора и уносят с собой 1,2 % находок. Бесплатных гейтов не бывает. Цена ошибки считается так: средний чек фрода против стоимости ложной блокировки с обращением в поддержку.

Поток транзакций, доля фрода и стоимости синтетические, порядок величин — средний эквайринг. Модель решения та же: скор, графовый гейт, порог.

Сорок миллисекунд — это не пожелание

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

Поэтому проект с самого начала строился вокруг жесткого бюджета. Все, что не помещается в 40 миллисекунд на девяносто девятом перцентиле, считается недоступным для онлайн-контура и переносится в фон.

Две ошибки, и обе видит клиент

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

Обычно эти показатели разменивают друг на друга движением порога. Наша задача формулировалась иначе: сдвинуть кривую так, чтобы улучшились оба. Именно поэтому основную ставку сделали на новые источники сигнала, а не на перенастройку существующей модели.

Граф ловит то, чего не видно в транзакции

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

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

Именно эти признаки дали основной вклад в снижение потерь: одиночную операцию подделать легко, а связи вокруг нее — заметно сложнее.

Признаки, которых нет в базе

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

Поэтому они считаются потоково, в скользящих окнах, и лежат в быстром хранилище к моменту прихода операции. Отдельная работа — согласованность окон между обучением и боем: окно, посчитанное по-разному, дает модели признак с другим смыслом.

Правила и модель работают вместе

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

Поэтому в контуре живут оба механизма. Правила закрывают известные схемы, дают мгновенную реакцию на новую волну и обеспечивают объяснимость. Модель ловит то, что под правила не подводится. Решение принимается совместно, и в журнале всегда записано, что именно сработало.

Разметка приходит с опозданием

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

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

Что происходит при отказе

Отдельно проектировалось поведение при недоступности части контура. Потеря быстрого хранилища признаков не должна означать остановку платежей: система переходит на сокращенный набор признаков и более консервативные правила. Решение хуже по качеству и принимается вовремя.

Аналитик должен понимать решение за минуту

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

Это не украшение интерфейса. Аналитик разбирает поток спорных случаев, и время на один случай — прямая стоимость эксплуатации системы. Разбор, требующий десяти запросов в разные системы, делает антифрод дорогим независимо от качества модели.

Что остается за контуром

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

Направления рядом — потоковые ML-системы, предиктивная аналитика и эксплуатация моделей.

40 мс
решение по транзакции в потоке
  • streaming
  • fraud detection
  • real-time
  • graph ML
  • High-load
заказчик

Платежи / Антифрод · детали под NDA

СтендПроверить расчет руками ↑

Те же цифры, но с ручками: порог, нагрузка, объем.

НаправлениеПотоковая аналитика

Что мы делаем в этом направлении и сколько это стоит.

Комментарий инженера

Нас попросили срочно ужесточить порог после всплеска потерь. Мы показали, во что это обойдется по отказам добросовестным клиентам, — на их же цифрах за прошлый месяц. Вместо порога взялись за графовые признаки: одиночную операцию мошенник подделывает легко, а связи вокруг устройства и адреса — заметно тяжелее. В итоге упали обе цифры сразу, чего движением порога не добиться в принципе.
инженер, потоковые ML-системы · MoranaLabs
Другие кейсы
— заявка

Опишите задачу  ответим как инженеры. 

Оставьте имя и Telegram — остальное обсудим. Без брифов на 40 слайдов и звонков по три раза.

Отвечаем за пару часовотвечает инженер, а не отдел продажNDA до передачи данных

Любой один канал — куда удобнее, туда и ответим

Или сразу написать в Telegram

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