# Финансовый анализ PNL селлера: вертикальный, горизонтальный и факторный

Это инструкция для ИИ-ассистента (Claude, ChatGPT или другого). Отдайте ассистенту этот файл
вместе со своим PNL за два периода — и попросите построить анализ по этой логике.
Методика — Евгений Змерзлый, для клуба селлеров. Онлайн-версия: https://zmerzlyy.ru/speech/factor.html

---

## Инструкция для ассистента

Пользователь даст тебе PNL за два периода (обычно два месяца). Построй по нему три анализа —
вертикальный, горизонтальный и факторный (мост прибыли) — строго по формулам ниже.
Если каких-то входных данных не хватает — сначала запроси их списком, потом считай.

## 1. Входные данные

По каждому из двух периодов нужны 11 показателей. **Все расходы — со знаком минус.**

| № | Показатель | Пояснение |
|---|-----------|-----------|
| 1 | Выручка − возвраты (без СПП) | Продажи минус возвраты, БЕЗ применения СПП (скидки постоянного покупателя). Это база всех процентов |
| 2 | Продажи, шт | Штуки нетто: продано минус возвращено |
| 3 | Себестоимость | Закупочная себестоимость проданного (со знаком минус) |
| 4 | Комиссия маркетплейса | − |
| 5 | Логистика маркетплейса | − |
| 6 | Эквайринг | − |
| 7 | Прочие пропорциональные расходы | Фулфилмент, упаковка и т.п. — всё, что растёт вместе с объёмом |
| 8 | Налоги (СНО) | Налог по системе налогообложения |
| 9 | Реклама | − |
| 10 | Курсовая разница / корректировки | Может быть с плюсом |
| 11 | EBDA — прибыль (факт) | Фактическая прибыль периода. Не выводится из строк выше — это отдельный факт, на него замыкается мост |

Обозначения ниже: индекс 1 — старый период, 2 — новый. `rev` — выручка, `qty` — штуки,
`p = rev / qty` — средний чек, `cu = cost / qty` — себестоимость единицы.

## 2. Вертикальный анализ

Доля каждой статьи от выручки **своего** периода:

```
доля(статья, период) = статья / rev того же периода
```

Выручка = 100%. Для штук долю не считать (нет смысла). Покажи доли обоих периодов рядом —
сдвиг доли и есть первый сигнал, где изменилась экономика.

## 3. Горизонтальный анализ

По каждой строке PNL:

```
Δ абсолютное = значение2 − значение1          (в рублях)
Δ относительное = значение2 / значение1 − 100%  (если значение1 = 0 — прочерк)
```

## 4. Факторный анализ (мост прибыли)

Раскладывает изменение прибыли `EBDA2 − EBDA1` на именованные факторы.
Мост: старт = EBDA1, финиш = EBDA2, между ними — факторы.

### 4.1. Факторы выручки (точное разложение, без остатка)

```
Изменение объёмов = (qty2 − qty1) × p2     — прирост штук × средний чек НОВОГО периода
Изменение цены    = (p2 − p1) × qty1       — прирост чека × штуки СТАРОГО периода
```

Проверка: сумма этих двух = rev2 − rev1 (точно).

### 4.2. Себестоимость — через штуки

```
Ценовая часть (изменение себестоимости единицы):
  fCostU = qty2 × (cu2 − cu1)
Пропорциональная часть (рост вслед за штуками):
  fCostProp = (cost2 − cost1) − fCostU
```

### 4.3. Пропорциональные статьи расходов — через долю от выручки

Для каждой статьи k из: комиссия, логистика, эквайринг, прочие пропорциональные, налоги (СНО), реклама:

```
Ценовая часть (изменился ПРОЦЕНТ статьи):
  fPrice(k) = (k2/rev2 − k1/rev1) × rev2      — Δ доли × выручка НОВОГО периода
Пропорциональная часть (рублей стало больше/меньше просто из-за оборота):
  fProp(k) = (k2 − k1) − fPrice(k)
```

**Ключевой смысл** (обязательно сохрани в выводе): эти две части отвечают на разные вопросы.
Пример: комиссия была 23%, стала 23,5%, но в рублях УПАЛА с 1 000 000 до 800 000, потому что
продали меньше. Наивный взгляд: «комиссия сэкономила 200 тысяч». Факторный анализ показывает:
рост ставки на 0,5 п.п. сам по себе СТОИЛ денег — fPrice = −0,005 × rev2 (при rev2 = 3 404 255 ₽
это −17 021 ₽), а +217 021 ₽ экономии дал упавший оборот. Вместе: −17 021 + 217 021 = +200 000 = Δ в рублях.

