Как посчитать Runway в SQL

Закрепи формулу runway в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать runway в Telegram

Зачем Runway

В стартапе runway — секундомер. Если осталось 4 месяца, через 4 месяца компания закроется без действий. Знать runway надо постоянно, и не позже чем за 6 месяцев до fundraise.

Что такое Runway

Runway — сколько месяцев компания протянет на текущем cash и burn rate.

Runway (months) = Current Cash / Average Monthly Net Burn

Базовый расчёт

WITH latest AS (
    SELECT cash_balance, month FROM cash_flow ORDER BY month DESC LIMIT 1
),
burn AS (
    SELECT AVG(expenses - revenue) AS avg_net_burn
    FROM cash_flow
    WHERE month >= (SELECT month FROM latest) - INTERVAL '3 months'
      AND month <= (SELECT month FROM latest)
)
SELECT
    l.cash_balance,
    b.avg_net_burn,
    l.cash_balance::NUMERIC / NULLIF(b.avg_net_burn, 0) AS runway_months
FROM latest l
CROSS JOIN burn b;

Sensitivity-анализ

«Что если burn вырастет на 20%? Что если revenue +50%?»

WITH latest AS (
    SELECT cash_balance FROM cash_flow ORDER BY month DESC LIMIT 1
),
burn AS (
    SELECT
        AVG(expenses) AS avg_expenses,
        AVG(revenue) AS avg_revenue
    FROM cash_flow
    WHERE month >= CURRENT_DATE - INTERVAL '3 months'
)
SELECT
    'baseline' AS scenario,
    l.cash_balance,
    b.avg_expenses - b.avg_revenue AS net_burn,
    l.cash_balance::NUMERIC / NULLIF(b.avg_expenses - b.avg_revenue, 0) AS runway
FROM latest l, burn b
UNION ALL
SELECT
    'expenses +20%',
    l.cash_balance,
    b.avg_expenses * 1.2 - b.avg_revenue,
    l.cash_balance::NUMERIC / NULLIF(b.avg_expenses * 1.2 - b.avg_revenue, 0)
FROM latest l, burn b
UNION ALL
SELECT
    'revenue +50%',
    l.cash_balance,
    b.avg_expenses - b.avg_revenue * 1.5,
    l.cash_balance::NUMERIC / NULLIF(b.avg_expenses - b.avg_revenue * 1.5, 0)
FROM latest l, burn b;
Закрепи формулу runway в Карьернике
Запомнить надолго — 5 коротких сессий с задачами на эту тему. Бесплатно
Тренировать runway в Telegram

Forecast Runway

Если ожидаете изменения cash flow:

WITH forecast AS (
    SELECT * FROM (VALUES
        ('2026-05-01'::DATE, -300000, 50000),
        ('2026-06-01'::DATE, -310000, 60000),
        ('2026-07-01'::DATE, -320000, 80000),
        ('2026-08-01'::DATE, -330000, 100000)
    ) AS f(month, expenses, revenue)
),
running_cash AS (
    SELECT
        month,
        expenses + revenue AS monthly_delta,
        SUM(expenses + revenue) OVER (ORDER BY month) AS cumulative_change
    FROM forecast
)
SELECT
    month,
    monthly_delta,
    (SELECT cash_balance FROM cash_flow ORDER BY month DESC LIMIT 1) + cumulative_change AS projected_cash
FROM running_cash
ORDER BY month;

Когда projected_cash < 0 — runway закончилось.

Частые ошибки

Ошибка 1. Single-month burn. Декабрьский burn был высоким (бонусы). Январский низкий. Не считайте runway на одиночных месяцах.

Ошибка 2. Не учитывать growth. Если revenue растёт +20% MoM, runway удлинняется со временем. Линейный расчёт занижает.

Ошибка 3. Forgot scheduled outflows. Через 3 месяца плановая выплата $500K (аренда, taxes, заработок инвесторам). Включите в forecast.

Ошибка 4. Cash vs liquid cash. В bank — $5M, но $2M из них — restricted (для escrow). Реальный available — $3M.

Ошибка 5. Игнорировать seasonality. Сезонный revenue (Q4 70% годового revenue) искажает avg.

Связанные темы

FAQ

Какой Runway считается ok?

Минимум 12 месяцев перед fundraise. 18-24 — комфортно. <6 — критично.

Runway 24 месяца — повод расслабиться?

Нет. Fundraise занимает 6-12 месяцев. Начинать за 12+ месяцев до zero cash.

Runway отрицательный — что значит?

Net burn положителен (зарабатываем больше тратим). Cash растёт. Runway = infinity / non-applicable.

Forecast или historical?

Forecast — для plan. Historical — для current state. Используйте обе.

Runway упал на 30% — что делать?

Понять причину: расходы выросли или revenue упал. Cut accordingly.