Research · Дефекты ИИ-моделей
Что ломается в финмоделях,
которые собирает ИИ
Таксономия из 55 классов дефектов, снятая повторным экономическим аудитом 32 моделей. Не «ИИ иногда ошибается в формулах» — конкретные, повторяющиеся, классифицируемые способы, которыми модель становится неправильной, оставаясь внешне здоровой.
32
модели в аудите
55
классов дефектов
258
находок
4/10
медианный скор на пике отладки
Откуда эти данные — честная рамка
Все 32 модели собраны нашим собственным движком в отладочной программе 2026 года. Это не аудит чужих продуктов и не рыночная статистика — это наш внутренний отладочный датасет, который мы решили опубликовать.
Аудит датирован (2026-07-24) и снят единой таксономией: 19 накопленных классов плюс 36 новых кластеров, найденных этим прогоном. Медианный экономический скор — 4 из 10 на пике программы: алгебра моделей была доказана гейтами, а вот экономическое построение против брифа — нет.
Каждый класс из таблицы получает механизм или машинный детектор; волны исправлений доведены до продакшена. Мы публикуем это, потому что не видели, чтобы кто-то публиковал дефектологию ИИ-генерируемых моделей на собственных данных.
Восемь семейств дефектов
Полная таксономия аудита, сгруппированная по природе дефекта. Счётчик — находок в аудите; P0 — модели, где класс был критическим.
Механизация брифа
Самое дорогое семейство: бриф просил механизм — кредитную линию, эскроу, вторую очередь — а модель молча собрана без него. Число в ячейке не ошибочно; отсутствует кусок экономики.
| Класс дефекта | Находок | P0-моделей |
|---|---|---|
| Запрошенный KPI отсутствует в выдаче | 19 | — |
| Бриф просил механизм — в модели его молча нет | 16 | 16 |
| Статья разнесена не в тот раздел отчёта | 13 | 7 |
| Метод выхода молча подменён в расчёте доходности | 1 | 1 |
| Контрактация признана выручкой целого года | 1 | — |
| Условия предоплаты подключены с обратным знаком | 1 | — |
| Семантика дефолта/потерь расходится с брифом | 1 | — |
| Гринфилд-профиль CAPEX навязан работающему активу | 1 | 1 |
| Стартовые допущения гринфилда у действующего бизнеса | 1 | — |
| Поддерживающий CAPEX свален в фантомный год стройки | 1 | — |
| Старт операций молча обрезает ряд объёмов | 1 | — |
Утечки шаблона
Калибровка шаблона переживает подстановку фактов клиента: чужая маржа, чужой налоговый режим, «живые» на вид инпуты, за которыми вбит мёртвый ряд.
| Класс дефекта | Находок | P0-моделей |
|---|---|---|
| Дефолт шаблона просочился мимо фактов брифа | 28 | — |
| Налоговый режим и перенос убытков — чужие дефолты | 22 | — |
| Мёртвые драйверы: ряды вбиты за живыми на вид инпутами | 21 | — |
| Мёртвый драйвер отмыт фиктивной ссылкой | 1 | — |
| Годовой переключатель заморожен в скалярном драйвере | 1 | — |
Долг и финансирование
Графики долга константами, неверная амортизация, резервы, подогнанные обратным решением, противоречащие структуры капитала.
| Класс дефекта | Находок | P0-моделей |
|---|---|---|
| График долга вбит константами с неверной амортизацией | 16 | 13 |
| Резерв финансирования подогнан обратным решением | 6 | 5 |
| Ряд DSCR обрезан или загрязнён | 2 | 2 |
| Две противоречащие структуры капитала в одной модели | 1 | 1 |
| Проценты на базе, не согласованной со строкой баланса | 1 | — |
Время и оборотный капитал
Фантомные нулевые годы, оборотный капитал на пустой базе, сезонность, заявленная, но ровная, призрачные хвосты за пределами жизни актива.
| Класс дефекта | Находок | P0-моделей |
|---|---|---|
| Оборотный капитал умножает пустую базу | 20 | — |
| Фантомный нулевой год: блоки разъехались вокруг старта | 8 | 7 |
| Дрейф горизонта: призрачный хвост за пределами жизни актива | 8 | 5 |
| Сезонность заявлена, а ряд ровный | 2 | — |
| Предоткрытие без расходов | 1 | — |
| Годовая сетка засчитывает когортам полный год | 1 | — |
| Ёмкость, равная спросу, срезает сезонный пик | 1 | — |
| Месячный сателлит: ровный опекс при сезонной выручке | 1 | — |
Рост и индексация
Замороженные эскалаторы, ошибки компаундинга, асимметричная индексация затрат к выручке — и хвост разовых арифметических сбоев.
| Класс дефекта | Находок | P0-моделей |
|---|---|---|
| Единичные искажения (разовые арифметические сбои) | 24 | — |
| Эскалатор заморожен на уровне первого года | 1 | — |
| Драйвер роста заморожен в базовом году | 1 | — |
| Разгон роста сложен с ошибкой компаундинга | 1 | — |
| Затраты индексируются асимметрично выручке | 1 | — |
Доходность и терминал
Головной IRR, не отвечающий ни на один инвестиционный вопрос; декоративные cap rate при правящем терминале Гордона; терминальная стоимость без поддерживающего CAPEX.
| Класс дефекта | Находок | P0-моделей |
|---|---|---|
| Головной IRR, не отвечающий ни на один инвестиционный вопрос | 7 | 7 |
| Головные метрики сняты не с того года | 2 | — |
| Cap rate выхода декоративен — правит терминал Гордона | 1 | 1 |
| Незапрошенный перпетуитет-выход доминирует в NPV | 1 | 1 |
| Терминальная стоимость без поддерживающего CAPEX | 1 | 1 |
| Невзвешенный по риску headline на rNPV-сделке | 1 | 1 |
Целостность выдачи
Ответ в чате расходится с книгой, метки происхождения перепутаны, сценарные оси подключены к неработающим рычагам.
| Класс дефекта | Находок | P0-моделей |
|---|---|---|
| Ответ в чате расходится с книгой | 2 | — |
| Вердикт пересертификации расходится с экспортом | 1 | — |
| Факт брифа помечен как допущение | 1 | — |
| Факт брифа понижен до шаблонного дефолта | 1 | — |
| Метки происхождения перепутаны местами | 1 | — |
| Происхождение значения теряет факт брифа | 1 | — |
| Происхождение значений инвертировано | 1 | — |
| Оси сценариев подключены к неработающим рычагам | 1 | — |
| Вырожденная панель сценариев — все случаи схлопываются | 1 | — |
| Синтетическая ось сценария, оторванная от модели | 1 | — |
| Дельта сценария на нулевой строке даёт отрицательную себестоимость | 1 | — |
| Кастомный ряд не совпадает длиной с сеткой модели | 1 | — |
| CAPEX учтён дважды: разовым платежом и годовым рядом | 1 | — |
Структурная капитуляция
Редкое, но фатальное: балансовый бизнес (банк) натянут на generic-DCF без депозитов; цепочка затрат схлопнута в один процент.
| Класс дефекта | Находок | P0-моделей |
|---|---|---|
| Цепочка затрат схлопнута в один калиброванный процент | 4 | 3 |
| Generic-DCF натянут на балансовый бизнес (банк без депозитов) | 2 | 2 |
Шесть профилей крупным планом
Самые поучительные классы: как выглядит дефект, почему он выживает и чем ловится машиной.
Бриф просил механизм — его молча нет
- Как выглядит
- Бриф описывает кредитную линию, эскроу-схему или вторую очередь стройки. Агент собирает модель без этого механизма — она сходится, сертифицируется и выглядит здоровой.
- Почему выживает
- Это класс №1 по критичности: 16 моделей из 32, все — P0. Ошибки нет ни в одной ячейке; отсутствует кусок экономики, и заметить это можно только сверкой выдачи с брифом, а не проверкой модели самой по себе.
- Чем ловится
- Интейк-гейт обязательных структур перед сборкой + сигнатурные детекторы блоковых вертикалей: модель с лексикой кредитования, но без кредитного блока, не проходит сборку.
Дефолт шаблона просочился мимо брифа
- Как выглядит
- Клиент назвал свою маржу, ставку или долю — а в модели осталась калибровка шаблона. Самый массовый класс: 28 находок.
- Почему выживает
- Число выглядит правдоподобно, потому что оно правдоподобно — для другого бизнеса. Без меток происхождения отличить факт клиента от дефолта шаблона в готовой книге невозможно.
- Чем ловится
- Провенанс-метки на каждом драйвере (факт брифа / калибровка / дефолт) и сверка: факты брифа обязаны пережить сборку дословно.
График долга вбит константами
- Как выглядит
- Ряд процентов и погашений вбит числами: амортизация не того типа (аннуитет вместо равных долей), рефинанс не отражён, при изменении ставки ряд не шевелится.
- Почему выживает
- 13 из 16 случаев — P0. Долг — самая связная часть модели: вбитый ряд рвёт связь с балансом и DSCR, и модель перестаёт отвечать на вопрос «а если ставка выше».
- Чем ловится
- Долговой блок обязан строиться механизмом из условий кредита; детектор вбитых серий помечает ряды без формульной родословной.
Оборотный капитал умножает пустую базу
- Как выглядит
- Кредиторка задана долей от закупок — а строка закупок в этой модели пуста. Доля умножает ноль: оборотный капитал исчезает, кэш-флоу приукрашен. 20 находок.
- Почему выживает
- Ошибка невидима в отчётах: баланс сходится, знаки правильные, просто одна из строк тихо равна нулю на всём горизонте.
- Чем ловится
- База каждой доли — явный выбор, а не соглашение; линт пустой базы валит сборку, если доля умножает нулевую строку.
IRR, не отвечающий ни на один вопрос
- Как выглядит
- Заголовочный IRR посчитан от смеси несравнимых потоков — levered с unlevered, операционный поток с экзитом чужого горизонта. Число есть; вопроса, на который оно отвечает, нет.
- Почему выживает
- Все 7 случаев — P0: это число уходит в решение. IRR — самая цитируемая метрика модели и самая лёгкая в порче: функция вернёт результат почти для любого ряда.
- Чем ловится
- Дисциплина подписей 2×2 (проектный/акционерный × с плечом/без) и гард множественных корней: неоднозначный IRR не публикуется как головной.
Призрачный хвост за пределами жизни актива
- Как выглядит
- Актив конечен — лицензия, месторождение, аренда — но поток продолжает жить за пределом: выручка после исчерпания, D&A после списания, долг, не погашенный к концу жизни.
- Почему выживает
- Хвост из двух-трёх лишних лет может дать заметную долю NPV. Модель выглядит консервативной по каждому году и лжёт совокупностью.
- Чем ловится
- Finite-life механика: срок жизни — свойство актива, а не сетки; терминальные гейты сверяют выживание каждой строки с жизнью актива.
Как это соотносится со стандартами
Стандарты моделирования существуют, и мы на них опираемся: FAST Standard — признанный стандарт ремесла; ICAEW Financial Modelling Code — свод принципов, по которому мы замеряем собственный экспорт; SSRB и методологии модельного аудита — зрелая дисциплина проверки руками.
Наш слой — другой и дополняющий: машинная проверка каждой сборки вместо разовой ручной, обоснованность допущений против отраслевых источников — которую классический модельный аудит явно выносит за скобки — и дефектология именно ИИ-генерации, где главный класс ошибок — слой механизации брифа, а не формулы.
Что проверяется в каждой сборке
Таксономия — не музей: каждый класс закрыт механизмом или детектором, и проверка выполняется машиной при каждой сборке модели.
- Паритет Python ↔ Excel: каждая формула книги пересчитывается независимо, допуск 1e-6.
- Схождение трёх отчётов: баланс обязан сойтись, несведённая модель не собирается.
- Полосы правдоподобия с источниками: головные метрики против отраслевых диапазонов с документами.
- Сигнатурные детекторы структур: лексика брифа без соответствующего блока валит сборку.
- Линты мёртвых драйверов и пустых баз: «живой» инпут обязан влиять на модель.
- Провенанс-метки: факт брифа, калибровка или дефолт — у каждого значения есть родословная.
Аудит датирован 2026-07-24; таксономия: 55 классов на 32 моделях.
Постройте модель, которую проверила машина
Rootsmodel собирает трёхотчётную модель с живыми формулами и прогоняет её через все проверки из этого списка — сертификат целостности прилагается к каждой сборке.