dimhold.by
← Статьи

Закон Бенфорда бракует 84% годовых отчётов за 2025 год. Идеально честный источник получил бы 60%

Закон Бенфорда это проверка на подлог, про которую слышал каждый, кто работает рядом с финансовым софтом. В настоящих числах первая цифра равна 1 примерно в 30% случаев, а 9 меньше чем в 5%. Люди, которые выдумывают числа, этого не воспроизводят, поэтому гистограмма должна указывать на лжеца.

В 2013 году я прогнал его по истории git в репозитории express, где подделывать что-либо незачем. Из 4 столбцов не прошли 3. Я списал это на данные: эти столбцы охватывают слишком мало порядков величины. Суммы в долларах в годовом отчёте охватывают много, значит там проверка должна быть на своём поле. Ещё я тогда заметил, что MAD никогда не спрашивает, из скольких строк он получен. И оставил открытым вопрос, сколько надо выдумать, чтобы проверка это заметила. Ни к тому, ни к другому я так и не вернулся.

Поэтому я прогнал его по всем годовым отчётам, поданным в SEC в 2025 году.

Как считал

SEC публикует числа XBRL из всех поданных отчётов квартальными архивами, это Financial Statement Data Sets. 8 октября 2026 года я взял все 10-K, поданные в 2025 году, без исправленных версий (10-K/A): 5530 отчётов. Из каждого оставил значения в долларах США, без разбивки по сегментам, не меньше 10 по модулю и без точных повторов одного тега за тот же период. Отчёты, где таких чисел меньше 50, отбросил, осталось 5399.

Показатель взят из книги Марка Нигрини: среднее абсолютное отклонение (MAD) 9 долей первых цифр от Бенфорда. Его пороги для первой цифры 0,006, 0,012 и 0,015. Выше 0,015 набор чисел “не соответствует”. Считал на Python 3.12 с numpy 2.5.

Идея не новая. Клаус Хензельман с соавторами прогоняли закон по отчётам компаний из S&P 500 в формате XBRL за 2010 год. В 2015 году Дэн Амирам с соавторами нашли, что их показатель по первым цифрам выше перед принудительными мерами SEC. В 2022 году Стивен Уокер ответил, что искажения отчётности он предсказывает хуже, чем F-score или просто рост выручки. Мне хотелось увидеть это на свежих данных.

1 миллион чисел и 5399 отчётов

Все 1 116 430 чисел вместе выглядят почти как в учебнике. С единицы начинаются 30,35% из них, по Бенфорду 30,10%. MAD всей кучи 0,00074.

По отдельности отчёты разложились так: 2 “близкое соответствие”, 289 “приемлемо”, 580 “на грани” и 4528 “не соответствует”. Это 83,9% из 5399 отчётов.

Первая мысль была, что рынок полон вымысла. Это заведомо не так. Вторая, что в медианном отчёте всего 210 чисел. Если вытянуть 210 цифр из идеального источника Бенфорда, доли будут колебаться, а MAD измеряет как раз эти колебания. Я это смоделировал, по 4000 выборок на каждый размер отчёта.

MAD идеального источника Бенфорда в зависимости от размера выборки 0,00 0,02 0,04 0,06 0,015: "не соответствует" у Нигрини 210 чисел: 0,0158 медиана до 99-го перцентиля отчёты 10-K за 2025 год по размеру 50 200 400 600 800 1000 чисел в отчёте
4000 смоделированных выборок из распределения Бенфорда на каждый размер с шагом 10. Размер отчёта это число долларовых значений в 10-K после фильтров из текста.

У идеального источника при 210 числах медианный MAD 0,0158, уже выше порога. Ниже 0,015 он опускается только примерно при 240 числах. Если бы каждый отчёт был выборкой из честного источника, правило Нигрини всё равно назвало бы несоответствующими 60,3% из них. Большая часть из 83,9% объясняется размером отчёта.

До счёта я записал, что меня опровергнет. Если маленькие отчёты бракуются меньше чем вдвое чаще больших, то дело не в размере. Их бракуют в 97,5% случаев против 68,0%, это в 1,43 раза, так что по моему же правилу эта часть провалилась. Правило было записано плохо: доля около 100% удвоиться не может, а у честного источника тот же спад с 88,9% до 32,8%. Но я записал его до того, как увидел число, а число проверку не прошло.

доля "не соответствует" (MAD > 0,015) по размеру отчёта настоящие 10-K идеальный Бенфорд тех же размеров 0% 50% 100% 97,5% 88,9% 50–146 чисел n = 1334 87,8% 68,5% 146–210 чисел n = 1357 82,3% 51,4% 210–256 чисел n = 1351 68,0% 32,8% 256–954 чисел n = 1357
Четверти 5399 отчётов по числу значений. Столбцы идеального источника это средняя вероятность того, что MAD выборки из распределения Бенфорда того же размера превысит 0,015.

Поправка на размер

