iiuniversitet.ruЦентр обучения нейросетямОткрыть каталог

Модель LBO в Excel по шаблону

Заполняет шаблон модели выкупа с заёмным финансированием (LBO): формулы, оформление, проверки и таблицы чувствительности. Работает раздел за разделом.

СкиллAnthropicClaudeApache-2.0Загрузить архив в ClaudeПроверка не требуется
Что делает
Заполняет шаблон модели выкупа с заёмным финансированием (LBO): формулы, оформление, проверки и таблицы чувствительности. Работает раздел за разделом.
Когда брать
Для сделок прайвет-эквити, материалов по сделке и инвестиционного комитета, когда нужна модель LBO в Excel.
Когда не брать
Если нужна оценка компании методом DCF или сравнение с аналогами.
Пример запроса
Заполни приложенный шаблон LBO по нашей сделке и покажи каждый раздел перед следующим.
Нужно подключить
Excel
Работает лучше с
Python

Входит в плагин model-builder. В Cowork и Claude Code можно поставить плагин целиком.

Как включить

  1. Нажмите «Скачать на русском» и сохраните архив.
  2. В Claude откройте Настройки → Capabilities → Skills → Upload skill и выберите архив.
  3. Включите скилл переключателем.
Для терминала

Распакуйте архив и положите папку lbo-model в ~/.claude/skills/. Файл SKILL.md должен лежать внутри этой папки.

Текст

---
name: lbo-model
description: Используй этот скилл, когда нужно заполнить в Excel шаблоны моделей LBO (выкуп с использованием заёмных средств) для сделок прайвет-эквити, материалов по сделке или презентаций для инвестиционного комитета. Скилл вписывает формулы, проверяет расчёты и следит за профессиональным оформлением, подстраиваясь под любую структуру шаблона.
---

ТРЕБОВАНИЕ К ШАБЛОНУ

Этот скилл работает по шаблонам моделей LBO. Всегда сначала проверяй, приложен ли файл-шаблон.

Прежде чем начинать любую модель LBO:

  1. Если файл-шаблон приложен или предоставлен: используй структуру этого шаблона в точности — скопируй его и заполни данными пользователя
  2. Если шаблон не приложен: спроси пользователя: *«У вас есть конкретный шаблон LBO, которым мне нужно воспользоваться? Если нет, я могу взять стандартный шаблон: в нём есть блоки «Источники и использование средств» (Sources & Uses), операционная модель, график погашения долга и анализ доходности»*
  3. Если используешь стандартный шаблон: скопируй examples/LBO_Model.xlsx как отправную точку и заполни его допущениями пользователя

ВАЖНО: Если приложен файл вроде LBO_Model.xlsx, ты ОБЯЗАН использовать его как шаблон — не строй модель с нуля. Даже если шаблон кажется сложным или в нём больше возможностей, чем нужно, скопируй его и подгони под требования пользователя. Никогда не решай «построить с нуля», если шаблон предоставлен.


КРИТИЧЕСКИЕ УКАЗАНИЯ ДЛЯ CLAUDE — ПРОЧТИ В ПЕРВУЮ ОЧЕРЕДЬ

Среда: Office JS или Python

Если работаешь внутри Excel (надстройка Office / среда Office JS):

  • Используй Office JS (Excel.run(async (context) => {...})) напрямую — НЕ используй Python/openpyxl
  • Записывай формулы через range.formulas = [["=B5*B6"]] — формулы Office JS пересчитываются прямо в живой книге
  • Правило «формулы вместо зашитых чисел» действует и здесь: задавай range.formulas, а не range.values для всего, что должно быть расчётом
  • Для цветовой схемы синий/чёрный/фиолетовый/зелёный используй range.format.font.color / range.format.fill.color
  • Отдельный шаг пересчёта не нужен — Excel считает сам
  • Ловушка с объединёнными ячейками: НЕ вызывай .merge() с последующей записью .values в объединённый диапазон (будет ошибка InvalidArgument — диапазон по-прежнему сообщает исходные размеры). Вместо этого: запиши значение только в левую верхнюю ячейку (ws.getRange("A7").values = [["SOURCES & USES"]]), затем объедини и оформи весь диапазон (ws.getRange("A7:F7").merge(); ws.getRange("A7:F7").format.fill.color = "#1F4E79";)

Если создаёшь отдельный файл .xlsx (без живого сеанса Excel):

  • Используй Python/openpyxl, как описано ниже
  • Записывай формулы строками (ws["D20"] = "=B5*B6"), а перед сдачей запусти recalc.py

Остальная часть скилла написана с примерами на openpyxl, но те же принципы верны и для Office JS — просто переведи вызовы API.