### 4.4. Остальные факторы

```
Курсовая разница = fx2 − fx1
Сумма пропорциональных изменений = fCostProp + Σ fProp(k) по всем статьям из 4.3
Прочие факторы бизнеса = EBDA2 − EBDA1 − (сумма ВСЕХ факторов выше)   — балансирующий остаток
```

«Прочие факторы бизнеса» — всё, что не разложено на именованные факторы (хранение, приёмка,
фиксированные расходы, команда и т.д.). Благодаря этому замыканию мост всегда сходится с фактом.

### 4.5. Порядок строк моста

1. Старт: EBDA периода 1
2. Изменение объёмов продаж
3. Изменение цены
4. Изменение себестоимости (ценовая часть)
5. Изменение комиссий МП (ценовая часть)
6. Изменение логистики МП (ценовая часть)
7. Изменение эквайринга (ценовая часть)
8. Прочие изменения расходов (ценовая часть)
9. Изменения налогов СНО (ценовая часть)
10. Изменения рекламы (ценовая часть)
11. Курсовая разница
12. Сумма пропорциональных изменений (одной строкой; расшифровку по 4 компонентам дай отдельно)
13. Прочие факторы бизнеса
14. Финиш: EBDA периода 2

## 5. Обязательная проверка

```
EBDA1 + сумма всех факторов = EBDA2   — до рубля
```

Если не сходится — у тебя ошибка в формулах, пересчитай. Покажи строку проверки пользователю.

## 6. Формат вывода

1. Таблица PNL двух периодов с колонками вертикального (доли) и горизонтального (Δ ₽, Δ %) анализа.
2. Таблица факторов: положительные — зелёным/с плюсом, отрицательные — красным/с минусом.
3. Диаграмма-водопад (мост прибыли): старт и финиш — синие столбцы от нуля, факторы — висящие
   ступени (рост зелёный, падение красное) от накопленного уровня. Если строишь в Excel —
   stacked bar с невидимой базовой серией: база = MIN(накоплено_до; накоплено_после).
4. Выводы словами: 3–5 главных факторов, каждый — с объяснением «ценовое это изменение или
   пропорциональное» и что с ним делать.

## 7. Частые ошибки — не допускай

- Взять выручку С применением СПП или без вычета возвратов → поплывут все доли. База — нетто, без СПП.
- Забыть минус у расходов → факторы сменят знак.
- Сравнить «комиссия в рублях выросла/упала» без разделения на ценовую и пропорциональную части —
  это главное, ради чего существует метод (см. пример в 4.3).
- Считать EBDA из строк PNL вместо факта → «прочие факторы» обнулятся и потеряют смысл.
- Δ% при нулевой базе → ставь прочерк, не Infinity.

## 8. Факторный анализ трафика (воронка продаж)

Тот же принцип цепной подстановки — для воронки. Входные данные за два периода:
переходы в карточку, положили в корзину, заказали (шт), выкупили (шт), возвращено (шт).

Модель: **объём (нетто-выкупы) = переходы × CR корзины × CR заказа × % выкупа × % невозврата**, где
CR корзины = корзина/переходы; CR заказа = заказы/корзина; % выкупа = выкупили/заказали;
% невозврата = 1 − возвращено/выкупили; нетто = выкупили − возвращено.

Расчёт:
1. Для каждого фактора — отношение r = значение2 / значение1.
2. Цепочка от нетто-объёма периода 1: последовательно умножай на r каждого фактора
   (порядок: трафик → CR корзины → CR заказа → % выкупа → % невозврата).
   Влияние фактора в штуках = объём после него − объём до него.
3. Проверка: сумма влияний = Δ нетто-объёма; конец цепочки = нетто-объём периода 2.
4. Вес фактора = его влияние / Δ объёма (сумма весов = 100%).
5. Вес в деньгах = вес × фактор «Изменение объёмов продаж» из моста прибыли (раздел 4.1) —
   так воронка объясняет, НА КАКОМ ЭТАПЕ родились или потерялись деньги объёмного фактора:
   в трафике, в конверсии в корзину, в заказ, в выкупе или в возвратах.

Вывод: таблица факторов (изменение ×, влияние шт, вес %, вес ₽) + горизонтальные полоски весов в деньгах.
