В AB тестах мы часто сталкиваемся с неприятной ситуацией: эксперимент поставлен корректно, эффект кажется разумным по смыслу, но статистически результат выглядит неубедительно. Одна из частых и понятных причин — метрика слишком шумная. У одних пользователей значение нулевое, у других встречаются редкие очень большие значения (выбросы), распределение асимметрично, с тяжелыми хвостами. На таком фоне оценка эффекта получается с широким доверительным интервалом, и тесту нужно больше данных, чтобы отличить эффект от случайных колебаний.
CUPED — один из практичных способов повысить чувствительность эксперимента, используя историческую информацию. Идея в том, чтобы объяснить часть разброса метрики через поведение пользователей до старта эксперимента и вычесть эту предсказуемую часть. Это не универсальная методика, но в ряде задач дает заметный выигрыш.
Ниже разбор того, что делает CUPED, в каких условиях он обычно помогает, где может подвести, и какие проверки стоит сделать перед тем, как добавлять его в стандартный анализ.
Почему тест становится нечувствительным
Даже при корректной рандомизации разброс метрики может быть очень высоким по причинам, связанным с данными:
много нулей на уровне пользователя (например, выручка за период измерения у большинства равна 0);
выбросы и тяжелые хвосты (редкие пользователи с очень большим вкладом);
сильная неоднородность пользователей и ��табильность этой неоднородности во времени;
метрика устроена как отношение двух величин (долевая метрика), и дисперсия сильно зависит от знаменателя.
Когда метрика зашумлена, стандартный анализ чаще всего дает широкий доверительный интервал и низкую мощность теста. Это не означает, что тест плохой — это означает, что сигнал относительно шума слабый.
Практическая мысль здесь простая: если мы можем уменьшить шум, не исказив смысл измерения, то при том же размере выборки тест станет чувствительнее.
Основа CUPED: вычесть предсказуемую часть
Вводные:
Y — метрика в период эксперимента (например, выручка на пользователя за 14 дней после старта);
X — ковариата, измеренная до воздействия (например, выручка за 14 дней до старта).
Если X и Y связаны, то часть разброса Y объясняется тем, что пользователи изначально разные. CUPED строит скорректированную метрику:
— среднее X по выборке (обычно по всей выборке или по контролю, в зависимости от реализации)
— коэффициент CUPED
обычно оценивают как отношение ковариации к дисперсии:
— ковариация между Y и X
— дисперсия X
Можно сразу заметить, что это линейная поправка: если пользователь выше среднего по X, мы ожидаем, что он будет выше среднего и по Y, и вычитаем ожидаемую часть. После этого дисперсия часто становится меньше, а значит доверительный интервал эффекта сужается.
Важным моментом является то, что CUPED не добавляет что‑то новое из ниоткуда. Он использует только ту информацию, которая уже есть в данных, и работает тем лучше, чем сильнее и стабильнее связь X и Y.
Какую пользу можно ожидать от применения и как ее измерять
Один из удобных способов говорить о пользе CUPED — оценка относительного снижения дисперсии:
— относительное снижение дисперсии (variance reduction)
— дисперсия исходной метрики
— дисперсия скорректированной метрики
VR ближе к 1 означает сильное уменьшение разброса. VR около 0 означает, что CUPED почти ничего не дал (обычно потому, что X и Y слабо связаны).
На практике полезно смотреть не только на VR, но и на более прикладные вещи:
насколько сузился доверительный интервал эффекта;
насколько выросла мощность на разумных эффектах в симуляции или на исторических данных;
не ухудшилась ли калибровка (ошибка I рода должна оставаться около alpha, где alpha — выбранный на этапе дизайна эксперимента уровень значимости).
Ковариата X: что выбирать и чего избегать
Что обычно работает:
Чаще всего хороший кандидат на X — историческая версия той же метрики или близкой по смыслу:
для выручки на пользователя — выручка на пользователя до старта;
для активности — активность до старта;
для долевой метрики — исторический аналог числителя и знаменателя (об этом ниже).
Чего стоит избегать:
X, которая пересекается по времени с периодом эксперимента;
X, которая может быть затронута воздействием (окно X пересекается с периодом после экспозиции пользователя или X рассчитана не строго до первой экспозиции пользователя );
X, измеренная в другом масштабе или на другой единице анализа, чем Y (например, X на уровне сессий, а Y на уровне пользователей, если это не продумано).
Типовые ошибки CUPED в практическом использовании
Ниже список проблем, которые чаще всего искажают результат. Это не означает, что CUPED опасно использовать, но означает, что ему нужна определенная строгость в данных.
Ошибка 1: утечка воздействия в историческую метрику
Самая распространенная причина некорректности — когда окно для X частично попадает в период после начала эксперимента. Тогда X перестает быть чисто исторической и может содержать часть эффекта. В таком случае CUPED способен вычесть реальный сигнал, и калибровка теста может ухудшиться.
Что сделать:
проверить границы окон до и после;
убедиться, что экспозиция не пересекается с периодом измерения X.
Ошибка 2: несогласованная агрегация
Y посчитали на пользователя за 14 дней, а X — на пользователя за 7 дней, или через другой набор событий, или с другой логикой фильтрации. В итоге связь X и Y становится слабее, и CUPED дает меньше пользы, либо начинает работать нестабильно.
Что сделать:
согласовать окно и определение метрик;
использовать максимально похожие определения до и после, кроме временного сдвига.
Ошибка 3: нестабильность единицы анализа
Если пользователь может менять идентификатор, или часть событий теряется, или есть пересборка данных, X и Y могут перестать соответствовать одному и тому же объекту. CUPED тогда либо мало помогает, либо дает странные результаты.
Что сделать:
проверить, что значения до и после корректно сопоставлены одному и тому же пользователю и нет дублей при объединении таблиц;
оценить долю пропусков X.
Ошибка 4: тяжелые хвосты и неустойчивый коэффициент
На данных с тяжелыми хвостами ковариации и дисперсии могут быть чувствительны к редким большим значениям (выбросам). Тогда получается нестабильной, и эффект CUPED становится непредсказуемым.