Основные принципы

  • Каждый расчёт должен быть формулой Excel — НИКОГДА не считай значения в Python и не зашивай результаты в ячейки. При работе с openpyxl записывай cell.value = "=B5*B6" (строка с формулой), а НЕ cell.value = 1250 (посчитанный результат). Модель должна быть динамической и обновляться при изменении входных данных.
  • Используй структуру шаблона — следуй организации из examples/LBO_Model.xlsx или предоставленного пользователем шаблона. Не придумывай собственную раскладку.
  • Используй правильные ссылки на ячейки — все формулы должны ссылаться на нужные ячейки. Никогда не вводи числа, которые должны браться из других ячеек.
  • Соблюдай единообразие знаков — следуй тому правилу знаков, которое принято в шаблоне (где-то отток отрицательный, где-то положительный). Будь последователен на протяжении всей модели.
  • Работай раздел за разделом и сверяйся с пользователем на каждом шаге — полностью доделай один раздел, покажи пользователю, что построено, выполни проверки этого раздела и получи подтверждение ДО перехода к следующему. НЕ строй всю модель от начала до конца, а потом показывай — последующие разделы зависят от предыдущих, и если ошибка в «Источниках и использовании средств» найдётся, когда доходность уже построена, переделывать придётся везде.

Цветовые соглашения для формул

  • Синий (0000FF): введённые вручную значения — набранные числа, не ссылающиеся на другие ячейки
  • Чёрный (000000): формулы с вычислениями — любая формула с операторами или функциями (=B4*B5, =SUM(), =-MAX(0,B4))
  • Фиолетовый (800080): ссылки на ячейки того же листа — прямые ссылки без вычислений (=B9, =B45)
  • Зелёный (008000): ссылки на ячейки других листов — ссылки между листами (=Assumptions!B5, ='Operating Model'!C10)

Палитра заливки — профессиональные синие и серые (по умолчанию, если пользователь или шаблон не задали иное)

  • Минимализм — для заливки ячеек используй только синие и серые оттенки. НЕ вводи зелёный, жёлтый, красный и несколько акцентов. Профессиональная модель LBO обходится малым.
  • Палитра заливки по умолчанию:
  • Заголовки разделов («Источники и использование средств», операционная модель и т. д.): тёмно-синий #1F4E79 с белым жирным текстом
  • Заголовки столбцов (Год 1, Год 2 и т. д.): светло-синий #D9E1F2 с чёрным жирным текстом
  • Ячейки ввода: светло-серый #F2F2F2 (или просто белый) — сигналом служит синий *шрифт*, заливка вторична
  • Ячейки с формулами и расчётами: белые, без заливки
  • Ключевые результаты (IRR, MOIC, акционерный капитал при выходе): средне-синий #BDD7EE с чёрным жирным текстом
  • Это вся палитра. 3 синих + 1 серый + белый. Если в шаблоне свои цвета, следуй шаблону.
  • Примечание: цвета шрифта (синий/чёрный/фиолетовый/зелёный) выше служат для различения вводов, формул и ссылок. Они не зависят от палитры заливки здесь — работают вместе.

Стандарты форматирования чисел

  • Денежные суммы: $#,##0;($#,##0);"-" или $#,##0.0 — в зависимости от шаблона
  • Проценты: 0.0% (один знак после запятой)
  • Мультипликаторы: 0.0"x" (один знак после запятой)
  • MOIC и подробные коэффициенты: 0.00"x" (два знака после запятой для точности)
  • Все числовые ячейки: выравнивание по правому краю

Сначала уточни требования

Прежде чем вписывать какие-либо формулы:

  • Изучи структуру шаблона — определи все разделы, пойми временную шкалу (какой столбец какому периоду соответствует), отметь уже существующие формулы
  • Спроси пользователя, если что-то неясно — если структура шаблона, методы расчёта или требования неоднозначны, спроси, прежде чем продолжать
  • Подтверди ключевые допущения — любые ключевые входные данные, предпочтения в расчётах или особые требования
  • ТОЛЬКО ПОСЛЕ того, как разобрался в шаблоне, переходи к заполнению формул

ЭТАП АНАЛИЗА ШАБЛОНА — НАЧНИ С НЕГО