Правильный вопрос в том, насколько необычен MAD для своего размера. Для каждого отчёта я взял перцентиль его MAD среди смоделированных честных выборок того же размера. Выше 99-го перцентиля должен оказаться 1% отчётов. Оказалось 15,9%.

Я предположил, что отчёт повторяет сам себя: одна и та же сумма под несколькими тегами или остаток, не изменившийся за 2 года. Когда я посчитал каждое различное значение один раз, доля упала до 8,2%, по 5250 отчётам, где различных значений хватило. Это всё равно в 8 раз больше, чем дала бы случайность. Что это, я сказать не могу. Итоги это суммы строк над ними, поэтому отчёт не набор независимых случайных чисел, но глубже я не копал.

Указывает ли это на проблему

Проверка полезна, только если отмеченные отчёты хуже. Мне нужен был исход, который можно посчитать. Первой идеей было поле prevrpt, “этот отчёт позже заменили исправленной версией”. Во всех 5530 строках оно равно 0, то есть в этих архивах его задним числом никто не заполняет.

Первый исход, который сработал: следующий 10-K, поданный в 2026 году, повторяет чистую прибыль и собственный капитал за прошлый год. Если любое из двух чисел сдвинулось больше чем на 1%, что-то поменялось. Для 4473 отчётов у меня были оба 10-K, старый и новый. В 153 из них старое число сдвинулось. Площадь под ROC-кривой (AUC) у сырого MAD вышла 0,53, с 95% доверительным интервалом по бутстрэпу от 0,49 до 0,58. С поправкой на размер 0,50, монетка. Один только размер отчёта дал 0,58: у отчётов с меньшим числом значений старые числа менялись чаще и MAD у них тоже выше.

Этот исход грязный, в нём исправления ошибок смешаны с обратными поглощениями. Поэтому, увидев его, я добавил второй, выбранный после первого результата, а не до. С 2023 года на титульной странице 10-K у компаний с листингом есть флажок: отчётность отражает исправление ошибки в ранее выпущенной отчётности. Я скачал титульную страницу следующего 10-K для 4576 отчётов. Флажок есть у 4520, отмечен у 127.

Среди отчётов, которые правило Нигрини называет несоответствующими, 2,64% потом исправили ошибку. Среди остальных 3,63%. Сама эта разница может быть случайной, но AUC сырого MAD 0,41 с интервалом от 0,37 до 0,46, то есть сырая проверка показывает в обратную сторону. У компаний, которые ставят флажок, отчёты больше, медиана 240 чисел против 212. Большие отчёты бракуются реже. Думаю, в этом всё дело, но регрессию, чтобы это доказать, я не запускал. С поправкой на размер AUC 0,47, а интервал от 0,42 до 0,53 включает 0,5, то есть монетку.

потом исправили ошибку, по вердикту Нигрини 0% 2% 4% 2,64% не соответствует n = 3749 3,63% остальные n = 771 доля выдуманных чисел и доля пойманных отчётов 0% 0% 50% 50% 100% 100% 5,3% 21,8% 60,3% 92,1% доля заменённых чисел
Слева 4520 отчётов, для которых на титульной странице следующего 10-K есть флажок исправления ошибки. Справа порог это верхние 5% тех же отчётов без выдуманных чисел, поэтому при 0% замены ловится 5% по построению.

Сколько нужно выдумать

Последняя проверка шла с другой стороны. Я взял настоящие отчёты и заменил часть их чисел выдуманными. У выдуманных каждая первая цифра от 1 до 9 равновероятна. Проверка отмечает верхние 5% по показателю с поправкой на размер. С первой попытки порог вышел равным 1,0, так что не поймался ни один отчёт. Перцентиль упирается в потолок, когда отчёт выходит за все 4000 симуляций. Я чуть не записал это как результат. С z-оценкой вместо перцентиля при замене 30% чисел ловилось 5,3% отчётов, столько же, сколько без выдумки вообще. Половина выдуманных чисел дала 21,8%. Чтобы поймать 60,3% отчётов, выдумать надо 70% чисел.

Равномерные цифры это грубая модель лжеца. Я предполагаю, что настоящее искажение задевает несколько строк, например выручку или один резерв. Несколько чисел среди 210 теряются ещё легче.

Чего я не проверял

Я не сверялся с публикациями SEC о принудительных мерах (AAER), а именно на этом исходе Амирам с соавторами нашли свой сигнал. Я взял один год без всяких контрольных переменных, так что их статью это не опровергает. Вторые и последние цифры я не считал. Компаний я не называю: флаг Бенфорда не обвинение. После этого прогона я не уверен, что это хотя бы намёк.

В моих данных первые цифры поднимают тревогу в основном в маленьких отчётах. Куча всех отчётов вместе по-прежнему отклоняется от закона всего на 0,00074 по MAD. Для проверки отдельного годового отчёта я не стану использовать закон Бенфорда без поправки на размер. И даже с ней у меня нет ничего, что показывало бы, что он находит ошибки.