Стратегия покупки при страхе на рынке данные
Проверяем правило Уоррена Баффета на практике. Мы разработали индикатор страха на основе анализа новостей и сравнили доходность рынка в периоды паники.
Самое известное правило Уоррена Баффета гласит: бойтесь, когда другие проявляют жадность, и будьте жадными, когда другие боятся. Это утверждение считается устоявшейся мудростью. В теории его можно проверить: если общерыночные настроения можно измерить, то доходность после периодов максимального страха и максимальной жадности можно сопоставить. На этой странице проводится такой тест с использованием индикатора страха и жадности, построенного на основе настроений сотен тысяч новостных статей.
Формирование индикатора страха на основе новостей
Каждая статья в нашей новостной ленте содержит тег настроения по конкретной компании (положительный, отрицательный или нейтральный), который присваивается в момент публикации. Ежедневный подсчет таких тегов по всему рынку позволяет превратить новости в ежедневный показатель настроений. Чистый показатель настроения за один день здесь рассчитывается как разница между количеством положительных и отрицательных тегов, деленная на их общую сумму. Значение в верхней части диапазона означает оптимистичный, «жадный» рынок, а значение в нижней части — максимально близкое к страху состояние.
Необходимо учитывать два ограничения перед анализом доходности. Теги настроений существуют только с 2024 года, поэтому измеримое окно составляет около двух с половиной лет, а не полный рыночный цикл. Кроме того, теги имеют склонность к оптимизму.
Точный SQL-код для каждого числа
SELECT toString(toYear(published_utc)) AS year, count() AS tagged_insights,
round(100.0 * countIf(JSONExtractString(ins,'sentiment')='negative') / count(), 1) AS negative_pct
FROM global_markets.stocks_news ARRAY JOIN insights AS ins
WHERE JSONExtractString(ins,'sentiment') != ''
GROUP BY year ORDER BY yearВ последний год доля пессимистичных статей составила около 19.1% от общего числа тегов, и эта закономерность сохраняется на всем временном отрезке. «Страшный» день в данной выборке — это день с наименее оптимистичными настроениями, а не день открытой паники. Это исходные данные. Тест заключается в том, что происходило на рынке после этого.
Тест: что следовало за страхом и жадностью
Для каждого дня с показателем настроения измерялась доходность индекса S&P 500 в течение следующих 5, 20 и 60 торговых дней. Затем дни были разделены на десятую часть с самым высоким уровнем страха, десятую часть с самой высокой жадностью и все промежуточные дни, после чего была рассчитана средняя доходность внутри каждой группы.
Точный SQL-код для каждого числа
WITH sent AS (
SELECT toDate(published_utc) AS d,
(countIf(s='positive') - countIf(s='negative')) / (countIf(s='positive') + countIf(s='negative')) AS net
FROM (SELECT published_utc, JSONExtractString(ins,'sentiment') AS s
FROM global_markets.stocks_news ARRAY JOIN insights AS ins
WHERE JSONExtractString(ins,'sentiment') != '')
GROUP BY d HAVING countIf(s='positive') + countIf(s='negative') >= 20
),
spyd AS (
SELECT toDate(toTimeZone(window_start,'America/New_York')) AS d,
argMax(toFloat64(close), toTimeZone(window_start,'America/New_York')) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker='SPY' AND window_start >= '2024-01-01'
AND (toHour(toTimeZone(window_start,'America/New_York'))*60 + toMinute(toTimeZone(window_start,'America/New_York'))) BETWEEN 570 AND 959
GROUP BY d
),
spy AS (
SELECT d, c, leadInFrame(c,5) OVER w AS c5, leadInFrame(c,20) OVER w AS c20, leadInFrame(c,60) OVER w AS c60
FROM spyd WINDOW w AS (ORDER BY d ASC ROWS BETWEEN CURRENT ROW AND 60 FOLLOWING)
),
j AS (
SELECT s.net AS net, (spy.c5/spy.c-1)*100 AS f5, (spy.c20/spy.c-1)*100 AS f20, (spy.c60/spy.c-1)*100 AS f60
FROM sent s INNER JOIN spy ON s.d = spy.d WHERE spy.c60 > 0
),
qt AS (SELECT quantile(0.1)(net) AS p10, quantile(0.9)(net) AS p90 FROM j)
SELECT multiIf(net <= (SELECT p10 FROM qt), 'Extreme fear (least upbeat)',
net >= (SELECT p90 FROM qt), 'Extreme greed (most upbeat)',
'In between') AS market_mood,
count() AS days,
round(avg(f5),2) AS fwd_5d_pct,
round(avg(f20),2) AS fwd_20d_pct,
round(avg(f60),2) AS fwd_60d_pct
FROM j GROUP BY market_mood
ORDER BY multiIf(market_mood='Extreme fear (least upbeat)',0, market_mood='In between',1, 2)В течение последующих двух месяцев доходность в «страшные» дни значительно опережала доходность в «жадные» дни. Средняя доходность S&P 500 за 60 торговых дней после экстремально пессимистичного показателя составила 6.35% против 2.85% после экстремально оптимистичного показателя, в то время как в обычные дни она составила 4.03%. Результаты соответствуют правилу: пессимистичные настроения обеспечили лучшую точку входа, а оптимистичные — худшую.
При детальном рассмотрении картина размывается. В течение следующих пяти дней доходность в группах «страха» и «жадности» различается лишь на долю процента, а через двадцать дней группа «жадности» оказывается в небольшом отрыве. Разрыв становится заметным только через два месяца. Каждая экстремальная группа включает всего 45 дней, и средний показатель определяется небольшой серией событий.
Почему это лишь подсказка, а не вердикт
Существует три причины, по которым этот результат нельзя считать доказательством.
Временное окно охватывает растущий рынок. Каждая группа показала положительную 60-дневную доходность, поэтому сравнение идет не между прибылью и убытком, а между хорошим и лучшим результатом. Правило, призванное защитить от жадности на пике, здесь не может быть проверено, так как на данном отрезке нет рыночного максимума.
«Страшные» дни также имеют тенденцию наступать после падения рынка, когда наблюдается скопление пессимистичных публикаций. Отскок из таких точек может быть следствием простого возврата к среднему значению, а не предсказательной силой самих настроений. Чтобы разделить эти факторы, требуется больше, чем просто набор дат.
Выборка мала. Два с половиной года и 45 дней в каждой экстремальной группе — это узкая база для утверждений обо всех рынках в любую эпоху. Период с 2024 по 2026 год — это лишь один вариант развития событий, а не вся совокупность данных.
Данное исследование подтверждает нечто меньшее, но более полезное, чем само правило: это утверждение можно измерить. Фразу, которая обычно используется как цитата, можно превратить в число, проверить по рыночным данным и пересчитать по мере накопления истории настроений. На данный момент направление совпадает с позицией Баффета.
FAQ
Работает ли покупка, когда другие боятся, на самом деле?
В данной выборке за 2024–2026 годы средняя 60-дневная доходность S&P 500 после самых «страшных» дней составила (6.35%), что выше, чем после самых «жадных» дней (2.85%). На более коротких интервалах разрыв почти исчезает, а сама выборка невелика; это является лишь косвенным подтверждением, а не доказательством.
Как строится индикатор страха и жадности?
На основе тегов настроений в каждой статье нашей ленты: количество положительных статей за день минус количество отрицательных, деленное на их общее число. Низкое значение означает пессимистичный рынок, высокое — оптимистичный.
Почему тест начинается с 2024 года?
Теги настроений в ленте новостей появляются с 2024 года, что ограничивает измеримое окно примерно двумя с половиной годами.
Является ли это инвестиционной рекомендацией?
Нет. Это измерение прошлых данных с указанием ограничений: короткое окно, смещение тегов в сторону оптимизма, растущий рынок и возможный возврат к среднему значению. Это не стратегия и не прогноз.
Все показатели здесь получены из запроса, расположенного ниже. Разверните любую панель, чтобы проверить количество тегов настроений и будущую доходность, или проведите этот тест самостоятельно в терминале Strasmore. Чтобы узнать, как еще можно оценить рыночную тревожность, изучите подразумеваемую волатильность; чтобы увидеть реальный случай паники в истории, изучите обвал марта 2020 года.