Что сделать:
рассмотреть робастные варианты метрики (винзоризация, лог‑преобразование, усечение);
оценивать
аккуратнее, например на контроле или с разбиением выборки.
Ошибка 5: ковариата слабо связана с метрикой
Если X почти не связана с Y, использование CUPED не принесет никакой пользы. Это нормальный результат.
Что сделать:
проверить связь X и Y на исторических данных или на синтетических тестах;
если связи нет, не усложнять анализ без необходимости.
Тяжелые хвосты и выбросы: CUPED помогает, но не решает проблему распределения
На метриках типа выручки ключевая проблема часто в форме распределения. CUPED уменьшает разброс за счет исторической информации, но сам по себе не убирает тяжелые хвосты. Поэтому на практике полезно рассматривать сочетания:
исходная метрика;
винзоризация — ограничение больших значений сверху по выбранному квантилю;
лог‑преобразование — уменьшает влияние крупных значений, но меняет интерпретацию;
усечение — исключение небольшой доли самых крупных наблюдений.

Важное замечание: сначала зафиксировать, какая метрика по смыслу и по KPI должна быть в эксперименте, а потом выбирать степень робастности. Иногда достаточно CUPED, иногда полезно добавить винзоризацию или лог‑преобразование, а иногда проще пересмотреть окно метрики.
Ratio-метрики и линеаризация: частые случаи, где нужны дополнительные шаги
Многие продуктовые метрики устроены как отношение:
выручка на сессию;
конверсии на визит;
клики на показ.
У таких метрик анализ напрямую может быть менее устойчивым, потому что знаменатель сильно влияет на дисперсию и на распределение.
Один из распространенных подходов — линеаризация. Сначала фиксируется базовый уровень отношения R0 (часто по контролю), а затем строится линеаризованная величина на уровне объекта анализа:
— числитель для объекта i (например, выручка пользователя i)
— знаменатель для объекта i (например, число сессий пользователя i)
— базовый уровень отношения (например, суммарная выручка контроля делить на суммарные сессии контроля)
— линеаризованное значение
После линеаризации можно анализировать как обычную метрику среднего, и тогда CUPED можно применить к
, используя исторический аналог, построенный из предэкспериментальных значений
и
.
Здесь особенно полезны проверки:
нет ли большой доли объектов с очень маленьким знаменателем;
насколько стабильны числитель и знаменатель во времени;
корректно ли построены исторические аналоги.
Мини чек-лист перед применением CUPED
Ниже краткий список, который помогает избежать упомянутых проблем.
Когда CUPED обычно помогает:
X заметно связана с Y;
X измерена строго до воздействия;
метрика имеет устойчивую пользовательскую неоднородность;
нужно сузить доверительный интервал при фиксированном размере выборки.
Когда CUPED может не сработать или навредить:
есть утечка воздействия в X (пересечение с актуальным периодом);
X и Y почти не связаны;
данные имеют тяжелые хвосты, и оценка
нестабильна;
единица анализа нестабильна или плохо согласована между X и Y.
Что проверить:
окна до и после, отсутствие пересечений с экспозицией;
связь X и Y на исторических данных;
долю пропусков X и качество связки объектов;
чувствительность
к выбросам (хотя бы грубо и примерно);
Практический вариант по умолчанию:
делать базовый анализ и CUPED параллельно и сравнивать результаты;
начинать с X, близкой по смыслу к Y, и строго исторической;
при тяжелых хвостах рассматривать робастные варианты метрики и аккуратную оценку
.
Эмпирическая проверка на симуляциях: чувствительность и ошибка I рода
Графики выше помогают понять структуру данных и то, почему базовый анализ на тяжелых хвостах часто получается шумным. Но этого недостаточно, важно проверить еще две вещи: повышается ли чувствительность при наличии эффекта и сохраняется ли корректность на нулевом эффекте. Ниже приведены результаты симуляции для базового подхода и CUPED в двух режимах: без эффекта и с эффектом.

