Заполнение трёхотчётной финансовой модели
Достраивает шаблон модели: связывает отчёт о прибылях и убытках, баланс и движение денег, проверяет сходимость и сценарии.
- Что делает
- Достраивает шаблон модели: связывает отчёт о прибылях и убытках, баланс и движение денег, проверяет сходимость и сценарии.
- Когда брать
- Когда нужно заполнить или довести до конца шаблон трёхотчётной финансовой модели (IS, BS, CF).
- Когда не брать
- Если нужна готовая оценка компании (DCF) или аудит чужой модели: для этого есть отдельные скиллы.
- Пример запроса
- Заполни этот шаблон трёхотчётной модели по данным за последние три года и построй прогноз на пять лет.
- Нужно подключить
- Excel или таблица
- Работает лучше с
- отчётность компании (10-K, 10-Q)
Входит в плагин model-builder. В Cowork и Claude Code можно поставить плагин целиком.
Как включить
- Нажмите «Скачать на русском» и сохраните архив.
- В Claude откройте Настройки → Capabilities → Skills → Upload skill и выберите архив.
- Включите скилл переключателем.
Для терминала
Распакуйте архив и положите папку 3-statement-model в ~/.claude/skills/. Файл SKILL.md должен лежать внутри этой папки.
Текст
---
name: 3-statement-model
description: Достраивает, заполняет и доводит до конца шаблоны трёхотчётной финансовой модели (отчёт о прибылях и убытках, баланс, отчёт о движении денежных средств). Используй, когда просят заполнить шаблон модели, закончить готовый каркас модели, внести данные в финансовую модель, доделать частично заполненный каркас IS/BS/CF или связать взаимосвязанные финансовые отчёты внутри готовой структуры шаблона. Срабатывает на просьбы заполнить, дополнить или наполнить шаблон трёхотчётной модели
---
Заполнение шаблона трёхотчётной финансовой модели
Дополни и заполни связанные шаблоны финансовой модели так, чтобы отчёт о прибылях и убытках (Income Statement), баланс (Balance Sheet) и отчёт о движении денежных средств (Cash Flow Statement) были правильно связаны между собой.
⚠️ КЛЮЧЕВЫЕ ПРИНЦИПЫ — прочитай, прежде чем заполнять любой шаблон
Среда: Office JS или Python:
- Если ты работаешь внутри Excel (надстройка Office / Office JS): используй Office JS напрямую. Формулы записывай через
range.formulas = [["=D14*(1+Assumptions!$B$5)"]], для расчётных ячеек никогда не используйrange.values. Отдельный пересчёт не нужен: Excel считает сам. Для перехода между листами используйcontext.workbook.worksheets.getItem(...). - Если ты создаёшь отдельный файл .xlsx: используй Python/openpyxl. Записывай
ws["D15"] = "=D14*(1+Assumptions!$B$5)", а перед сдачей запустиrecalc.py. - Ловушка объединённых ячеек в Office JS: НЕ вызывай
.merge(), а потом не задавай.valuesдля объединённого диапазона: будет ошибкаInvalidArgument, потому что диапазон всё ещё сообщает размеры до объединения. Вместо этого запиши значение только в левую верхнюю ячейку, затем объедини и отформатируй весь диапазон:ws.getRange("A1").values = [["INCOME STATEMENT"]]; const h = ws.getRange("A1:G1"); h.merge(); h.format.fill.color = "#1F4E79"; - Все принципы ниже одинаково действуют в любой среде.
Формулы вместо зашитых чисел (не обсуждается):
- Каждая ячейка прогноза, переход остатков (roll-forward), связь и промежуточный итог ОБЯЗАНЫ быть формулой Excel, а не заранее посчитанным значением
- При работе с Python/openpyxl записывай строки с формулами (
ws["D15"] = "=D14*(1+Assumptions!$B$5)"), а НЕ посчитанные результаты (ws["D15"] = 12500) - Зашитые числа допустимы ТОЛЬКО в двух местах: (1) исторические фактические данные, (2) драйверы допущений на листе Assumptions
- Если ты ловишь себя на том, что считаешь значение в Python и записываешь результат в ячейку, ОСТАНОВИСЬ. Запиши вместо этого формулу.
- Почему: модель должна пересчитываться при переключении сценариев и смене допущений. Зашитые числа молча ломают все проверки целостности ниже по цепочке.
Проверяй каждый шаг вместе с пользователем:
- После разбора шаблона → покажи пользователю, какие листы и разделы ты определил, и дождись подтверждения, прежде чем трогать ячейки
- После заполнения исторических данных → покажи пользователю блок с историей и подтверди, что значения и периоды совпадают с исходными данными
- После построения прогноза IS → запусти проверки промежуточных итогов, покажи пользователю прогнозный IS и подтверди результат, прежде чем переходить к BS
- После построения BS → покажи пользователю проверку баланса (Активы = Обязательства + Капитал) за каждый период и подтверди результат, прежде чем переходить к CF
- После построения CF → покажи сверку денежных средств (конечный остаток CF = денежные средства в BS) и подтверди результат, прежде чем завершать работу
- НЕ заполняй всю модель от начала до конца, чтобы показать её уже готовой: останавливайся после каждого отчёта, показывай результат и лови ошибки на раннем этапе
Оформление — профессиональная сине-серая палитра (по умолчанию, если шаблон или пользователь не требуют иного)
Цветов должно быть минимум. Для заливки ячеек используй только синий и серый. НЕ добавляй зелёный, жёлтый, оранжевый и несколько акцентных цветов: чистая модель строится сдержанно.
| Элемент | Заливка | Шрифт |
|---|---|---|
| Заголовки разделов (названия IS / BS / CF) | Тёмно-синий #1F4E79 | Белый, жирный |
| Заголовки столбцов (FY2024A, FY2025E и т. д.) | Светло-синий #D9E1F2 | Чёрный, жирный |
| Ячейки ввода (история, драйверы допущений) | Светло-серый #F2F2F2 или белый | Синий #0000FF |
| Ячейки с формулами | Белая | Чёрный |
| Ссылки между листами | Белая | Зелёный #008000 |
| Строки проверок / ключевые итоги | Средне-синий #BDD7EE | Чёрный, жирный |
Итого три синих, один серый и белый. Если у шаблона своя цветовая схема, следуй шаблону.
Цвет шрифта показывает, *чем* является ячейка (ввод, формула, ссылка). Цвет заливки показывает, *где* ты находишься (заголовок, данные, проверка).
Структура модели
Как определить организацию листов шаблона
Названия листов и их организация в шаблонах разные. Перед заполнением просмотри все листы и пойми структуру шаблона. Ниже распространённые названия листов и то, что на них обычно лежит:
| Типичные названия листов | Что искать |
|---|---|
| IS, P&L, Income Statement | Отчёт о прибылях и убытках |
| BS, Balance Sheet | Баланс |
| CF, CFS, Cash Flow | Отчёт о движении денежных средств |
| WC, Working Capital | График оборотного капитала |
| DA, D&A, Depreciation, PP&E | График износа и амортизации |
| Debt, Debt Schedule | График долга |
| NOL, Tax, DTA | График налоговых убытков, переносимых на будущее (NOL) |
| Assumptions, Inputs, Drivers | Драйверы допущений и вводные данные |
| Checks, Audit, Validation | Панель проверки ошибок |
Чек-лист разбора шаблона
- Определи, какие листы есть в шаблоне (не во всех шаблонах есть все графики)
- Отметь листы, специфичные для этого шаблона и не вошедшие в список выше
- Пойми зависимости между листами (например, какие графики питают основные отчёты)
- Найди ячейки ввода и ячейки с формулами на каждом листе
Как устроена структура шаблона
Прежде чем заполнять шаблон, изучи его готовую раскладку, чтобы вносить данные в нужные места и не повредить формулы.
Как определить структуру строк
- Найди название модели в верхней части каждого листа
- Определи заголовки разделов и их визуальное разделение
- Найди строку единиц измерения: $ млн, %, x и т. д.
- Отметь заголовки столбцов, разделяющие фактические и оценочные периоды
- Подтверди подписи периодов (например, FY2024A, FY2025E)
- Определи ячейки ввода и ячейки с формулами (обычно они отличаются цветом шрифта)
Как определить структуру столбцов
- Проверь, что подписи статей стоят в крайнем левом столбце
- Убедись, что исторические годы идут раньше прогнозных
- Найди визуальную границу, отделяющую историю от прогноза
- Проверь, что порядок столбцов одинаков на всех листах
Работа с именованными диапазонами В шаблонах часто используют именованные диапазоны для ключевых входов и выходов. Перед вводом данных:
- Просмотри существующие именованные диапазоны шаблона (в Excel: Формулы → Диспетчер имён)
- Обычно именуют: темпы роста выручки, процентные доли затрат, ключевые результаты (чистая прибыль, EBITDA, общий долг, денежные средства), ячейку выбора сценария
- Убедись, что данные вводятся в ячейки, которые питают эти именованные диапазоны
Период прогноза
- Обычно шаблоны прогнозируют 5 лет вперёд от последнего исторического года
- Проверь, что исторические (A) и прогнозные (E) столбцы чётко разделены
- Убедись, что в столбцах используется запись финансового года (например, FY2024A, FY2025E)
Анализ маржи
Примечание: приведённый ниже анализ маржи выполняй только по просьбе пользователя или если его явно требует шаблон. Если такой просьбы нет, пропусти этот раздел.
Рассчитай и покажи маржу рентабельности на листе отчёта о прибылях и убытках (IS), чтобы отслеживать операционную эффективность и позволить сравнение с аналогами.
Основные показатели маржи
| Маржа | Формула | Что измеряет |
|---|---|---|
| Валовая маржа | Валовая прибыль / Выручка | Ценовую власть, эффективность производства |
| Маржа EBITDA | EBITDA / Выручка | Базовую операционную рентабельность |
| Маржа EBIT | EBIT / Выручка | Операционную рентабельность после D&A |
| Маржа чистой прибыли | Чистая прибыль / Выручка | Рентабельность по нижней строке |
Раскладка отчёта о прибылях и убытках с маржой
Показывай процент маржи прямо под каждой строкой прибыли:
- Валовая маржа, % — под валовой прибылью
- Маржа EBIT, % — под EBIT
- Маржа EBITDA, % — под EBITDA
- Маржа чистой прибыли, % — под чистой прибылью
Кредитные показатели
Примечание: приведённый ниже кредитный анализ выполняй только по просьбе пользователя или если его явно требует шаблон. Если такой просьбы нет, пропусти этот раздел.
Рассчитай и покажи показатели кредитной нагрузки и левериджа на листе баланса (BS), чтобы оценить финансовое здоровье, способность брать долг и соблюдение ковенантов.
Основные кредитные показатели
| Показатель | Формула | Что измеряет |
|---|---|---|
| Общий долг / EBITDA | Общий долг / EBITDA за последние 12 месяцев (LTM) | Кратность долговой нагрузки |
| Чистый долг / EBITDA | (Общий долг − денежные средства) / EBITDA за LTM | Нагрузку за вычетом денежных средств |
| Покрытие процентов | EBITDA / Процентные расходы | Способность обслуживать долг |
| Долг / Общий капитал | Общий долг / (Общий долг + Собственный капитал) | Структуру капитала |
| Долг / Собственный капитал | Общий долг / Собственный капитал | Финансовый леверидж |
| Коэффициент текущей ликвидности | Оборотные активы / Краткосрочные обязательства | Краткосрочную ликвидность |
| Коэффициент быстрой ликвидности | (Оборотные активы − Запасы) / Краткосрочные обязательства | Немедленную ликвидность |
Проверки иерархии кредитных показателей
Убедись, что в оптимистичном сценарии (Upside) самый сильный кредитный профиль:
- Леверидж: Upside < Base < Downside (чем ниже, тем лучше)
- Покрытие: Upside > Base > Downside (чем выше, тем лучше)
- Ликвидность: Upside > Base > Downside (чем выше, тем лучше)
Контроль соблюдения ковенантов
Если долговые ковенанты известны, добавь явные проверки соблюдения: сравнивай фактические показатели с пороговыми значениями ковенантов.
Анализ сценариев (базовый / оптимистичный / пессимистичный)
Используй переключатель сценариев (выпадающий список) на листе Assumptions с формулами CHOOSE или INDEX/MATCH.
| Сценарий | Описание |
|---|---|
| Базовый (Base Case) | Прогноз менеджмента или консенсус-оценки |
| Оптимистичный (Upside Case) | Рост выше прогноза, расширение маржи |
| Пессимистичный (Downside Case) | Рост ниже тренда, сжатие маржи |
Ключевые драйверы для проверки чувствительности: темп роста выручки, валовая маржа, SG&A в % от выручки, DSO/DIO/DPO, CapEx в % от выручки, процентная ставка, ставка налога.
Проверки сценариев: переключатель меняет все отчёты, баланс сходится во всех сценариях, денежные средства сходятся, иерархия соблюдается (Upside > Base > Downside для чистой прибыли, EBITDA, свободного денежного потока и маржи).
Извлечение данных из отчётов SEC
Если шаблон прямо требует взять данные из отчётов SEC (10-K, 10-Q), подробное руководство по извлечению смотри в [references/sec-filings.md](references/sec-filings.md). Этот справочник нужен только при заполнении шаблонов данными публичных компаний из регуляторных отчётов.
Заполнение шаблонов модели
В этом разделе общее руководство по заполнению любого шаблона трёхотчётной финансовой модели с сохранением существующих формул и целостности данных.
Шаг 1: Разбери структуру шаблона
Прежде чем вводить данные, внимательно изучи шаблон и пойми его архитектуру:
Определи ячейки ввода и ячейки с формулами
- Ищи визуальные признаки (цвет шрифта, заливка ячейки), которые отличают ячейки ввода от ячеек с формулами
- Распространённые правила: синий шрифт — ввод, чёрный — формулы, зелёный — ссылки на другие листы
- Используй в Excel «Влияющие ячейки» и «Зависимые ячейки» (Формулы → Влияющие ячейки), чтобы понять связи между ячейками
- Проверь именованные диапазоны, которые могут управлять ключевыми вводами (Формулы → Диспетчер имён)
Составь карту потока данных в шаблоне
- Определи, какие листы питают другие (например, Assumptions → IS → BS → CF)
- Отметь вспомогательные графики и их связи с основными отчётами
- Запиши конкретные статьи и структуру шаблона до заполнения
Шаг 2: Внеси данные, не сломав формулы
Золотые правила ввода данных
| Правило | Описание |
|---|---|
| Редактируй только ячейки ввода | Никогда не перезаписывай ячейки с формулами, если не собираешься заменить формулу намеренно |
| Сохраняй ссылки на ячейки | При копировании данных используй «Вставить значения» (Ctrl+Shift+V), чтобы форматирование источника не затёрло формулы |
| Соблюдай единицы шаблона | Прежде чем вводить данные, проверь, в чём ведётся шаблон: в тысячах, миллионах или в абсолютных значениях |
| Соблюдай правила знаков | Следуй правилу знаков, которое уже есть в шаблоне (например, расходы положительные или отрицательные) |
| Проверь циклические ссылки | Если шаблон использует итеративные вычисления, убедись, что включён параметр «Включить итеративные вычисления» |
Безопасный порядок ввода данных
- Найди точные ячейки, предназначенные для ввода (обычно они выделены или подписаны)
- Сначала внеси исторические данные, затем проверь, что формулы за эти периоды считаются правильно
- Внеси драйверы допущений, которые питают расчёт прогноза
- Просмотри расчётные результаты и убедись, что формулы работают как задумано
- Если нужно изменить ячейку с формулой, запиши исходную формулу до изменения
Работа с готовыми формулами
- Если формулы ссылаются на ячейки, которые ты ещё не заполнил, временные ошибки (#REF!, #DIV/0!) ожидаемы, пока не будут введены все данные
- Если формулы дают неожиданный результат, проследи влияющие ячейки и найди пропущенные или неверные вводы
- Никогда не удаляй строки и столбцы, не проверив зависимости формул на всех листах
Шаг 3: Проверка формул
Проверки целостности формул
Прежде чем полагаться на результаты шаблона, проверь, что формулы работают правильно:
| Вид проверки | Способ |
|---|---|
| Влияющие ячейки | Выдели ячейку с формулой → Формулы → Влияющие ячейки: убедись, что она ссылается на правильные вводы |
| Зависимые ячейки | Убедись, что ключевые вводы доходят до ожидаемых ячеек результата |
| Вычисление формулы | Пройди сложные расчёты по шагам через Формулы → Вычислить формулу |
| Поиск зашитых чисел | Формулы прогноза должны ссылаться на допущения, а не содержать зашитые значения |
| Проверка на известных значениях | Введи простые тестовые значения и убедись, что формулы дают ожидаемый результат |
| Согласованность между листами | Убедись, что одна и та же логика формул применяется во всех периодах прогноза |
Типичные проблемы с формулами, на которые стоит смотреть
- Смешанные абсолютные и относительные ссылки дают неверный результат при копировании по периодам
- Битые ссылки на внешние файлы или удалённые диапазоны (ошибки #REF!)
- Деление на ноль в ранних периодах, пока выручка не вышла на уровень (ошибки #DIV/0!)
- Предупреждения о циклических ссылках (для расчёта процентов они могут быть намеренными)
- Несогласованные формулы в столбцах прогноза (Ctrl+\ помогает найти отличия)
Проверка связей между листами
- Убедись, что значения, которые встречаются на нескольких листах, связаны ссылками, а не продублированы
- Проверь, что итоги графиков сходятся с соответствующими статьями основных отчётов
- Проверь, что подписи периодов совпадают на всех листах
Шаг 4: Проверки качества по листам
Когда шаблон заполнен, выполни эти проверки на каждом листе:
Проверки отчёта о прибылях и убытках (IS)
- Выручка за исторические периоды совпадает с исходными данными
- Все статьи расходов в сумме дают отчётные итоги
- Промежуточные итоги (валовая прибыль, EBIT, EBT, чистая прибыль) считаются правильно
- Логика расчёта налога подходит (убытки учитываются верно)
- Драйверы прогноза ссылаются на лист допущений (без зашитых чисел)
- Изменения от периода к периоду направлены в разумную сторону
Проверки баланса (BS)
- Активы = Обязательства + Капитал в каждом периоде (главная проверка)
- Остаток денежных средств совпадает с конечным остатком по отчёту о движении денежных средств
- Статьи оборотного капитала сходятся с вспомогательными графиками (если они есть)
- Нераспределённая прибыль (RE) переходит из периода в период правильно: прошлая RE + чистая прибыль − дивиденды +/− корректировки = конечная RE
- Остатки по долгу сходятся с графиком долга (если он есть)
- У всех статей баланса подходящие знаки (активы положительные, большинство обязательств положительные)
Проверки отчёта о движении денежных средств (CF)
- Чистая прибыль в начале операционного потока (CFO) совпадает с чистой прибылью в отчёте о прибылях и убытках
- Неденежные добавления (D&A, SBC и т. д.) сходятся с исходными графиками и отчётами
- Изменения оборотного капитала имеют правильные знаки (рост актива = использование денег = минус)
- CapEx сходится с графиком PP&E или переходом остатков основных средств
- Финансовая деятельность сходится с изменениями долга и капитала в BS
- Конечный остаток денежных средств совпадает с денежными средствами в балансе
- Начальный остаток денежных средств равен конечному остатку предыдущего периода
Проверки вспомогательных графиков
- Начальные остатки равны конечным остаткам предыдущего периода
- Логика перехода остатков полна (начало + поступления − выбытия = конец)
- Итоги графиков сходятся со статьями основных отчётов
- Допущения, использованные в расчётах, совпадают с листом Assumptions
Шаг 5: Проверки целостности между отчётами
Когда отдельные листы проверены, убедись, что три отчёта правильно связаны между собой:
| Проверка | Формула | Ожидаемый результат |
|---|---|---|
| Баланс сходится | Активы − Обязательства − Капитал | = 0 |
| Сверка денежных средств | Конечный остаток денежных средств по CF − денежные средства по BS | = 0 |
| Связь чистой прибыли | Чистая прибыль по IS − чистая прибыль в начале CF | = 0 |
| Нераспределённая прибыль | Прошлая RE + чистая прибыль − дивиденды − конечная RE по BS | = 0 (при необходимости поправь на SBC и другие статьи) |
Шаг 6: Итоговая проверка
Прежде чем считать модель законченной:
- Пройди по всем сценариям (если они есть) и убедись, что проверки проходят в каждом из них
- Просмотри все ошибки #REF!, #DIV/0!, #VALUE! и #NAME? и исправь или задокументируй их
- Убедись, что все ячейки ввода заполнены (поищи значения-заглушки)
- Проверь, что единицы измерения одинаковы на всех листах
- Сохрани чистую версию, прежде чем вносить дополнительные изменения
Проверка и аудит модели
В этом разделе собраны все проверки и процедуры аудита для готовых шаблонов.
Основные связи (должны выполняться всегда)
Все подробности по формулам смотри в [references/formulas.md](references/formulas.md).
| Проверка | Формула | Ожидаемый результат |
|---|---|---|
| Баланс сходится | Активы − Обязательства − Капитал | = 0 |
| Сверка денежных средств | Конечный остаток денежных средств по CF − денежные средства по BS | = 0 |
| Денежные средства: месяцы и год | Конечный остаток (по месяцам) − конечный остаток (по году) | = 0 |
| Связь чистой прибыли | Чистая прибыль по IS − чистая прибыль в начале CF | = 0 |
| Нераспределённая прибыль | Прошлая RE + NI + SBC − дивиденды − конечная RE по BS | = 0 |
| Финансирование капиталом | ΔОбыкновенные акции/APIC (BS) − выпуск акций (CFF) | = 0 |
| Капитал нулевого года | Привлечённый капитал (год 0) − начальный акционерный капитал (год 1) | = 0 |
Справочник по правилам знаков
| Отчёт | Статья | Правило знака |
|---|---|---|
| CFO | D&A, SBC | Плюс (добавление) |
| CFO | ΔAR (рост) | Минус (использование денег) |
| CFO | ΔAP (рост) | Плюс (источник денег) |
| CFI | CapEx | Минус |
| CFF | Привлечение долга | Плюс |
| CFF | Погашение долга | Минус |
| CFF | Дивиденды | Минус |
Работа с циклическими ссылками
Процентные расходы создают цикл: проценты → чистая прибыль → денежные средства → остаток долга → проценты.
Включи итеративные вычисления в Excel: Файл → Параметры → Формулы → Включить итеративные вычисления. Задай максимум итераций 100 и максимальное изменение 0,001. Добавь на листе Assumptions выключатель цикла (circuit breaker).
Категории проверок
Раздел 1: Единообразие валюты
- Валюта определена и описана на листе Assumptions
- На всех листах одинаковый символ валюты и масштаб
- Строка единиц совпадает с валютой модели
Раздел 2: Целостность баланса
- Активы = Обязательства + Капитал (в каждом периоде)
- Формула: Активы − Обязательства − Капитал (должно быть = 0)
Раздел 3: Целостность движения денежных средств
- Денежные средства сходятся с BS (конечный остаток по CF = денежные средства по BS)
- Денежные средства: месяцы и год: конечный остаток (по месяцам) = конечный остаток (по году)
- Чистая прибыль сходится с IS (чистая прибыль по CF = чистая прибыль по IS)
- D&A сходится с графиком
- SBC сходится с IS
- ΔAR, ΔInventory, ΔAP сходятся с графиком оборотного капитала
- CapEx сходится с графиком DA
Раздел 4: Нераспределённая прибыль
- Проверка перехода RE: прошлая RE + NI + SBC − дивиденды = конечная RE
- Покажи разбивку по составляющим для отладки
Раздел 5: Оборотный капитал
- AR, запасы и AP сходятся с BS
- Проверки разумности DSO, DIO, DPO (отметь, если значения выходят за обычные диапазоны)
Раздел 6: График долга
- Общий долг сходится с BS (краткосрочный + долгосрочный долг)
- Расчёт процентов сходится с IS
Раздел 6b: Финансирование капиталом
- Поступления от выпуска акций сходятся с ростом обыкновенных акций/APIC в BS
- Рост денег от капитала = рост счёта капитала (должно сходиться)
- Сверка привлечения капитала: ΔОбыкновенные акции/APIC (BS) = выпуск акций (CFF) (должно быть = 0)
- Сверка капитала нулевого года: привлечённый капитал (год 0) = начальный акционерный капитал (год 1)
Раздел 6c: График NOL
- Начальный NOL (год 1 / создание) = 0 (новый бизнес стартует с нулевым NOL)
- NOL растёт, только когда EBT < 0 (убытки должны быть признаны, чтобы создать NOL)
- DTA сходится с BS (DTA в графике NOL = отложенный налоговый актив в BS)
- Использование NOL ≤ 80 % от EBT (федеральное ограничение США после 2017 года)
- Остаток NOL неотрицателен (нельзя использовать больше, чем есть)
- NOL создаётся только при EBT < 0
- Налоговый расход = 0, когда налогооблагаемая прибыль ≤ 0
Раздел 7: Иерархия сценариев
- Абсолютные показатели: Upside > Base > Downside (чистая прибыль, EBITDA, свободный денежный поток)
- Маржа: Upside > Base > Downside (валовая маржа, маржа EBITDA, маржа чистой прибыли)
- Кредитные показатели: для левериджа Upside < Base < Downside (наоборот)
Раздел 8: Целостность формул
- COGS, S&M, G&A, R&D, SBC зависят от % выручки (без зашитых чисел)
- Формулы одинаковы во всех годах прогноза
- Нет ошибок #REF!, #DIV/0!, #VALUE!
Раздел 9: Пороги кредитных показателей
- Отмечай показатели как зелёные, жёлтые или красные в зависимости от порогов ковенантов
- Сводка по всем красным флагам (red flags)
Формула общей проверки
Сведи статусы всех разделов в одну общую проверку:
- Если все разделы пройдены → «✓ ВСЕ ПРОВЕРКИ ПРОЙДЕНЫ»
- Если хотя бы один раздел не пройден → «✗ ОБНАРУЖЕНЫ ОШИБКИ — СМОТРИ НИЖЕ»
Быстрый порядок отладки
Когда общий статус показывает ошибки:
- Прокрути до разделов, выделенных красным
- Определи, в какой категории проверок есть сбои
- Перейди на исходный лист и разберись
- Исправь первопричину
- Вернись на лист Checks и убедись, что ошибка устранена
Перевод: iiuniversitet. Оригинал: https://github.com/anthropics/financial-services/tree/main/plugins/agent-plugins/model-builder/skills/3-statement-model, лицензия Apache-2.0. Изменения: перевод на русский язык.
Оригинал на английском
---
name: 3-statement-model
description: Complete, populate and fill out 3-statement financial model templates (Income Statement, Balance Sheet, Cash Flow Statement) . Use when asked to fill out model templates, complete existing model frameworks, populate financial models with data, complete a partially filled IS/BS/CF framework, or link integrated financial statements within an existing template structure. Triggers include requests to fill in, complete, or populate a 3-statement model template
---
# 3-Statement Financial Model Template Completion
Complete and populate integrated financial model templates with proper linkages between Income Statement, Balance Sheet, and Cash Flow Statement.
## ⚠️ CRITICAL PRINCIPLES — Read Before Populating Any Template
**Environment — Office JS vs Python:**
- **If running inside Excel (Office Add-in / Office JS):** Use Office JS directly. Write formulas via `range.formulas = [["=D14*(1+Assumptions!$B$5)"]]` — never `range.values` for derived cells. No separate recalc; Excel computes natively. Use `context.workbook.worksheets.getItem(...)` to navigate tabs.
- **If generating a standalone .xlsx file:** Use Python/openpyxl. Write `ws["D15"] = "=D14*(1+Assumptions!$B$5)"`, then run `recalc.py` before delivery.
- **Office JS merged cell pitfall:** Do NOT call `.merge()` then set `.values` on the merged range — throws `InvalidArgument` because the range still reports its pre-merge dimensions. Instead write value to top-left cell alone, then merge + format the full range: `ws.getRange("A1").values = [["INCOME STATEMENT"]]; const h = ws.getRange("A1:G1"); h.merge(); h.format.fill.color = "#1F4E79";`
- All principles below apply identically in either environment.
**Formulas over hardcodes (non-negotiable):**
- Every projection cell, roll-forward, linkage, and subtotal MUST be an Excel formula — never a pre-computed value
- When using Python/openpyxl: write formula strings (`ws["D15"] = "=D14*(1+Assumptions!$B$5)"`), NOT computed results (`ws["D15"] = 12500`)
- The ONLY cells that should contain hardcoded numbers are: (1) historical actuals, (2) assumption drivers in the Assumptions tab
- If you find yourself computing a value in Python and writing the result to a cell — STOP. Write the formula instead.
- Why: the model must flex when scenarios toggle or assumptions change. Hardcodes break every downstream integrity check silently.
**Verify step-by-step with the user:**
1. **After mapping the template** → show the user which tabs/sections you've identified and confirm before touching any cells
2. **After populating historicals** → show the user the historical block and confirm values/periods match source data
3. **After building IS projections** → run the subtotal checks, show the user the projected IS, confirm before moving to BS
4. **After building BS** → show the user the balance check (Assets = L+E) for every period, confirm before moving to CF
5. **After building CF** → show the user the cash tie-out (CF ending cash = BS cash), confirm before finalizing
6. **Do NOT populate the entire model end-to-end and present it complete** — break at each statement, show the work, catch errors early
## Formatting — Professional Blue/Grey Palette (Default unless template/user specifies otherwise)
**Keep colors minimal.** Use only blues and greys for cell fills. Do NOT introduce greens, yellows, oranges, or multiple accent colors — a clean model uses restraint.
| Element | Fill | Font |
|---|---|---|
| Section headers (IS / BS / CF titles) | Dark blue `#1F4E79` | White bold |
| Column headers (FY2024A, FY2025E, etc.) | Light blue `#D9E1F2` | Black bold |
| Input cells (historicals, assumption drivers) | Light grey `#F2F2F2` or white | Blue `#0000FF` |
| Formula cells | White | Black |
| Cross-tab links | White | Green `#008000` |
| Check rows / key totals | Medium blue `#BDD7EE` | Black bold |
**That's 3 blues + 1 grey + white.** If the template has its own color scheme, follow the template instead.
Font color signals *what* a cell is (input/formula/link). Fill color signals *where* you are (header/data/check).
## Model Structure
### Identifying Template Tab Organization
Templates vary in their tab naming conventions and organization. Before populating, review all tabs to understand the template's structure. Below are common tab names and their typical contents:
| Common Tab Names | Contents to Look For |
|------------------|----------------------|
| IS, P&L, Income Statement | Income Statement |
| BS, Balance Sheet | Balance Sheet |
| CF, CFS, Cash Flow | Cash Flow Statement |
| WC, Working Capital | Working Capital Schedule |
| DA, D&A, Depreciation, PP&E | Depreciation & Amortization Schedule |
| Debt, Debt Schedule | Debt Schedule |
| NOL, Tax, DTA | Net Operating Loss Schedule |
| Assumptions, Inputs, Drivers | Driver assumptions and inputs |
| Checks, Audit, Validation | Error-checking dashboard |
**Template Review Checklist**
- Identify which tabs exist in the template (not all templates include every schedule)
- Note any template-specific tabs not listed above
- Understand tab dependencies (e.g., which schedules feed into the main statements)
- Locate input cells vs. formula cells on each tab
### Understanding Template Structure
Before populating a template, familiarize yourself with its existing layout to ensure data is entered in the correct locations and formulas remain intact.
**Identifying Row Structure**
- Locate the model title at top of each tab
- Identify section headers and their visual separation
- Find the units row indicating $ millions, %, x, etc.
- Note column headers distinguishing Actuals vs. Estimates periods
- Confirm period labels (e.g., FY2024A, FY2025E)
- Identify input cells vs. formula cells (typically distinguished by font color)
**Identifying Column Structure**
- Confirm line item labels in leftmost column
- Verify historical years precede projection years
- Note the visual border separating historical from projected periods
- Check for consistent column order across all tabs
**Working with Named Ranges**
Templates often use named ranges for key inputs and outputs. Before entering data:
- Review existing named ranges in the template (Formulas → Name Manager in Excel)
- Common named ranges include: Revenue growth rates, cost percentages, key outputs (Net Income, EBITDA, Total Debt, Cash), scenario selector cell
- Ensure inputs are entered in cells that feed into these named ranges
### Projection Period
- Templates typically project 5 years forward from last historical year
- Verify historical (A) vs. projected (E) columns are clearly separated
- Confirm columns use fiscal year notation (e.g., FY2024A, FY2025E)
## Margin Analysis
**Note: The following margin analysis should only be performed if prompted by the user or if the template explicitly requires it. If no prompt is given, skip this section.**
Calculate and display profitability margins on the Income Statement (IS) tab to track operational efficiency and enable peer comparison.
### Core Margins to Include
| Margin | Formula | What It Measures |
|--------|---------|------------------|
| Gross Margin | Gross Profit / Revenue | Pricing power, production efficiency |
| EBITDA Margin | EBITDA / Revenue | Core operating profitability |
| EBIT Margin | EBIT / Revenue | Operating profitability after D&A |
| Net Income Margin | Net Income / Revenue | Bottom-line profitability |
### Income Statement Layout with Margins
Display margin percentages directly below each profit line item:
- Gross Margin % below Gross Profit
- EBIT Margin % below EBIT
- EBITDA Margin % below EBITDA
- Net Income Margin % below Net Income
## Credit Metrics
**Note: The following Credit analysis should only be performed if prompted by the user or if the template explicitly requires it. If no prompt is given, skip this section.**
Calculate and display credit/leverage metrics on the Balance Sheet (BS) tab to assess financial health, debt capacity, and covenant compliance.
### Core Credit Metrics to Include
| Metric | Formula | What It Measures |
|--------|---------|------------------|
| Total Debt / EBITDA | Total Debt / LTM EBITDA | Leverage multiple |
| Net Debt / EBITDA | (Total Debt - Cash) / LTM EBITDA | Leverage net of cash |
| Interest Coverage | EBITDA / Interest Expense | Ability to service debt |
| Debt / Total Cap | Total Debt / (Total Debt + Equity) | Capital structure |
| Debt / Equity | Total Debt / Total Equity | Financial leverage |
| Current Ratio | Current Assets / Current Liabilities | Short-term liquidity |
| Quick Ratio | (Current Assets - Inventory) / Current Liabilities | Immediate liquidity |
### Credit Metric Hierarchy Checks
Validate that Upside shows strongest credit profile:
- Leverage: Upside < Base < Downside (lower is better)
- Coverage: Upside > Base > Downside (higher is better)
- Liquidity: Upside > Base > Downside (higher is better)
### Covenant Compliance Tracking
If debt covenants are known, add explicit compliance checks comparing actual metrics to covenant thresholds.
## Scenario Analysis (Base / Upside / Downside)
Use a scenario toggle (dropdown) in the Assumptions tab with CHOOSE or INDEX/MATCH formulas.
| Scenario | Description |
|----------|-------------|
| Base Case | Management guidance or consensus estimates |
| Upside Case | Above-guidance growth, margin expansion |
| Downside Case | Below-trend growth, margin compression |
**Key Drivers to Sensitize**: Revenue growth, Gross margin, SG&A %, DSO/DIO/DPO, CapEx %, Interest rate, Tax rate.
**Scenario Audit Checks**: Toggle switches all statements, BS balances in all scenarios, Cash ties out, Hierarchy holds (Upside > Base > Downside for NI, EBITDA, FCF, margins).
## SEC Filings Data Extraction
If the template specifically requires pulling data from SEC filings (10-K, 10-Q), see [references/sec-filings.md](references/sec-filings.md) for detailed extraction guidance. This reference is only needed when populating templates with public company data from regulatory filings.
## Completing Model Templates
This section provides general guidance for completing any 3-statement financial model template while preserving existing formulas and ensuring data integrity.
### Step 1: Analyze the Template Structure
Before entering any data, thoroughly review the template to understand its architecture:
**Identify Input vs. Formula Cells**
- Look for visual cues (font color, cell shading) that distinguish input cells from formula cells
- Common conventions: Blue font = inputs, Black font = formulas, Green font = links to other sheets
- Use Excel's Trace Precedents/Dependents (Formulas → Trace Precedents) to understand cell relationships
- Check for named ranges that may control key inputs (Formulas → Name Manager)
**Map the Template's Flow**
- Identify which tabs feed into others (e.g., Assumptions → IS → BS → CF)
- Note any supporting schedules and their linkages to main statements
- Document the template's specific line items and structure before populating
### Step 2: Filling in Data Without Breaking Formulas
**Golden Rules for Data Entry**
| Rule | Description |
|------|-------------|
| Only edit input cells | Never overwrite cells containing formulas unless intentionally replacing the formula |
| Preserve cell references | When copying data, use Paste Values (Ctrl+Shift+V) to avoid overwriting formulas with source formatting |
| Match the template's units | Verify if template uses thousands, millions, or actual values before entering data |
| Respect sign conventions | Follow the template's existing sign convention (e.g., expenses as positive or negative) |
| Check for circular references | If the template uses iterative calculations, ensure Enable Iterative Calculation is turned on |
**Safe Data Entry Process**
1. Identify the exact cells designated for input (usually highlighted or labeled)
2. Enter historical data first, then verify formulas are calculating correctly for those periods
3. Enter assumption drivers that feed forecast calculations
4. Review calculated outputs to confirm formulas are working as intended
5. If a formula cell must be modified, document the original formula before making changes
**Handling Pre-Built Formulas**
- If formulas reference cells you haven't populated yet, expect temporary errors (#REF!, #DIV/0!) until all inputs are complete
- When formulas produce unexpected results, trace precedents to identify missing or incorrect inputs
- Never delete rows/columns without checking for formula dependencies across all tabs
### Step 3: Validating Formulas
**Formula Integrity Checks**
Before relying on template outputs, validate that formulas are functioning correctly:
| Check Type | Method |
|------------|--------|
| Trace precedents | Select a formula cell → Formulas → Trace Precedents to verify it references correct inputs |
| Trace dependents | Verify key inputs flow to expected output cells |
| Evaluate formula | Use Formulas → Evaluate Formula to step through complex calculations |
| Check for hardcodes | Projection formulas should reference assumptions, not contain hardcoded values |
| Test with known values | Input simple test values to verify formulas produce expected results |
| Cross-tab consistency | Ensure the same formula logic applies across all projection periods |
**Common Formula Issues to Watch For**
- Mixed absolute/relative references causing incorrect results when copied across periods
- Broken links to external files or deleted ranges (#REF! errors)
- Division by zero in early periods before revenue ramps (#DIV/0! errors)
- Circular reference warnings (may be intentional for interest calculations)
- Inconsistent formulas across projection columns (use Ctrl+\ to find differences)
**Validating Cross-Tab Linkages**
- Confirm values that appear on multiple tabs are linked (not duplicated)
- Verify schedule totals tie to corresponding line items on main statements
- Check that period labels align across all tabs
### Step 4: Quality Checks by Sheet
Perform these validation checks on each sheet after populating the template:
**Income Statement (IS) Quality Checks**
- Revenue figures match source data for historical periods
- All expense line items sum to reported totals
- Subtotals (Gross Profit, EBIT, EBT, Net Income) calculate correctly
- Tax calculation logic is appropriate (handles losses correctly)
- Forecast drivers reference assumptions tab (no hardcodes)
- Period-over-period changes are directionally reasonable
**Balance Sheet (BS) Quality Checks**
- Assets = Liabilities + Equity for every period (primary check)
- Cash balance matches Cash Flow Statement ending cash
- Working capital accounts tie to supporting schedules (if applicable)
- Retained Earnings rolls forward correctly: Prior RE + Net Income - Dividends +/- Adjustments = Ending RE
- Debt balances tie to debt schedule (if applicable)
- All balance sheet items have appropriate signs (assets positive, most liabilities positive)
**Cash Flow Statement (CF) Quality Checks**
- Net Income at top of CFO matches Income Statement Net Income
- Non-cash add-backs (D&A, SBC, etc.) tie to their source schedules/statements
- Working capital changes have correct signs (increase in asset = use of cash = negative)
- CapEx ties to PP&E schedule or fixed asset roll-forward
- Financing activities tie to changes in debt and equity accounts on BS
- Ending Cash matches Balance Sheet Cash
- Beginning Cash equals prior period Ending Cash
**Supporting Schedule Quality Checks**
- Opening balances equal prior period closing balances
- Roll-forward logic is complete (Beginning + Additions - Deductions = Ending)
- Schedule totals tie to main statement line items
- Assumptions used in calculations match Assumptions tab
### Step 5: Cross-Statement Integrity Checks
After validating individual sheets, confirm the three statements are properly integrated:
| Check | Formula | Expected Result |
|-------|---------|-----------------|
| Balance Sheet Balance | Assets - Liabilities - Equity | = 0 |
| Cash Tie-Out | CF Ending Cash - BS Cash | = 0 |
| Net Income Link | IS Net Income - CF Starting Net Income | = 0 |
| Retained Earnings | Prior RE + NI - Dividends - BS Ending RE | = 0 (adjust for SBC/other items as needed) |
### Step 6: Final Review
Before considering the model complete:
- Toggle through all scenarios (if applicable) to verify checks pass in each case
- Review all #REF!, #DIV/0!, #VALUE!, and #NAME? errors and resolve or document
- Confirm all input cells have been populated (search for placeholder values)
- Verify units are consistent across all tabs
- Save a clean version before making any additional modifications
## Model Validation and Audit
This section consolidates all validation checks and audit procedures for completed templates.
### Core Linkages (Must Always Hold)
See [references/formulas.md](references/formulas.md) for all formula details.
| Check | Formula | Expected Result |
|-------|---------|-----------------|
| Balance Sheet Balance | Assets - Liabilities - Equity | = 0 |
| Cash Tie-Out | CF Ending Cash - BS Cash | = 0 |
| Cash Monthly vs Annual | Closing Cash (Monthly) - Closing Cash (Annual) | = 0 |
| Net Income Link | IS Net Income - CF Starting Net Income | = 0 |
| Retained Earnings | Prior RE + NI + SBC - Dividends - BS Ending RE | = 0 |
| Equity Financing | ΔCommon Stock/APIC (BS) - Equity Issuance (CFF) | = 0 |
| Year 0 Equity | Equity Raised (Year 0) - Beginning Equity Capital (Year 1) | = 0 |
### Sign Convention Reference
| Statement | Item | Sign Convention |
|-----------|------|-----------------|
| CFO | D&A, SBC | Positive (add-back) |
| CFO | ΔAR (increase) | Negative (use of cash) |
| CFO | ΔAP (increase) | Positive (source of cash) |
| CFI | CapEx | Negative |
| CFF | Debt issuance | Positive |
| CFF | Debt repayments | Negative |
| CFF | Dividends | Negative |
### Circular Reference Handling
Interest expense creates circularity: Interest → Net Income → Cash → Debt Balance → Interest
Enable iterative calculation in Excel: File → Options → Formulas → Enable iterative calculation. Set maximum iterations to 100, maximum change to 0.001. Add a circuit breaker toggle in Assumptions tab.
### Check Categories
**Section 1: Currency Consistency**
- Currency identified and documented in Assumptions
- All tabs use consistent currency symbol and scale
- Units row matches model currency
**Section 2: Balance Sheet Integrity**
- Assets = Liabilities + Equity (for each period)
- Formula: Assets - Liabilities - Equity (must = 0)
**Section 3: Cash Flow Integrity**
- Cash ties to BS (CF Ending Cash = BS Cash)
- Cash Monthly vs Annual: Closing Cash (Monthly) = Closing Cash (Annual)
- NI ties to IS (CF Net Income = IS Net Income)
- D&A ties to schedule
- SBC ties to IS
- ΔAR, ΔInventory, ΔAP tie to WC schedule
- CapEx ties to DA schedule
**Section 4: Retained Earnings**
- RE roll-forward check: Prior RE + NI + SBC - Dividends = Ending RE
- Show component breakdown for debugging
**Section 5: Working Capital**
- AR, Inventory, AP tie to BS
- DSO, DIO, DPO reasonability checks (flag if outside normal ranges)
**Section 6: Debt Schedule**
- Total Debt ties to BS (Current + LT Debt)
- Interest calculation ties to IS
**Section 6b: Equity Financing**
- Equity issuance proceeds tie to BS Common Stock/APIC increase
- Cash increase from equity = Equity account increase (must balance)
- Equity Raise Tie-Out: ΔCommon Stock/APIC (BS) = Equity Issuance (CFF) (must = 0)
- Year 0 Equity Tie-Out: Equity Raised (Year 0) = Beginning Equity Capital (Year 1)
**Section 6c: NOL Schedule**
- Beginning NOL (Year 1 / Formation) = 0 (new business starts with zero NOL)
- NOL increases only when EBT < 0 (losses must be realized to generate NOL)
- DTA ties to BS (NOL Schedule DTA = BS Deferred Tax Asset)
- NOL utilization ≤ 80% of EBT (post-2017 federal limitation)
- NOL balance is non-negative (cannot utilize more than available)
- NOL generated only when EBT < 0
- Tax expense = 0 when taxable income ≤ 0
**Section 7: Scenario Hierarchy**
- Absolute metrics: Upside > Base > Downside (NI, EBITDA, FCF)
- Margins: Upside > Base > Downside (GM%, EBITDA%, NI%)
- Credit metrics: Upside < Base < Downside for leverage (inverted)
**Section 8: Formula Integrity**
- COGS, S&M, G&A, R&D, SBC driven by % of Revenue (no hardcodes)
- Consistent formulas across projection years
- No #REF!, #DIV/0!, #VALUE! errors
**Section 9: Credit Metric Thresholds**
- Flag metrics as Green/Yellow/Red based on covenant thresholds
- Summary of any red flags
### Master Check Formula
Aggregate all section statuses into a single master check:
- If all sections pass → "✓ ALL CHECKS PASS"
- If any section fails → "✗ ERRORS DETECTED - REVIEW BELOW"
### Quick Debug Workflow
When Master Status shows errors:
1. Scroll to find red-highlighted sections
2. Identify which check category has failures
3. Navigate to source tab to investigate
4. Fix the underlying issue
5. Return to Checks tab to verify resolution
Источник: anthropics/financial-services / model-builder / 3-statement-model ↗. Ссылка проверена 2026-10-10.
Тот же скилл есть в: anthropics/financial-services / pitch-agent / 3-statement-model; anthropics/financial-services / financial-analysis / 3-statement-model.