לקנות כשכולם מפחדים: הנתונים שמאחורי הציטוט
בדקנו אם ימי פחד בשוק באמת מניבים תשואה עודפת. בנינו מדד פחד מתגיות סנטימנט על מאות אלפי כתבות חדשות, והשווינו את הביצועים מול השוק. התוצאות עשויות להפתיע.
כלל האצבע המצוטט ביותר של וורן באפט הוא לפחד כשאחרים חמדנים ולהיות חמדן כשאחרים מפחדים. הוא עובר כחוכמה מוגמרת. זוהי גם, בעקרון, טענה ניתנת לבדיקה: אם ניתן למדוד מצב רוח כלל-שוקי, ניתן לסדר את התשואות שבאו אחרי הרגעים המפוחדים והחמדנים ביותר זה לצד זה ולהשוות. עמוד זה מריץ את הבדיקה, תוך שימוש במדד פחד ותאוות בצע הבנוי מהסנטימנט של מאות אלפי כתבות חדשות.
בניית מדד פחד מהחדשות
כל כתבה בניוז טייפ שלנו נושאת תגית סנטימנט לכל חברה, חיובית או שלילית או ניטרלית, המוצמדת בעת פרסום הכתבה. ספירת התגיות הללו על פני כל השוק מדי יום הופכת את החדשות לקריאת מצב רוח יומית. הסנטימנט הנקי של יום אחד כאן הוא ספירת החיוביות פחות ספירת השליליות, חלקי סך השתיים: קריאה קרובה לראש הטווח שלה היא טייפ אופטימי וחמדני, וקריאה קרובה לתחתית היא הדבר הקרוב ביותר לפחד שהנתונים הללו מכילים.
שתי מגבלות ראוי להציב מראש, לפני כל תשואה. תגיות הסנטימנט קיימות רק משנת 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 השיג בממוצע 6.35% על פני 60 ימי המסחר שאחרי קריאת פחד קיצוני, לעומת 2.85% אחרי קריאת תאוות בצע קיצונית, כשימים רגילים ביניהם עמדו על 4.03%. הדירוג תואם את האמרה: הטייפ המפוחד היה נקודת הכניסה הטובה יותר, והטייפ החמדן הגרועה יותר.
מקרוב התמונה מיטשטשת. על פני חמשת הימים הבאים הקבוצות המפוחדת והחמדנית יושבות במרחק של שבריר אחוז זו מזו, ועל פני עשרים יום הקבוצה החמדנית מקדימה במעט. ההפרדה נפתחת רק בסימן החודשיים. כל קבוצת קיצון מכילה רק 45 ימים, ורצף קטן של אירועים נושא את הממוצע.
מדוע זהו רמז, לא פסק דין
שלושה דברים מותירים את התוצאה רחוקה מהוכחה.
החלון הוא שוק עולה. כל קבוצה רשמה תשואה חיובית ל-60 יום, וההשוואה מציבה תוצאה טובה מול טובה יותר, לא רווח מול הפסד. כלל שנועד להגן מפני תאוות בצע סמוך לשיא לא עומד כאן למבחן מול שיא.
הימים המפוחדים גם נוטים להגיע אחרי שהשוק כבר ירד, כאשר סיקור שלילי מתקבץ. התאוששות מנקודות אלו מתאימה להיפוך לממוצע פשוט בדיוק כפי שהיא מתאימה לראיית נולד כלשהי בסנטימנט עצמו. הפרדה בין השניים דורשת יותר ממקבץ תאריכים.
והמדגם דליל. שנתיים וחצי, עם 45 ימים בכל קיצון, מהוות בסיס צר לטענה על כל שוק בכל עידן. רצף בודד מ-2024 עד 2026 הוא הגרלה אחת, לא האוכלוסייה.
מה שהתרגיל מיישב קטן ושימושי יותר מהאמרה עצמה: הטענה ניתנת למדידה. משפט שבדרך כלל עובר כביטוי שניתן לצטט יכול להפוך למספר, להיבחן מול הטייפ, ולרוץ מחדש ככל שתיעוד הסנטימנט גדל. הכיוון, נכון לעכשיו, הוא של באפט.
שאלות נפוצות
האם קנייה כשאחרים מפחדים באמת עובדת?
במדגם זה של 2024-2026, אחרי הימים המפוחדים ביותר באה תשואת S&P 500 ממוצעת גבוהה יותר ל-60 יום (6.35%) מאשר אחרי הימים החמדנים ביותר (2.85%). על פני חלונות קצרים יותר הפער כמעט נסגר, והמדגם קצר; זה עומד כתמיכה כיוונית ולא כהוכחה.
כיצד נבנה מדד הפחד ותאוות הבצע?
מתוך תגיות הסנטימנט לכל כתבה בניוז פיד שלנו: בכל יום, סך הכתבות החיוביות פחות השליליות, חלקי סך השתיים. קריאה נמוכה היא טייפ שלילי, קריאה גבוהה טייפ אופטימי.
מדוע הבדיקה מתחילה ב-2024?
תגיות הסנטימנט בניוז פיד מתחילות ב-2024, מה שקובע חלון מדיד של כשנתיים וחצי.
האם זו עצת השקעה?
לא. זוהי מדידה של נתוני עבר עם מגבלות מוצהרות, חלון קצר, תגיות מוטות אופטימיות, שוק עולה, ואפשרות להיפוך לממוצע, לא אסטרטגיה או תחזית.
כל מספר כאן מגיע מהשאילתה השמורה שמתחתיו. הרחב כל פאנל כדי לבחון את ספירות הסנטימנט והתשואות העתידיות, או הרץ את אותה בדיקה בעצמך בטרמינל סטרסמור. לדרך קשורה לקריאת חרדת שוק, ראה תנודתיות גלומה; לאירוע פחד אמיתי ברישומים, ראה התרסקות הקורונה של מרץ 2020.