power (effect) — доля прогонов, где p‑value < alpha при заданном эффекте;
type I error (null) — доля прогонов, где p‑value < alpha при нулевом эффекте;
raw / win / log — вариант метрики;
base / cuped — способ анализа.
Уточнение про реализацию и воспроизводимость
Обычная часть нашей работы — превращать методики из учебника в инструмент, который можно проверять и использовать в реальных процессах. Поэтому параллельно с текстами я веду репозиторий с реализацией: там собраны базовые блоки (CUPED, работа с долевыми метриками через линеаризацию и другие элементы), примеры и автоматические проверки. Статья остается самодостаточной, а репозиторий — точка входа для тех, кто захочет повторить расчеты или применить их на своих данных.
Ссылка на репозиторий: https://github.com/Niuhych/trustworthy‑experiments‑core
Заключение
CUPED — один из практических способов повысить чувствительность AB теста за счет исторической информации. Он часто приносит пользу, если ковариата действительно связана с метрикой и измерена строго до воздействия. При этом CUPED не заменяет работу с формой распределения и не отменяет необходимость проверок: пересечение данных, несогласованные окна, выбросы и нестабильные данные могут свести пользу к нулю или сделать результат менее надежным.
Если вы регулярно видите ситуацию, когда эффект по смыслу возможен, но доверительный интервал слишком широкий, CUPED обычно стоит рассматривать как один из инструментов. Начать можно с простого — добавить историческую метрику, сравнить базовый анализ и CUPED, и проверить, что калибровка по нулевому эффекту остается адекватной.
