Почему равновесный портфель лучше оптимизации
Равновесное распределение активов эффективнее оптимизации на малых выборках данных. Симуляция на Python показывает, как точность оценок влияет на устойчивость портфеля 1/N.
23.9
Равновесное распределение активов превосходит оптимизированный подход к размеру позиций в тех случаях, когда выборка данных слишком мала для точного определения ожидаемой доходности. Короткие выборки — это скорее норма, чем исключение. Оптимизатор представляет собой корректную арифметику, примененную к входным данным, которые никто не умеет точно измерять. Портфель 1/N, основанный на равных долях, не требует никаких оценок. Именно поэтому он демонстрирует устойчивость в условиях, когда оценки оказываются неточными.
Оптимизация портфеля требует прогнозирования будущих доходностей и ковариаций активов. Эти параметры крайне сложно оценить с высокой степенью достоверности. Ошибки в оценке входных данных приводят к тому, что оптимизатор выдает экстремальные веса для отдельных активов, что делает портфель крайне чувствительным к рыночным шумам.
Стратегия равных долей (1/N) полностью игнорирует прогнозы доходности. Она распределяет капитал поровну между всеми выбранными инструментами. Такой подход исключает риск ошибки в оценке параметров, что часто позволяет обойти сложные математические модели на практике.
Инвесторам следует учитывать, что простота стратегии 1/N не является её недостатком. Напротив, в условиях неопределенности отсутствие необходимости в прогнозировании становится преимуществом. Это позволяет избежать «переобучения» портфеля на исторических данных, которые редко повторяются в будущем.
Подробнее о методах распределения активов
При выборе между сложными моделями и простыми правилами распределения важно помнить о стоимости ошибки. Оптимизация, основанная на неверных предпосылках, часто приводит к худшим результатам, чем простое удержание равных долей.
Заключение
Равновесный подход остается надежным инструментом для инвесторов, которые признают ограниченность своих возможностей в прогнозировании рынков. В долгосрочной перспективе отказ от попыток «обыграть» статистику через сложные модели часто оказывается более эффективным решением.
Действительно ли равновзвешенный портфель лучше оптимизированного?
При соблюдении одного конкретного условия — да. Разберем эти понятия по порядку. Равновзвешенный подход, записываемый как 1/N, распределяет капитал поровну между N позициями и не требует никаких прогнозов. Оптимизация по критерию «среднее-дисперсия» (mean variance optimization) находит веса, обеспечивающие наилучшую ожидаемую доходность на единицу расчетной волатильности. Критерий Келли определяет веса, максимизирующие долгосрочный совокупный рост; для некоррелированных активов его решение сводится к весу, пропорциональному ожидаемой избыточной доходности актива, деленной на его дисперсию. Наше руководство по определению размера позиции по критерию Келли подробно описывает эту формулу.
Оба метода оптимизации требуют одинаковых входных данных: ожидаемой доходности по каждому активу. Именно этот показатель выборки оценивают хуже всего. Волатильность можно рассчитать на основе короткого временного интервала с приемлемой точностью. Среднее значение — нет, и разрыв между этими двумя величинами достаточно велик, чтобы его можно было заметить в любой истории цен. В приведенной ниже таблице рассматриваются шесть популярных акций; для каждой из них отдельно оценивается каждый календарный год с две тысячи пятнадцатого по две тысячи двадцать четвертый, и фиксируется разница между самым высоким и самым низким годовым показателем. Это делается дважды для каждого наименования: один раз для среднегодовой дневной доходности, другой — для годовой волатильности.
Точный SQL-код для каждого числа
WITH prices AS
(
SELECT
ticker,
date,
toFloat64(max(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
AND date >= '2015-01-01'
AND date < '2025-01-01'
GROUP BY ticker, date
),
rets AS
(
SELECT
ticker,
date,
c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
FROM prices
),
yearly AS
(
SELECT
ticker,
toYear(date) AS yr,
avg(ret) * 252 * 100 AS mean_pct,
stddevPop(ret) * sqrt(252) * 100 AS vol_pct
FROM rets
WHERE isFinite(ret)
GROUP BY ticker, yr
HAVING count() >= 200
)
SELECT
ticker,
round(max(mean_pct) - min(mean_pct), 1) AS mean_estimate_range_pct,
round(max(vol_pct) - min(vol_pct), 1) AS vol_estimate_range_pct
FROM yearly
GROUP BY ticker
ORDER BY mean_estimate_range_pct DESCДля NVDA разброс оценок среднегодовой доходности составляет 184.7 процентных пункта за эти десять лет, против 28.6 пунктов диапазона в оценке волатильности для того же актива за тот же период. Самый стабильный актив в выборке, KO, все равно показал изменение оценки среднегодовой доходности в 23.9 пункта. Любая модель, которая берет прошлогоднюю среднюю доходность и подает ее оптимизатору в качестве ожидаемой доходности на текущий год, использует число с такой высокой степенью погрешности.
Какой длины выборка необходима для оценки ожидаемой доходности?
Стандартная ошибка оценки средней доходности равна волатильности актива, деленной на квадратный корень из длины выборки в годах. Именно в годах, а не в количестве наблюдений: если вы возьмете те же двенадцать месяцев и будете замерять их ежечасно, а не ежедневно, это не даст никакого преимущества. Подставьте актив с волатильностью двадцать процентов в эту формулу, и один год истории даст стандартную ошибку в двадцать процентных пунктов в год. Четыре года сокращают ее вдвое, до десяти. Чтобы снизить ее до одного пункта — уровня точности, необходимого для сравнения двух активов, чьи истинные средние значения различаются на два пункта, — потребуется четыре столетия данных.
С волатильностью ситуация иная. Точность ее оценки растет вместе с количеством наблюдений, а не с календарным периодом, поэтому нескольких месяцев ежедневных данных уже достаточно, чтобы уложиться в диапазон нескольких пунктов. На графике ниже двадцать лет ежедневной доходности одного индексного фонда разбиты на непересекающиеся блоки фиксированной длины; для каждого блока вычислены обе оценки, и показано, насколько сильно эти оценки варьируются от блока к блоку.
Точный SQL-код для каждого числа
WITH prices AS
(
SELECT
date,
toFloat64(max(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2005-01-01'
AND date < '2025-01-01'
GROUP BY date
),
rets AS
(
SELECT
date,
c / lagInFrame(c, 1) OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
FROM prices
),
numbered AS
(
SELECT
ret,
row_number() OVER (ORDER BY date ASC) AS i
FROM rets
WHERE isFinite(ret)
),
sweep AS
(
SELECT
arrayJoin([21, 63, 126, 252, 504]) AS n,
i,
ret
FROM numbered
),
blocks AS
(
SELECT
n,
intDiv(i - 1, n) AS blk,
avg(ret) * 252 * 100 AS mean_pct,
stddevPop(ret) * sqrt(252) * 100 AS vol_pct
FROM sweep
GROUP BY n, blk
HAVING count() = n
)
SELECT
concat(toString(n), ' sessions') AS sample_length,
round(stddevPop(mean_pct), 1) AS mean_estimate_spread_pct,
round(stddevPop(vol_pct), 1) AS vol_estimate_spread_pct,
count() AS window_count
FROM blocks
GROUP BY n
ORDER BY n ASCПри длине блоков в 21 sessions разброс оценки среднего составляет 53.7 процентных пунктов против 10.9 пунктов для оценки волатильности, измеренной на тех же блоках. Увеличьте блок до 504 sessions, и разброс среднего сузится до 10.6 пунктов. Он сужается пропорционально квадратному корню: каждое двукратное уменьшение ошибки требует в четыре раза больше данных.
Симуляция с заданным начальным значением, которую можно запустить самостоятельно
Ничто из этого не доказывает, что ошибка оценки достаточно велика, чтобы обеспечить преимущество стратегии 1/N. Это доказывает следующее. Для реализации рецепта требуется только установленный Python: никаких файлов данных, загрузок или сторонних пакетов. Программа генерирует доходности на основе выбранных вами параметров, поэтому истинный ответ известен, и обе стратегии распределения активов можно оценить относительно него.
- Импортируйте два модуля,
import randomиimport statistics, а такжеfrom math import log. Установите начальное значение (seed) на следующей строке с помощьюrandom.seed(20260816). - Определите пять активов с истинной годовой ожидаемой доходностью пять, шесть, семь, восемь и девять процентов, каждый с истинной годовой волатильностью двадцать процентов, без корреляции между собой. Пересчитайте их в дневной шаг с помощью
mu_d = mu_a / 252иsd_d = sd_a / (252 ** 0.5). - Выберите длину выборки T из диапазона
[60, 125, 250, 500, 1000, 2500, 5000]. - Сгенерируйте T дневных доходностей для каждого актива с помощью
random.gauss(mu_d, sd_d). Эта выборка представляет собой всю историю, доступную управляющему. - Оцените среднее значение каждого актива с помощью
statistics.mean, а его волатильность — с помощьюstatistics.stdev. Эти две оценки — всё, что известно оптимизатору. - Сформируйте равновесный портфель, присвоив вес ноль целых две десятых каждому из пяти активов. Он не использует никакие оценки.
- Сформируйте оптимизированный портфель, установив каждый исходный вес на уровне
mu_hat / (sd_hat ** 2), а затем разделив каждый вес на сумму абсолютных значений исходных весов, что приводит оба портфеля к одинаковому валовому объему позиций. - Сгенерируйте новую вневыборочную траекторию из двух тысяч пятисот двадцати дневных доходностей для каждого актива на основе истинных параметров. Ни одна из стратегий распределения не видела этих данных.
- Оцените обе стратегии на этой траектории, используя среднее значение
log(1 + r), где r — это взвешенная сумма доходностей пяти активов за день. - Повторите шаги с четвёртого по девятый для двух тысяч независимых испытаний при каждом значении T и зафиксируйте долю испытаний, в которых равновесный портфель превосходит оптимизированные веса.
Проанализируйте диапазон от малых T до больших T. При малых значениях равновесный портфель выигрывает в подавляющем большинстве испытаний. По мере роста T эта доля неуклонно снижается, и при больших значениях оптимизированные веса выигрывают в большинстве случаев. Где-то посередине происходит пересечение. Точка пересечения смещается в зависимости от начального значения и разницы между истинными средними значениями. Направление не меняется: больше данных благоприятствует оптимизатору, меньше данных — стратегии 1/N. Чтобы повторить результат, измените целое число внутри random.seed(20260816) и запустите цикл снова.
Почему оптимизатор усиливает неверную оценку среднего значения
Посмотрите, как оценки влияют на вес актива. Оценочное среднее значение находится в числителе, а оценочная дисперсия — в знаменателе. Удвойте оценку среднего, и вес удвоится. Уменьшите оценку дисперсии на четверть, и вес вырастет на треть. В удачной выборке обе ошибки действуют в одном направлении: серия благоприятных значений повышает измеренное среднее и часто занижает измеренную дисперсию за тот же период. Оптимизатор считывает такой актив как лидера группы и присваивает ему соответствующий вес. Вне выборки этот актив снова становится обычным участником группы. Равновесный портфель не подвержен влиянию такой «удачной» выборки.
Симуляция — это лишь мягкая версия данной проблемы. Пять некоррелированных активов образуют диагональную ковариационную матрицу, которую не нужно инвертировать. Реальные портфели состоят из коррелированных активов, и выборочная ковариационная матрица, построенная на основе данных, количество которых лишь немногим превышает число активов, оказывается близкой к вырожденной. Её инвертирование превращает малые ошибки входных данных в очень большие веса. Именно так оптимизатор приходит к позиции, размер которой в несколько раз превышает капитал по одному инструменту, при наличии встречной короткой позиции по его близкому аналогу. Наша заметка о риске концентрации в портфеле описывает, как такой вес влияет на просадку.
Входные данные также не остаются неизменными. На графике ниже отслеживается скользящая среднегодовая дневная доходность, рассчитанная на основе месячных данных, для широкого индексного фонда и крупной компании сектора потребительских товаров первой необходимости.
Точный SQL-код для каждого числа
WITH prices AS
(
SELECT
ticker,
date,
toFloat64(max(close)) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'KO')
AND date >= '2015-10-01'
AND date < '2025-01-01'
GROUP BY ticker, date
),
rets AS
(
SELECT
ticker,
date,
c / lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS ret
FROM prices
),
trailing AS
(
SELECT
ticker,
date,
avg(ret) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 251 PRECEDING AND CURRENT ROW) * 252 * 100 AS trailing_mean_pct,
row_number() OVER (PARTITION BY ticker ORDER BY date ASC) AS i
FROM rets
WHERE isFinite(ret)
)
SELECT
toString(toStartOfMonth(date)) AS month,
round(avgIf(trailing_mean_pct, ticker = 'SPY'), 1) AS spy_trailing_mean_pct,
round(avgIf(trailing_mean_pct, ticker = 'KO'), 1) AS ko_trailing_mean_pct
FROM trailing
WHERE i >= 252
AND date >= '2017-01-01'
GROUP BY month
ORDER BY month ASCКаждая точка на этих двух линиях — это число, которое любой оптимизатор принял бы за ожидаемую доходность на соответствующую дату. Первое месячное значение для SPY составляет 17.7%, а последнее — 25.8%, при этом между ними находится 96 значений. Для KO этот период начинается с -0.4%. Схема взвешивания, которая ежемесячно использует этот ряд данных, наследует каждое его колебание.
Помогают ли «половинный» критерий Келли и сжатие данных?
Они смягчают проблему. На практике применяются четыре метода, каждый из которых жертвует частью теоретического оптимума ради снижения чувствительности к точности оценки.
- «Половинный» критерий Келли уменьшает каждый вес в два раза. Кривая роста Келли пологая вблизи пика и крутая ниже него, поэтому уменьшение ставки вдвое приводит к незначительной потере теоретического темпа роста, но значительно снижает ущерб от переоценки преимущества. Таргетирование волатильности использует тот же принцип для знаменателя, определяя размер позиции на основе единственного параметра, который можно достоверно получить из короткой выборки.
- Сжатие (shrinkage) приближает каждое оценочное среднее к среднему значению по всей выборке, причем степень приближения растет по мере уменьшения объема данных. В предельном случае все активы получают одинаковую ожидаемую доходность; при равной волатильности оптимизатор самостоятельно выдает равные веса. Равновесный портфель — это портфель с максимальным сжатием.
- Ограничения, такие как запрет на короткие продажи и лимиты на размер позиции, сдерживают влияние одной удачной оценки на вес актива. Это скорее способ контроля ущерба, чем улучшение качества самой оценки.
- Полный отказ от ожидаемой доходности приводит к стратегиям минимальной дисперсии и риск-паритета, которые используют только ковариацию. Это именно тот параметр, который выборка позволяет оценить достаточно надежно.
Ни один из этих четырех методов не создает информацию, которой нет в выборке. Они лишь меняют степень зависимости портфеля от данных, в достоверности которых вы не можете быть уверены.
Когда оптимизация оправдывает себя
Пересечение происходит в обоих направлениях. Как только T становится значительным по сравнению со спредом между истинными средними значениями, оптимизированное распределение вырывается вперед и сохраняет лидерство, причем чем шире этот спред, тем раньше это происходит. Оптимизация также является подходящим инструментом всякий раз, когда входные данные предоставляются самой статистикой: ковариация и коэффициенты хеджирования оцениваются гораздо точнее, чем ожидаемая доходность.
Равновесное распределение имеет свою цену. Оно игнорирует информацию, которой вы действительно располагаете, а в узкой вселенной активов оно создает такую же высокую концентрацию, как и любой оптимизатор. Рассматривайте его как базовый уровень, который любая альтернативная стратегия взвешивания должна превзойти на данных, которые не использовались при расчете весов. Подбор весов и их оценка на одной и той же выборке — это ошибка заглядывания в будущее при бэктестинге, представленная в ином виде, и она всегда приукрашивает результаты оптимизатора. Для получения честного диапазона вокруг измеренного преимущества вместо точечной оценки стандартным инструментом являются бутстреп-доверительные интервалы.
Часто задаваемые вопросы
Действительно ли равновзвешенный портфель превосходит оптимизацию по критерию «среднее-дисперсия»?
На коротких выборках — часто да. Оптимизатору требуется оценка ожидаемой доходности каждого актива, а эта оценка несет стандартную ошибку, примерно равную волатильности актива, деленной на квадратный корень из длины выборки в годах. Пока эта ошибка остается больше, чем реальные различия между активами, оптимизатор работает с рыночным шумом. Равновзвешенный подход не требует оценок, в которых можно ошибиться.
Сколько наблюдений нужно для оценки ожидаемой доходности?
Больше, чем есть почти у кого бы то ни было. Для актива с волатильностью двадцать процентов один год ежедневных данных дает стандартную ошибку около двадцати процентных пунктов в год, а для сокращения этой ошибки вдвое требуется в четыре раза больше календарного времени. Добавление внутридневных наблюдений в рамках того же года не помогает. Волатильность, напротив, можно оценить по данным за несколько месяцев.
Является ли стратегия «половина Kelly» просто ставкой меньшего размера?
Это ставка меньшего размера на выгодных условиях. Кривая роста Kelly плоская вблизи своего пика, поэтому уменьшение позиции вдвое приводит к потере лишь малой доли теоретического темпа роста, при этом примерно вдвое снижая волатильность траектории и уменьшая издержки от переоценки своего преимущества.
Что такое портфель 1/N?
Это портфель, в котором равная доля капитала распределяется между N позициями с регулярной ребалансировкой. Он не требует прогноза доходности или оценки ковариации, что делает его стандартным эталоном для любой схемы взвешивания, которая в них нуждается.
Как построены панели
Все три панели используют ежедневные цены закрытия и рассчитывают простые доходности от закрытия до закрытия, при этом дублирующиеся строки сводятся к одной цене на тикер для каждой даты. Средние значения годовые: средняя дневная доходность умножается на 252 торговые сессии; волатильность годовая: дневное стандартное отклонение умножается на квадратный корень из 252. Годовая панель включает календарный год только при наличии не менее двухсот торговых сессий. Блочная панель использует непересекающиеся блоки и отбрасывает последний неполный блок для каждой длины, а столбец количества окон показывает, сколько блоков было получено для каждой длины. Дивиденды нигде не учитываются, поэтому это ценовые доходности, и уровень любого среднего значения занижен для дивидендных бумаг. Цель панелей — показать разброс оценок, а не их абсолютный уровень.
Каждая панель здесь содержит точный SQL-запрос под графиком, а симуляция использует фиксированное начальное число (seed). Чтобы провести такую же проверку стабильности оценок для вашего списка активов, запросите её на терминале Strasmore простым языком.