Прежде чем вписывать формулы, тщательно изучи шаблон:

  1. Составь карту структуры — определи, где находится каждый раздел и как разделы связаны друг с другом. Отметь, какие разделы питают другие.
  1. Пойми временную шкалу — какие столбцы каким периодам соответствуют? Есть ли столбец «Закрытие сделки» (Closing) или «Прогнозный баланс» (Pro Forma)? С какого места начинается прогнозный период?
  1. Отличи ячейки ввода от ячеек с формулами — шаблоны часто используют цвет, границы или заливку, чтобы показать, какие ячейки требуют ввода, а какие — формул. Уважай эти соглашения.
  1. Внимательно читай существующие подписи — подписи строк в точности говорят, какой расчёт ожидается. Не предполагай — читай, чего требует шаблон.
  1. Проверь существующие формулы — некоторые шаблоны приходят частично заполненными. Не перезаписывай работающие формулы, если об этом прямо не просили.
  1. Отметь соглашения, специфичные для шаблона — правила знаков, структуру промежуточных итогов, организацию разделов, наличие отдельных листов для разных компонентов и т. д.

ЗАПОЛНЕНИЕ ФОРМУЛ — ОБЩИЙ ПОДХОД

Для каждой ячейки, которой нужна формула, следуй такой иерархии:

Шаг 1: Проверь шаблон

  • Есть ли в ячейке уже формула? Если да, проверь, что она верна, и иди дальше.
  • Есть ли комментарий или примечание, указывающее ожидаемый расчёт?
  • Делает ли подпись строки или столбца расчёт очевидным?
  • Показывают ли соседние ячейки закономерность, которой нужно следовать?

Шаг 2: Проверь указания пользователя

  • Указал ли пользователь конкретный метод расчёта?
  • Есть ли заявленные допущения, влияющие на эту формулу?
  • Упоминались ли особые требования?

Шаг 3: Примени общепринятую практику

  • Если ни шаблон, ни пользователь ничего не задают, используй стандартные соглашения моделирования LBO
  • Фиксируй все допущения, которые делаешь
  • Если действительно не уверен, спроси пользователя

ТИПИЧНЫЕ ПРОБЛЕМНЫЕ МЕСТА

Следующие расчётные схемы часто вызывают проблемы в моделях LBO. Уделяй им особое внимание, когда с ними сталкиваешься:

Балансирующие разделы

  • Когда два раздела должны быть равны (например, «Источники» = «Использование»), одна статья обычно служит «балансирующей» (plug)
  • Определи, какая статья балансирующая, и рассчитай её как разницу

Расчёт налогов

  • Налоговые формулы должны ссылаться только на нужную строку дохода и ставку налога
  • НЕ должны ссылаться на не связанные с ними разделы (например, на графики долга)
  • Реши, создают ли убытки налоговый щит или просто игнорируются

Проценты и циклические ссылки

  • Расчёт процентов может создать цикличность, если он ссылается на остатки, на которые влияют денежные потоки
  • Используй остаток на начало периода (а не средний или на конец), чтобы разорвать циклические ссылки
  • Схема: проценты → денежный поток → погашение → остаток на конец (если проценты считаются от остатка на конец, цикл замыкается)

Погашение долга и направление избыточных денег на погашение (cash sweep)

  • Когда есть несколько траншей долга, обычно есть порядок приоритета
  • Cash sweep должен соблюдать каскад приоритетов (waterfall)
  • Остатки не могут становиться отрицательными — используй функции MAX или MIN как следует

Расчёт доходности (IRR/MOIC)

  • У денежных потоков должны быть правильные знаки: инвестиции — отрицательные, поступления — положительные
  • Если используешь XIRR, нужны соответствующие даты
  • Если используешь IRR, денежные потоки должны идти в последовательных периодах
  • MOIC = Общие поступления / Общие инвестиции

