Claude Code Antifraud: Колмогоров‑Смирнов и недетские аномалии на детской олимпиаде

Детские олимпиады по программированию перестали быть просто игрой в «угадай алгоритм». Сегодня это поле битвы репутаций, где вместо шахматных фигур ходят логи-файлы. И да, здесь тоже жульничают. Взрослые «хелперы» решают задачи за детей, группы сливают ответы, а организаторы ловят аномалии. Один из самых элегантных инструментов в этой борьбе — тест Колмогорова-Смирнова (КС). Он не ищет плагиат в коде. Он ищет математическую неестественность в поведении. Разберемся, как это работает и почему это не панацея.
Проблема: когда школьник решает как профессор
Представьте: онлайн-олимпиада для детей 10–14 лет. 1200 участников. Стандартная проверка — совпадение кода, время отправки — ничего криминального не находит. Но есть странность: группа из 7 ребят из одного города решает задачи с пугающе одинаковой скоростью. Их коды разные, но паттерн поведения — идеально ровный. Слишком идеальный для живых детей, которые обычно тупят, отвлекаются или, наоборот, выдают всплески гениальности. Это классический сигнал: за детей работает кто-то другой. Обычные методы слепы к такому. Нужен инструмент, который смотрит не на текст, а на «почерк» решения.
Как работает тест Колмогорова-Смирнова в антифроде
Суть проста. КС-тест сравнивает два распределения и отвечает на вопрос: «Могли ли они появиться из одного источника?» В мире антифрода это звучит так: «Похоже ли распределение баллов подозреваемого на распределение честных участников?»
Система Antifraud от Claude Code делает это в три шага. Сначала строится «профиль» участника — последовательность его баллов за каждую задачу или время решения. Потом выбирается эталон — например, топ-20% участников, чью честность подтвердили. И наконец, для каждого подозреваемого вычисляется D-статистика — максимальное расхождение между его кривой и эталонной. Чем больше D — тем выше вероятность аномалии.
В том самом случае с 7 детьми КС-тест выдал D-статистику > 0.45 при p-value < 0.001. Это значит, что вероятность случайного совпадения — меньше 0.1%. Другими словами, их результаты были настолько «причесаны», что математика сказала: «Так не бывает».
Сравнение методов: почему КС сильнее, но не идеален
У организаторов есть целый арсенал. Но каждый инструмент бьет в свою цель.
- Колмогоров-Смирнов (КС). Проверяет форму распределения. Плюс: не требует, чтобы данные были «нормальными». Минус: плохо видит аномалии в «хвостах» при малых выборках.
- Тест Манна-Уитни. Ищет сдвиг медианы. Простой и быстрый. Но глух к различиям в дисперсии — не заметит, если один участник решал всё «ровно», а другой — рывками.
- Критерий хи-квадрат. Работает с категориями. Например, проверяет, равномерно ли распределены правильные ответы по задачам. Требует много данных.
- Метод z-оценок. Самый быстрый, но наивный. Считает отклонение от среднего. Предполагает, что все данные — колокол Гаусса. В реальности дети — это не колокол, это хаос.
КС-тест выигрывает за счет чувствительности к форме. Он замечает, когда кто-то пытается «нарисовать» идеальную кривую успеха, не имея естественных провалов и пиков.
Личное наблюдение: когда КС ошибается
Недавно я заметил забавный кейс. Тест выдал ложное срабатывание на одного парня. Его результаты были слишком «гладкими» — как будто он решал задачи на автомате. Оказалось, он просто был задротом с Codeforces (международная платформа для спортивного программирования) и реально щелкал задачи уровня 10–14 лет как семечки. Его естественный уровень был настолько выше среднего, что его «норма» выглядела как аномалия. Хороший урок: статистика без контекста — это просто цифры. Поэтому в Claude Code Antifraud добавили второй этап — проверку иерархии задач. Если участник решил самую сложную задачу быстрее, чем самую простую (что для таланта нетипично), это уже повод для ручного разбора.
Рекомендации: как не наломать дров
Если вы организуете олимпиаду и хотите внедрить КС-тест, запомните четыре правила.
- Выбирайте правильный эталон. Берите не «среднее по больнице», а участников, чью честность вы проверили лично. Или случайную выборку, которую вы перепроверили.
- Работайте с временными рядами. Лучший признак для КС — время решения каждой задачи. Баллы тоже работают, но время — более тонкий индикатор.
- Ужесточайте порог для малых выборок. Если задач всего 5–7, используйте p-value ≤ 0.01. Иначе КС будет видеть «аномалии» в каждом чихе.
- Автоматизируйте, но не доверяйте слепо. Система Claude Code умеет в реальном времени тянуть логи и строить распределения. Но любой статистический тест — это только повод включить человеческий мозг.
Резюме от автора. Тест Колмогорова-Смирнова — это не волшебная палочка, а скальпель. Он требует точной руки и понимания, где резать. В детских олимпиадах он отлично ловит группы, которые пытаются симулировать «естественное» поведение, но пасует перед единичными гениями. Лучшая стратегия — комбинировать КС с машинным обучением и ручной верификацией. И помните: если вы видите идеальную кривую решений у семи школьников из одного города — скорее всего, за монитором сидит не ребенок, а взрослый с чувством ложного превосходства.
















