המניות עם התנועה הגבוהה ביותר החודש
דירוג המניות בעלות השינוי המשמעותי ביותר החודש, כולל המרוויחות והמפסידות, עם נפחי מסחר בדולרים וסינון מניות עם שווי שוק של לפחות one billion דולר.
להלן המניות בעלות התנועה המשמעותית ביותר החודש, כפי שדווחו ישירות מהבורסה, המכסות את 21 ימי המסחר שהושלמו מJun 23 ועד Jul 22. הרשימה כוללת חברות תפעוליות בלבד שנסחרות בערך של לפחות $1 billion לאורך התקופה, כך שלכל תנועה בלוח יש נפח מסחר ממשי. קרנות ממונפות וקרנות הפוכות הוצאו מהדירוג, והתקופה מתעדכנת עם סיום ימי מסחר חדשים.
המניות בעלות העלייה הגבוהה ביותר החודש
הטבלה מדרגת את העליות הגדולות ביותר בתקופה זו. כל שורה כוללת את סכום הדולרים שהונפק/נסחר לצד האחוזים, המבחינים בין שינוי מחיר רחב בנזילות גבוהה לבין שינוי בנזילות נמוכה.
ה-SQL המדויק מאחורי כל מספר
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT ticker,
round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct,
round(sum(dollars) / 1e9, 1) AS month_dollar_bn
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) DESC
LIMIT 10CRNX הובילה את הטבלה עם עלייה של 136.1% על רקע מסחר בסך $9.7 מיליארד, לפני PBF שעלה ב-%65.9% ו-MAN שעלה ב-%62.1%. תנועה בסדר גודל כזה במהלך חודש מתבטאת בדרך כלל תחילה כעלייה ב-relative volume לעומת ה-average daily volume של המניה, ולעיתים היא מתחילה ב-overnight gap במסחר אחד ולא בעלייה הדרגתית לאורך כל התקופה.
המניות המפסידות ביותר החודש
אותה מבנה הפוך: הירידות החדות ביותר בתקופה זו, בקרב חברות שעברו את רף ה-1 billion דולר.
ה-SQL המדויק מאחורי כל מספר
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT ticker,
round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct,
round(sum(dollars) / 1e9, 1) AS month_dollar_bn
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) ASC
LIMIT 10CLBK הייתה המניה עם הירידה החדה ביותר ב-%-44.6% עם נפח מסחר של $1.1 billion, כאשר NVTS במקום השני ב-%-41.6%. יש לעקוב אחר עמודת הדולר בלוח זה. ירידה המתרחשת במסחר פעיל ושוק תנודתי היא אירוע שונה מירידה בשוק שקט, וההבדל ביניהם מובחן כאן במפורש ולא מובל כהנחה.
אותה שאלה בשלושה טווחי זמן
שאלה אחת, שלושה חלונות. שם יכול להוביל ברשימה אחת ולהיעלם בשתיים האחרות.
- המניות המפסידות ביותר השבוע, והמרוויחות לצדכן, לאורך חמשת ימי המסחר האחרונים
- עמוד זה, לאורך החודש האחרון
- המניות בעלות התנועה הגדולה ביותר ב-2026, נמדד מתחילת השנה ועד היום
שלוש הרשימות נבנות בנפרד והתצוגות שלהן אינן זהות. עמוד השבוע קובע רף נזילות ומינימום יום מסחר משלו לאורך חמישה ימי מסחר, ועמוד מתחילת השנה מסנן לפי נפח מסחר יומי ממוצע ולא לפי סך נפח המסחר לאורך התקופה. כל עמוד מפרט את הכללים שלו בחלק השיטתי שלו, לכן יש לקרוא אותם לפני העברת שם מרשימה אחת לאחרת.
פער חד יכול להשתלט על הרשימה השבועית ולהיעלם לאורך שנה. תנועה איטית של חודש לעולם לא תגיע לרשימה השבועית. קריאת שלושת הרשימות זו לצד זו היא הדרך הזולה ביותר להבחין בין אירוע חד-יומי לבין מגמה.
מצב השוק באותו טווח זמן
ביצועי מניה בחודש נראים אחרת בהשוואה לביצועי השוק באותו חודש. ארבעת מדדי הייחוס המרכזיים, שכל אחד מהם נמדד מנקודת הפתיחה הראשונה בתוך טווח הזמן:
ה-SQL המדויק מאחורי כל מספר
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT session,
round(anyIf(cum_pct, ticker = 'SPY'), 2) AS sp500_pct,
round(anyIf(cum_pct, ticker = 'QQQ'), 2) AS nasdaq100_pct,
round(anyIf(cum_pct, ticker = 'DIA'), 2) AS dow_pct,
round(anyIf(cum_pct, ticker = 'IWM'), 2) AS russell2000_pct
FROM (
SELECT ticker,
formatDateTime(d, '%Y-%m-%d') AS session,
100 * (c / first_value(o) OVER (PARTITION BY ticker ORDER BY d) - 1) AS cum_pct
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker, d
)
)
GROUP BY session
ORDER BY sessionבמסחר האחרון עמד מדד S&P 500 ב-1.85%, מדד Nasdaq 100 ב--1.47%, מדד Dow ב-1.33% ומדד Russell 2000 ב-0.17%. ארבעה סלים, טווח זמן אחד, ארבע תשובות שונות. כעת, השוו את רשימת המרוויחים לטווח זה: המניה המובילה ברשימת המרוויחים רשמה 136.1% באותן ימי המסחר. המרווח בין המניות הבודדות גדול בהרבה מזה של הסלים המכילים אותן, וזו הסיבה שרשימת המניות הנעות מורכבת משמות בודדים.
ביצועי המותגים המוכרים
קוראים המחפשים את המניות בעלות הביצועים הטובים ביותר החודש, מעוניינים בדרך כלל לדעת גם מה היו התוצאות של המניות שכבר נמצאות בתיק שלהם. סל קבוע של שמונה חברות ענק מוכרות, באותו טווח זמן ובאותו מבנה:
ה-SQL המדויק מאחורי כל מספר
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT ticker,
round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'GOOGL', 'META', 'TSLA', 'AVGO')
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) DESCהקבוצה נעלה מ11.5% עבור META בראש הרשימה ועד -4.7% עבור TSLA בתחתית הרשימה. הן לא נעות כבלוק אחד, מה שמהווה את המקרה הרגיל ולא את החריג. חברות אלו מאוחדות על ידי השתתפות במדד; קווי ההכנסות שלהן אינם קשורים זה לזה. הסל הוא רשימה קבועה של שמונה שמות ולא דירוג, לכן יש להתייחס אליו ככלי להתמצאות ולא כטענה לגבי הגודל של החברות.
איך נראה חודש רגיל
לוחות המובילים מציגים את הקיצוניים ביותר. זה מציג את הממוצע. כל חברות 1167 שעברו את הסינון, מסודרות בקבוצות לפי התשואה שלהן לאורך התקופה:
ה-SQL המדויק מאחורי כל מספר
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT tup.1 AS return_bucket,
tup.3 AS stocks
FROM (
SELECT arrayJoin(arrayZip(
['down 20% or more', 'down 10% to 20%', 'down 0% to 10%',
'up 0% to 10%', 'up 10% to 20%', 'up 20% or more'],
[1, 2, 3, 4, 5, 6],
[countIf(r <= -20), countIf(r > -20 AND r <= -10), countIf(r > -10 AND r < 0),
countIf(r >= 0 AND r < 10), countIf(r >= 10 AND r < 20), countIf(r >= 20)])) AS tup
FROM (
SELECT ticker,
(argMax(c, d) / argMin(o, d) - 1) * 100 AS r
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
)
)
ORDER BY tup.252 מהחברות שסוננו הרוויחו 20% ומעלה לאורך התקופה, ו50 הפסידו 20% ומעלה. שתי הקבוצות הקרובות ביותר למצב של תשואה אפסית הכילו 300 ו515 שמות. הגרף הזה הוא הבסיס ממנו נגזר לוח המובילים של המניות המשתנות ביותר, ועשר המקומות הראשונים הם הקצה הימני ביותר שלו. קראו את הלוחות לעיל עם הבנה זו: תנועה חודשית של עשר המקומות הראשונים היא חריגה מעצם מבנה הנתונים, והיא לעולם אינה מייצגת חודש טיפוסי עבור מניה טיפוסית.
מה מעלה מניה לרשימת המניות המובילות בחודש
חודש הוא פרק זמן ארוך מספיק כדי לכלול מספר אירועים, אך קצר מספיק כך שאירוע אחד בדרך כלל דומיננטי. השמות ברשימות אלו תואמים בדרך כלל לאירועים קלנדריים של החברה. דוחות רבעוניים הם הסיבה הנפוצה ביותר: עמידה בציפיות או אי-עמידה בהן מעדכנות את המחיר במסחר של יום אחד, ושאר החודש המסחר מתקיים סביב הרמה החדשה. שינויים בתחזיות (Guidance) מבצעים פעולה דומה גם ללא פרסום התוצאות.
חדשות על מיזוגים ורכישות משאירות את החותם הבולט ביותר ברשימה החודשית. המניה קופצת לרמה קרובה למחיר העסקה המוצהרת ולאחר מכן נרמלת, כאשר נפח המסחר בדולרים נשאר עצום בעוד השינוי באחוזים מתייצב. אם שם בראש טבלת המרוויחות מציג סכום דולרי גבוה מאוד ומחיר שחדל לנוע באמצע התקופה, יש לבחון דפוס זה לפני כל דבר אחר.
תנועות סקטוריאליות משמעותיות לאורך חודש באופן שנדיר לקרות לאורך שבוע. שינוי בריבית, במחיר הנפט או במחירי זיכרון משפיע על קבוצה שלמה בבת אחת, וזו הסיבה שרשימות חודשיות מציגות לעיתים קרובות צבירים של עסקים דומים במקום עשר מניות ללא קשר ביניהן. פעולות אנליסטים, הוספה או הסרה ממדדים, תוצאות ניסויים ורגולציה, ו-short squeezes משלימים את שאר הרשימה. אף אחד מהנתונים הללו אינו נראה רק באמצעות אחוז השינוי, וזו הסיבה שעמודת נפח המסחר בדולרים וטווח הזמן של השוק מופיעים לצד כל תנועה כאן.
כיצד זה נמדד
כל רף מפורט כאן במפורש במקום להישאר משתמע. מסך עם כללים נסתרים נראה כמו נתונים, אך הוא למעשה דעה.
- החלון. 30 ימי המסחר האחרונים (Calendar days) עד לסשן האחרון שבו הנתונים נטענו במלואם, שהגיע ל-21 סשנים מבין Jun 23 עד Jul 22. שני כללים קובעים אם סשן עומד בתנאים. עליו להסתיים לפני התאריך הנוכחי בניו יורק, ולכן הסשן המתנהל כעת אינו נכלל בטווח. בנוסף, מספר הנרות בשעות המסחר הרגילות חייב להגיע ל-85% מהחציון של הסשנים לאורך סריקת ה-34 יום, מה שמוציא יום מוקדם יותר שנתוניו עדיין בתהליך הטענה. סשן קצר ביום חג מציג בערך מחצית מכמות הנרות של יום רגיל, ולכן אותו כלל מוציא אותו במקום למדוד אותו כנתון חלקי.
- התשואה. המחיר של פתיחת סשן המסחר הרגיל הראשון בתוך החלון ועד לסגירה של סשן המסחר הרגיל האחרון, המחושבת על בסיס נרות דקה. שעות המסחר הרגילות בלבד; נתוני Pre-market ו-After-hours אינם נכללים. זוהי תשואת מחיר (Price return): דיבידנדים אינם מתווספים בחזרה.
- הרף התחתון. נפח מסחר של לפחות 1 מיליארד דולר לאורך כל החלון, מחיר פתיחה של 10 דולר ומעלה, ונתונים בלפחות 15 סשנים מתוך החלון. רף הדולר הוא סכום חודשי, מה שהופך את העמידה בו לקלה יותר מאשר מדידה של אותו סכום שבוע אחד.
- החרגות. קרנות ממונפות וקרנות הפוכות מוסרות לפי שמן. כל ticker חייב לכלול גם נתונים פונדמנטליים של החברה ושווי שוק רשום בנתוני הייחוס שלנו. הכלל השני מוציא ETF, קרנות סגורות, קרנות סחורות ואת קבוצת המוצרים הממונפתים המהירה של מניות בודדות, אשר אחרת היו ממלאות את רוב הלוחות. טבלת הייחוס מכילה שורה אחת לכל ticker במקום צילום מצב יומי, ולכן המסך סורק את הטבלה כולה ולא תאריך בודד קובע מי זכאי. כל ticker שבו בוצע פיצול מניות (Stock split) ב-45 הימים האחרונים מוצא מהרשימה במקום לבצע התאמה לאחור (Back-adjustment), מכיוון שפיצול משנה את מחיר המניה ללא שינוי ערך ההחזקה. סימול אחד שספקי הנתונים שינו לו את ההגדרה בין שתי חברות שונות מוצא מהרשימה לפי שמו.
- פאנל ה-Mega-cap. סל קבוע של שמונה חברות אמריקאיות גדולות ונפוצות, הרשומות לפי שמן ב-SQL של הפאנל. הוא משתמש באותו חלון ובאותו מבנה תשואה כמו הלוחות, והוא אינו כפוף לרף נפח המסחר בדולרים.
- מה שאינו מוחל. אין מסנן מגזרים, אין רף לשווי שוק ואין דרישת חברות למדדים, ולכן חברה קטנה עם תנועת מסחר גבוהה (Churn) יכולה להופיע בלוח לצד חברה גדולה. הדירוג הוא לפי אחוז שינוי בלבד, וזו הסיבה שעמודת הדולרים שנסחרו מופיעה לצדו.
פאנל אחד מכיל את הרישום המלא של הכל: הסשנים שכיסו את החלון, ומערכת הנתונים שמה עליהם נסרקו הלוחות.
ה-SQL המדויק מאחורי כל מספר
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
),
screened AS (
SELECT ticker
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
)
SELECT formatDateTime(w.first_d, '%b %e') AS first_session_date,
formatDateTime(w.last_d, '%b %e') AS last_session_date,
w.n AS sessions,
(SELECT count() FROM global_markets.stocks_ratios WHERE market_cap > 0) AS companies_on_file,
(SELECT count() FROM screened) AS companies_screened
FROM (SELECT min(d) AS first_d, max(d) AS last_d, count() AS n FROM window_days) AS wהסריקה החלה מ-4121 tickers בעלי שווי שוק בטבלת הייחוס והסתיימה ב-1167 חברות שעמדו ברפי המיליארד דולר, המחיר והסשנים. שני הנתונים נשמרים בכל רענון של דף זה, כך שריצה על מערכת נתונים מצומצמת תופיע ברישום במקום שתעבור ללא תשומת לב.
שאלות נפוצות
מהן המניות בעלות העלייה הגבוהה ביותר החודש?
עבור התקופה שהסתיימה ב-Jul 22, העליות הגדולות ביותר בקרב חברות עם שווי שוק של מעל 1 מיליארד דולר היו של CRNX בשיעור של 136.1% ושל PBF בשיעור של 65.9%. רשימת עשר המניות המובילות המלאה מופיעה בטבלה הראשונה בעמוד זה, והיא מתעדכנת עם סיום ימי המסחר.
אילו מניות ירדו ביותר החודש?
CLBK הייתה המניה עם הירידה החדה ביותר בשיעור של -44.6%, ואחריה NVTS בשיעור של -41.6%. שתיהן נמדדות לאורך אותן ימי מסחר של 21, עם אותו רף שווי שוק של 1 מיליארד דולר המופיע ברשימת המניות העולות.
כיצד נמדדות תשואות המניות החודשיות?
תשואה חודשית כאן היא השינוי ממחיר הפתיחה של המניה במסחר הרגיל הראשון בתקופה, למחיר הסגירה האחרון במסחר הרגיל, המחושב על בסיס נרות של דקה. זוהי תשואת מחיר, ולכן דיבידנדים אינם נכללים, וכל חברה שביצעה פיצול מניות (stock split) סמוך לתקופה נשלחת מהרשימה במקום לבצע התאמה לאחור.
מדוע ETF ממונף אינם נכללים ברשימת המניות הנעות?
קרן ממונפת או קרן הפוכה מכפילה את התנועה היומית של מדד או מניה בודדת, ולכן היא יכולה להופיע בראש רשימת המניות הנעות ביום מסחר רגיל ללא חדשות מהחברה. הסרתם שומרת על הרשימה כרשימה של חברות פעילות. כיצד עובדים ETF ממונפים מסביר את תהליך ה-daily reset ואת הסטייה (drift) הנובעת מהחזקה בקרן למשך חודש.
כל לוח המופיע לעיל הוא שאילתה שמורה עם קוד SQL משלה. ניתן לפתוח אחת מהן, לשנות את רף השווי או את אורך התקופה, ולסנן את אותה רשימה בעצמכם בטרמינל של Strasmore.