Таблицы чувствительности

  • Используй НЕЧЁТНЫЕ размерности (5×5 или 7×7) — никогда не 4×4 и не 6×6. Нечётная размерность гарантирует настоящую центральную ячейку.
  • Центральная ячейка = базовый сценарий. Строй значения по строкам и столбцам симметрично вокруг фактических допущений модели (например, если базовый мультипликатор входа 10,0x, ось = [8.0x, 9.0x, 10.0x, 11.0x, 12.0x]). IRR/MOIC в центральной ячейке тогда ОБЯЗАН совпадать с фактическим результатом IRR/MOIC модели — это доказательство, что таблица подключена правильно.
  • Выдели центральную ячейку — средне-синяя заливка (#BDD7EE) + жирный шрифт, чтобы базовый сценарий был визуально закреплён.
  • Функция Excel DATA TABLE может не работать с openpyxl — вместо этого запиши явные формулы, ссылающиеся на заголовки строк и столбцов
  • Каждая ячейка должна показывать РАЗНОЕ значение — если везде одинаково, формулы не меняются как надо
  • Используй смешанные ссылки (например, $A5 для ввода по строкам, B$4 для ввода по столбцам)

КОНТРОЛЬНЫЙ СПИСОК ПРОВЕРКИ — ВЫПОЛНИ ПОСЛЕ ЗАВЕРШЕНИЯ

Запусти проверку формул

python /mnt/skills/public/xlsx/recalc.py model.xlsx

Должен вернуть успех без единой ошибки.

Балансировка разделов

  • [ ] Все разделы, которые должны балансироваться («Источники» и «Использование», активы и обязательства), сходятся точно
  • [ ] Балансирующие статьи рассчитаны правильно как уравнивающая цифра
  • [ ] Суммы, которые должны совпадать между разделами, согласованы

Прогнозы доходов и операционных показателей

  • [ ] Выручка (верхняя строка) правильно строится из драйверов или темпов роста
  • [ ] Все статьи затрат и расходов рассчитаны соответствующим образом
  • [ ] Промежуточные и общие итоги суммируются правильно
  • [ ] Маржа и коэффициенты выглядят разумно
  • [ ] Ссылки на допущения верны

Баланс (если применимо)

  • [ ] Активы = Обязательства + Капитал (должен сходиться)
  • [ ] Все статьи привязаны к соответствующим графикам или движению остатков
  • [ ] Остатки на начало = остаткам на конец предыдущего периода
  • [ ] Контрольная строка включена и показывает ноль

Денежный поток (если применимо)

  • [ ] Начинается с правильного показателя дохода
  • [ ] Неденежные статьи прибавлены или вычтены правильно
  • [ ] Изменения оборотного капитала имеют правильные знаки
  • [ ] Остаток денег на конец = остаток на начало + чистый денежный поток
  • [ ] Остатки денег согласованы между отчётами

Вспомогательные графики

  • [ ] Графики движения остатков сходятся (начало + изменения = конец)
  • [ ] Графики правильно связаны с основными отчётами
  • [ ] Рассчитываемые статьи используют подходящие драйверы
  • [ ] Все периоды рассчитаны единообразно

Графики долга и финансирования (если применимо)

  • [ ] Остатки на начало соответствуют источникам или предыдущему периоду
  • [ ] Проценты рассчитаны от подходящего остатка (как правило, на начало периода)
  • [ ] Погашения учитывают доступные деньги и приоритет
  • [ ] Остатки на конец не могут быть отрицательными
  • [ ] Итоги правильно суммируют транши

Доходность и итоговый анализ

  • [ ] Стоимость при выходе и терминальная стоимость рассчитаны правильно
  • [ ] Включены все значимые корректировки
  • [ ] Знаки денежных потоков верны (отрицательные для инвестиций, положительные для поступлений)
  • [ ] Формулы IRR/MOIC ссылаются на полные диапазоны
  • [ ] Результаты разумны для данного сценария

Таблицы чувствительности (если применимо)

  • [ ] Размерность сетки НЕЧЁТНАЯ (5×5 или 7×7) — есть настоящая центральная ячейка
  • [ ] Значения осей по строкам и столбцам симметричны вокруг базового сценария ([base-2Δ, base-Δ, base, base+Δ, base+2Δ])
  • [ ] Результат в центральной ячейке равен фактическому IRR/MOIC модели — подтверждает правильность подключения таблицы
  • [ ] Центральная ячейка выделена (средне-синяя заливка #BDD7EE, жирный шрифт)
  • [ ] Заголовки строк и столбцов содержат подходящие входные значения
  • [ ] Каждая ячейка данных содержит формулу (не зашитое число)
  • [ ] Каждая ячейка данных показывает РАЗНОЕ значение
  • [ ] Значения движутся в ожидаемых направлениях (выше мультипликатор выхода → выше IRR и т. д.)

Оформление

  • [ ] Введённые вручную значения синие (0000FF)
  • [ ] Рассчитанные формулы чёрные (000000)
  • [ ] Ссылки внутри листа фиолетовые (800080)
  • [ ] Ссылки между листами зелёные (008000)
  • [ ] Все числа выровнены по правому краю
  • [ ] Везде применены подходящие форматы чисел
  • [ ] Ни в одной ячейке нет значений ошибок (#REF!, #DIV/0!, #VALUE!, #NAME?)

Проверки на здравый смысл

  • [ ] Числа разумного порядка величины
  • [ ] Тенденции осмысленны (рост, снижение, стабилизация, как и ожидалось)
  • [ ] Нет заведомо неверных значений (отрицательных там, где должны быть положительные, невозможных процентов и т. д.)
  • [ ] Ключевые результаты лежат в разумных пределах для данного типа анализа

ТИПИЧНЫЕ ОШИБКИ, КОТОРЫХ СЛЕДУЕТ ИЗБЕГАТЬ

ОшибкаЧто идёт не такКак исправить
Зашитые рассчитанные значенияМодель не обновляется при изменении входных данныхВсегда используй формулы, ссылающиеся на исходные ячейки
Неверные ссылки на ячейки после копированияФормулы указывают не на те ячейкиПроверь все ссылки, используй подходящее закрепление знаком $
Ошибки циклических ссылокМодель не может посчитатьсяДля расчётов вроде процентов используй остатки на начало, разорви цикл
Разделы не балансируютсяИтоги, которые должны совпадать, не совпадаютУбедись, что одна статья балансирующая (считается как разница)
Отрицательные остатки там, где это невозможноВыплачивается или используется больше имеющегосяПрименяй MAX(0, ...) или MIN как следует
Ошибки IRR и доходностиНеверные знаки или неполные диапазоныПроверь знаки денежных потоков и убедись, что формула охватывает все периоды
Таблица чувствительности показывает одно значениеФормула не меняется при изменении входных данныхПроверь ссылки на ячейки — нужны смешанные ссылки ($A5, B$4)
Движение остатков не сходитсяНачало ≠ конец предыдущего периодаПроверь связи между периодами
Непоследовательные правила знаковПрибавления становятся вычитаниями или наоборотПоследовательно следуй правилу шаблона во всей модели

РАБОТА С ПОЛЬЗОВАТЕЛЕМ — КОНТРОЛЬНЫЕ ТОЧКИ ПО РАЗДЕЛАМ

  • Если структура шаблона неясна, спроси, прежде чем продолжать
  • Если требования пользователя противоречат шаблону, уточни его предпочтение
  • После завершения каждого крупного раздела ОСТАНОВИСЬ и сверься с пользователем, прежде чем идти дальше:
  • После «Источников и использования средств» → покажи сбалансированную таблицу, подтверди правильность балансирующей статьи, получи одобрение, прежде чем строить операционную модель
  • После операционной модели / прогнозов → покажи прогнозный отчёт о прибылях и убытках, подтверди, что темпы роста и маржа выглядят верно, получи одобрение, прежде чем делать график долга
  • После графика долга → покажи остатки на начало и конец и проценты, подтверди логику каскада, получи одобрение, прежде чем переходить к доходности
  • После доходности (IRR/MOIC) → покажи ряд денежных потоков и результаты, подтверди знаки и диапазоны, получи одобрение, прежде чем делать таблицы чувствительности
  • После таблиц чувствительности → покажи, что каждая ячейка меняется, подтверди, что базовый сценарий оказывается там, где ожидается
  • Если при проверке найдены ошибки, исправь их, прежде чем идти к следующему разделу
  • Показывай свою работу — объясняй ключевые формулы или допущения, когда это полезно
  • Никогда не показывай готовую модель, если не сверялся на каждом разделе — быстрее поймать неверную ссылку на ячейку у источника, чем разматывать её назад от сломанного IRR

Этот скилл создаёт модели LBO уровня инвестиционного банка: заполняет шаблоны правильными формулами, аккуратно оформляет и проверяет расчёты. Скилл подстраивается под любую структуру шаблона, обеспечивая финансовую точность и профессиональные стандарты оформления.

Перевод: iiuniversitet. Оригинал: https://github.com/anthropics/financial-services/tree/main/plugins/agent-plugins/model-builder/skills/lbo-model, лицензия Apache-2.0. Изменения: перевод на русский язык.

Оригинал на английском
---
name: lbo-model
description: This skill should be used when completing LBO (Leveraged Buyout) model templates in Excel for private equity transactions, deal materials, or investment committee presentations. The skill fills in formulas, validates calculations, and ensures professional formatting standards that adapt to any template structure.
---

---

## TEMPLATE REQUIREMENT

**This skill uses templates for LBO models. Always check for an attached template file first.**

Before starting any LBO model:
1. **If a template file is attached/provided**: Use that template's structure exactly - copy it and populate with the user's data
2. **If no template is attached**: Ask the user: *"Do you have a specific LBO template you'd like me to use? If not, I can use the standard template which includes Sources & Uses, Operating Model, Debt Schedule, and Returns Analysis."*
3. **If using the standard template**: Copy `examples/LBO_Model.xlsx` as your starting point and populate it with the user's assumptions

**IMPORTANT**: When a file like `LBO_Model.xlsx` is attached, you MUST use it as your template - do not build from scratch. Even if the template seems complex or has more features than needed, copy it and adapt it to the user's requirements. Never decide to "build from scratch" when a template is provided.

---

## CRITICAL INSTRUCTIONS FOR CLAUDE - READ FIRST

### Environment: Office JS vs Python

**If running inside Excel (Office Add-in / Office JS environment):**
- Use Office JS (`Excel.run(async (context) => {...})`) directly — do NOT use Python/openpyxl
- Write formulas via `range.formulas = [["=B5*B6"]]` — Office JS formulas recalculate natively in the live workbook
- The same formulas-over-hardcodes rule applies: set `range.formulas`, never `range.values` for anything that should be a calculation
- Use `range.format.font.color` / `range.format.fill.color` for the blue/black/purple/green convention
- No separate recalc step needed — Excel handles calculation natively
- **Merged cell pitfall:** Do NOT call `.merge()` then set `.values` on the merged range (throws `InvalidArgument` — range still reports original dimensions). Instead: write value to top-left cell alone (`ws.getRange("A7").values = [["SOURCES & USES"]]`), then merge + format the full range (`ws.getRange("A7:F7").merge(); ws.getRange("A7:F7").format.fill.color = "#1F4E79";`)

**If generating a standalone .xlsx file (no live Excel session):**
- Use Python/openpyxl as described below
- Write formula strings (`ws["D20"] = "=B5*B6"`), then run `recalc.py` before delivery

The rest of this skill is written with openpyxl examples, but the same principles apply to Office JS — just translate the API calls.

### Core Principles
* **Every calculation must be an Excel formula** - NEVER compute values in Python and hardcode results into cells. When using openpyxl, write `cell.value = "=B5*B6"` (formula string), NOT `cell.value = 1250` (computed result). The model must be dynamic and update when inputs change.
* **Use the template structure** - Follow the organization in `examples/LBO_Model.xlsx` or the user's provided template. Do not invent your own layout.
* **Use proper cell references** - All formulas should reference the appropriate cells. Never type numbers that should come from other cells.
* **Maintain sign convention consistency** - Follow whatever sign convention the template uses (some use negative for outflows, some use positive). Be consistent throughout.
* **Work section by section, verify with user at each step** - Complete one section fully, show the user what was built, run the section's verification checks, and get confirmation BEFORE moving to the next section. Do NOT build the entire model end-to-end and then present it — later sections depend on earlier ones, so catching a mistake in Sources & Uses after the returns are already built means rework everywhere.

### Formula Color Conventions
* **Blue (0000FF)**: Hardcoded inputs - typed numbers that don't reference other cells
* **Black (000000)**: Formulas with calculations - any formula using operators or functions (`=B4*B5`, `=SUM()`, `=-MAX(0,B4)`)
* **Purple (800080)**: Links to cells on the **same tab** - direct references with no calculation (`=B9`, `=B45`)
* **Green (008000)**: Links to cells on **different tabs** - cross-sheet references (`=Assumptions!B5`, `='Operating Model'!C10`)

### Fill Color Palette — Professional Blues & Greys (Default unless user/template specifies otherwise)
* **Keep it minimal** — only use blues and greys for cell fills. Do NOT introduce greens, yellows, reds, or multiple accents. A professional LBO model uses restraint.
* **Default fill palette:**
  * **Section headers** (Sources & Uses, Operating Model, etc.): Dark blue `#1F4E79` with white bold text
  * **Column headers** (Year 1, Year 2, etc.): Light blue `#D9E1F2` with black bold text
  * **Input cells**: Light grey `#F2F2F2` (or just white) — the blue *font* is the signal, fill is secondary
  * **Formula/calculated cells**: White, no fill
  * **Key outputs** (IRR, MOIC, Exit Equity): Medium blue `#BDD7EE` with black bold text
* **That's the whole palette.** 3 blues + 1 grey + white. If the template uses its own colors, follow the template instead.
* Note: The blue/black/purple/green **font** colors above are for distinguishing inputs vs formulas vs links. Those are separate from the **fill** palette here — both work together.

### Number Formatting Standards
* **Currency**: `$#,##0;($#,##0);"-"` or `$#,##0.0` depending on template
* **Percentages**: `0.0%` (one decimal)
* **Multiples**: `0.0"x"` (one decimal)
* **MOIC/Detailed Ratios**: `0.00"x"` (two decimals for precision)
* **All numeric cells**: Right-aligned

---

### Clarify Requirements First

Before filling any formulas:

* **Examine the template structure** - Identify all sections, understand the timeline (which columns are which periods), note any existing formulas
* **Ask the user if anything is unclear** - If the template structure, calculation methods, or requirements are ambiguous, ask before proceeding
* **Confirm key assumptions** - Any key inputs, calculation preferences, or specific requirements
* **ONLY AFTER understanding the template**, proceed to fill in formulas

---

## TEMPLATE ANALYSIS PHASE - DO THIS FIRST

Before filling any formulas, examine the template thoroughly:

1. **Map the structure** - Identify where each section lives and how they relate to each other. Note which sections feed into others.

2. **Understand the timeline** - Which columns represent which periods? Is there a "Closing" or "Pro Forma" column? Where does the projection period start?

3. **Identify input vs formula cells** - Templates often use color coding, borders, or shading to indicate which cells need inputs vs formulas. Respect these conventions.

4. **Read existing labels carefully** - The row labels tell you exactly what calculation is expected. Don't assume - read what the template is asking for.

5. **Check for existing formulas** - Some templates come partially filled. Don't overwrite working formulas unless specifically asked.

6. **Note template-specific conventions** - Sign conventions, subtotal structures, how sections are organized, whether there are separate tabs for different components, etc.

---

## FILLING FORMULAS - GENERAL APPROACH

For each cell that needs a formula, follow this hierarchy:

### Step 1: Check the Template
* Does the cell already have a formula? If yes, verify it's correct and move on.
* Is there a comment or note indicating the expected calculation?
* Does the row/column label make the calculation obvious?
* Do neighboring cells show a pattern you should follow?

### Step 2: Check the User's Instructions
* Did the user specify a particular calculation method?
* Are there stated assumptions that affect this formula?
* Any special requirements mentioned?

### Step 3: Apply Standard Practice
* If neither template nor user specifies, use standard LBO modeling conventions
* Document any assumptions you make
* If genuinely uncertain, ask the user

---

## COMMON PROBLEM AREAS

The following calculation patterns frequently cause issues across LBO models. Pay special attention when you encounter these:

### Balancing Sections
* When two sections must equal (e.g., Sources = Uses), one item is typically the "plug" (balancing figure)
* Identify which item is the plug and calculate it as the difference

### Tax Calculations
* Tax formulas should only reference the relevant income line and tax rate
* Should NOT reference unrelated sections (e.g., debt schedules)
* Consider whether losses create tax shields or are simply ignored

### Interest and Circular References
* Interest calculations can create circularity if they reference balances affected by cash flows
* Use **Beginning Balance** (not average or ending) to break circular references
* Pattern: Interest → Cash Flow → Paydown → Ending Balance (if interest uses ending balance, this circles back)

### Debt Paydown / Cash Sweeps
* When multiple debt tranches exist, there's usually a priority order
* Cash sweep should respect the priority waterfall
* Balances cannot go negative - use MAX or MIN functions appropriately

### Returns Calculations (IRR/MOIC)
* Cash flows must have correct signs: Investment = negative, Proceeds = positive
* If using XIRR, need corresponding dates
* If using IRR, cash flows should be in consecutive periods
* MOIC = Total Proceeds / Total Investment

### Sensitivity Tables
* **Use ODD dimensions** (5×5 or 7×7) — never 4×4 or 6×6. Odd dimensions guarantee a true center cell.
* **Center cell = base case.** Build the row and column axis values symmetrically around the model's actual assumptions (e.g., if base entry multiple = 10.0x, axis = `[8.0x, 9.0x, 10.0x, 11.0x, 12.0x]`). The center cell's IRR/MOIC MUST then equal the model's actual IRR/MOIC output — this is the proof the table is wired correctly.
* **Highlight the center cell** — medium-blue fill (`#BDD7EE`) + bold font so the base case is visually anchored.
* Excel's DATA TABLE function may not work with openpyxl — instead write explicit formulas that reference row/column headers
* Each cell should show a DIFFERENT value — if all same, formulas aren't varying correctly
* Use mixed references (e.g., `$A5` for row input, `B$4` for column input)

---

## VERIFICATION CHECKLIST - RUN AFTER COMPLETION

### Run Formula Validation
```bash
python /mnt/skills/public/xlsx/recalc.py model.xlsx
```
Must return success with zero errors.

### Section Balancing
- [ ] Any sections that must balance (Sources/Uses, Assets/Liabilities) balance exactly
- [ ] Plug items are calculated correctly as the balancing figure
- [ ] Amounts that should match across sections are consistent

### Income/Operating Projections
- [ ] Revenue/top-line builds correctly from drivers or growth rates
- [ ] All cost and expense items calculated appropriately
- [ ] Subtotals and totals sum correctly
- [ ] Margins and ratios are reasonable
- [ ] Links to assumptions are correct

### Balance Sheet (if applicable)
- [ ] Assets = Liabilities + Equity (must balance)
- [ ] All items link to appropriate schedules or roll-forwards
- [ ] Beginning balances = prior period ending balances
- [ ] Check row included and shows zero

### Cash Flow (if applicable)
- [ ] Starts with correct income figure
- [ ] Non-cash items added/subtracted appropriately
- [ ] Working capital changes have correct signs
- [ ] Ending Cash = Beginning Cash + Net Cash Flow
- [ ] Cash balances are consistent across statements

### Supporting Schedules
- [ ] Roll-forward schedules balance (Beginning + Changes = Ending)
- [ ] Schedules link correctly to main statements
- [ ] Calculated items use appropriate drivers
- [ ] All periods are calculated consistently

### Debt/Financing Schedules (if applicable)
- [ ] Beginning balances tie to sources or prior period
- [ ] Interest calculated on appropriate balance (typically beginning)
- [ ] Paydowns respect cash availability and priority
- [ ] Ending balances cannot be negative
- [ ] Totals sum tranches correctly

### Returns/Output Analysis
- [ ] Exit/terminal values calculated correctly
- [ ] All relevant adjustments included
- [ ] Cash flow signs are correct (negative for investment, positive for proceeds)
- [ ] IRR/MOIC formulas reference complete ranges
- [ ] Results are reasonable for the scenario

### Sensitivity Tables (if applicable)
- [ ] Grid dimensions are ODD (5×5 or 7×7) — there is a true center cell
- [ ] Row and column axis values are symmetric around the base case (`[base-2Δ, base-Δ, base, base+Δ, base+2Δ]`)
- [ ] Center cell output equals the model's actual IRR/MOIC — confirms the table is wired correctly
- [ ] Center cell is highlighted (medium-blue fill `#BDD7EE`, bold font)
- [ ] Row and column headers contain appropriate input values
- [ ] Each data cell contains a formula (not hardcoded)
- [ ] Each data cell shows a DIFFERENT value
- [ ] Values move in expected directions (higher exit multiple → higher IRR, etc.)

### Formatting
- [ ] Hardcoded inputs are blue (0000FF)
- [ ] Calculated formulas are black (000000)
- [ ] Same-tab links are purple (800080)
- [ ] Cross-tab links are green (008000)
- [ ] All numbers are right-aligned
- [ ] Appropriate number formats applied throughout
- [ ] No cells show error values (#REF!, #DIV/0!, #VALUE!, #NAME?)

### Logical Sanity Checks
- [ ] Numbers are reasonable order of magnitude
- [ ] Trends make sense (growth, decline, stabilization as expected)
- [ ] No obviously wrong values (negative where should be positive, impossible percentages, etc.)
- [ ] Key outputs are within reasonable ranges for the type of analysis

---

## COMMON ERRORS TO AVOID

| Error | What Goes Wrong | How to Fix |
|-------|-----------------|------------|
| Hardcoding calculated values | Model doesn't update when inputs change | Always use formulas that reference source cells |
| Wrong cell references after copying | Formulas point to wrong cells | Verify all links, use appropriate $ anchoring |
| Circular reference errors | Model can't calculate | Use beginning balances for interest-type calcs, break the circle |
| Sections don't balance | Totals that should match don't | Ensure one item is the plug (calculated as difference) |
| Negative balances where impossible | Paying/using more than available | Use MAX(0, ...) or MIN functions appropriately |
| IRR/return errors | Wrong signs or incomplete ranges | Check cash flow signs and ensure formula covers all periods |
| Sensitivity table shows same value | Formula not varying with inputs | Check cell references - need mixed references ($A5, B$4) |
| Roll-forwards don't tie | Beginning ≠ prior ending | Verify links between periods |
| Inconsistent sign conventions | Additions become subtractions or vice versa | Follow template's convention consistently throughout |

---

## WORKING WITH THE USER — SECTION-BY-SECTION CHECKPOINTS

* **If the template structure is unclear**, ask before proceeding
* **If the user's requirements conflict with the template**, confirm their preference
* **After completing each major section**, STOP and verify with the user before continuing:
  - **After Sources & Uses** → show the balanced table, confirm the plug is correct, get sign-off before building the operating model
  - **After Operating Model / Projections** → show the projected P&L, confirm growth rates and margins look right, get sign-off before the debt schedule
  - **After Debt Schedule** → show beginning/ending balances and interest, confirm the waterfall logic, get sign-off before returns
  - **After Returns (IRR/MOIC)** → show the cash flow series and outputs, confirm signs and ranges, get sign-off before sensitivity tables
  - **After Sensitivity Tables** → show that each cell varies, confirm the base case lands where expected
* **If errors are found during verification**, fix them before moving to the next section
* **Show your work** - explain key formulas or assumptions when helpful
* **Never present a completed model without having checked in at each section** — it's faster to catch a wrong cell reference at the source than to trace it backwards from a broken IRR

---

**This skill produces investment banking-quality LBO models by filling templates with correct formulas, proper formatting, and validated calculations. The skill adapts to any template structure while ensuring financial accuracy and professional presentation standards.**

Источник: anthropics/financial-services / model-builder / lbo-model ↗. Ссылка проверена 2026-10-10.

Тот же скилл есть в: anthropics/financial-services / pitch-agent / lbo-model; anthropics/financial-services / financial-analysis / lbo-model.