Comprare quando il mercato ha paura i dati
Analisi del sentiment tramite news per verificare se investire durante i picchi di paura superi i rendimenti medi del mercato secondo la strategia di Buffett.
La regola empirica più citata di Warren Buffett consiste nell'essere timorosi quando gli altri sono avidi e avidi quando gli altri sono timorosi. Questa massima è considerata una verità consolidata. In linea di principio, si tratta anche di un'affermazione verificabile: se è possibile misurare il sentiment del mercato, i rendimenti successivi ai momenti di massima paura e di massima avidità possono essere messi in sequenza e confrontati. Questa pagina esegue tale test, utilizzando un indicatore di fear-and-greed costruito sul sentiment di centinaia di migliaia di articoli di news.
Costruire un indicatore di paura dai news
Ogni articolo sul nostro news tape contiene un tag di sentiment per singola società, positivo, negativo o neutrale, assegnato al momento della pubblicazione. Contare questi tag su tutto il mercato ogni giorno trasforma le news in una lettura quotidiana dell'umore. Il sentiment netto di un giorno è dato dal conteggio dei positivi meno il conteggio dei negativi, diviso per il totale di entrambi: un valore vicino al limite superiore indica un tape ottimista e avido, mentre un valore vicino al limite inferiore è il dato più vicino alla paura.
Due limiti vanno considerati prima di analizzare i rendimenti. I tag di sentiment sono disponibili solo dal 2024 in poi, quindi la finestra temporale misurabile è di circa due anni e mezzo, non un intero market cycle. Inoltre, i tag tendono verso il positivo.
L'esatto SQL dietro ogni numero
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 yearGli articoli negativi hanno rappresentato circa 19.1% del totale dei tag nell'ultimo anno, e questo pattern si conferma lungo tutto il periodo considerato. Un giorno di paura in questo campione è il tape meno ottimista disponibile, non un giorno di panico assoluto. Questo è il dato grezzo. Il test consiste nel verificare cosa ha fatto il mercato successivamente.
Il test: cosa è seguito a paura e avidità
Per ogni giorno con un indicatore di sentiment, è stato misurato il rendimento dell'S&P 500 nei successivi 5, 20 e 60 giorni di trading. I giorni sono stati poi suddivisi nel decile più timoroso, nel decile più avido e in tutto ciò che stava nel mezzo, calcolando la media dei rendimenti futuri per ogni gruppo.
L'esatto SQL dietro ogni numero
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)Nei due mesi successivi, i giorni di paura si sono verificati molto prima di quelli di avidità. L'S&P 500 ha registrato una media del 6.35% nei 60 giorni di trading dopo una lettura di paura estrema, contro il 2.85% dopo una lettura di avidità estrema, con i giorni ordinari che si attestavano al 4.03%. Il ranking conferma il massimo: i segnali di paura sono stati migliori per l'ingresso, mentre i segnali di avidità i peggiori.
Analizzando i dati su archi temporali brevi, il quadro si sfuma. Nei successivi cinque giorni, i gruppi fearful e greedy si trovano a una frazione di punto percentuale di distanza l'uno dall'altro, mentre su venti giorni il gruppo greedy supera leggermente l'altro. Il distacco si manifesta solo al traguardo dei due mesi. Ogni gruppo estremo comprende solo 45 giorni, e una breve sequenza di episodi influenza la media.
Perché questo è un indizio, non una sentenza
Tre fattori impediscono che il risultato sia considerato una prova definitiva.
Il periodo analizzato è un mercato rialzista. Ogni gruppo ha registrato un rendimento positivo a 60 giorni; il confronto mette a confronto un buon risultato con uno migliore, non un guadagno rispetto a una perdita. Una regola pensata per proteggere dall'avidità vicino a un massimo non ha un massimo da testare in questo caso.
I giorni di panico tendono ad arrivare dopo che il mercato è già sceso, quando si concentra una copertura mediatica negativa. Un rimbalzo da quei punti può essere spiegato dalla semplice mean reversion tanto quanto da qualsiasi previsione contenuta nel sentiment stesso. Distinguere i due fenomeni richiede più di una semplice serie di date.
Il campione è limitato. Due anni e mezzo, con 45 giorni in ciascuna fase estrema, costituisce una base ristretta per un'affermazione che riguarda ogni mercato in ogni epoca. Un singolo arco temporale che va dal 2024 al 2026 è un singolo caso, non l'intera popolazione.
Ciò che l'esercizio stabilisce è più limitato e utile rispetto alla massima stessa: l'affermazione è misurabile. Una frase che solitamente viene citata come un proverbio può essere trasformata in un numero, verificata rispetto ai dati di mercato e ricalcolata man mano che il record del sentiment cresce. La direzione, per ora, è quella di Buffett.
FAQ
Comprare quando gli altri hanno paura funziona davvero?
In questo campione 2024-2026, i giorni di massima paura sono stati seguiti da un rendimento medio a 60 giorni dell'S&P 500 (6.35%) superiore rispetto ai giorni di massima avidità (2.85%). Su archi temporali più brevi il divario si riduce quasi completamente e il campione è limitato; questo rappresenta un supporto direzionale piuttosto che una prova definitiva.
Come viene costruito l'indice fear-and-greed?
Viene calcolato tramite i tag di sentiment per singolo articolo sul nostro news feed: si sottrae il numero di articoli positivi da quelli negativi per ogni giorno, dividendo il risultato per il totale degli articoli. Un valore basso indica un mercato pessimista, un valore alto indica un mercato ottimista.
Perché il test inizia nel 2024?
I tag di sentiment sul news feed iniziano nel 2024, il che limita la finestra temporale misurabile a circa due anni e mezzo.
Si tratta di consigli di investimento?
No. Si tratta di una misurazione di dati storici con limiti dichiarati: un arco temporale breve, tag sbilanciati verso l'ottimismo, un mercato in rialzo e una possibile mean reversion; non è una strategia né una previsione.
Ogni dato riportato deriva dalla query memorizzata sottostante. È possibile espandere qualsiasi pannello per verificare i conteggi del sentiment e i rendimenti futuri, oppure eseguire lo stesso test autonomamente sulla terminal Strasmore. Per un metodo correlato per analizzare l'ansia di mercato, consultare la volatilità implicita; per un evento di paura reale registrato, consultare il crash COVID di marzo 2020.