Strasmore Research
סיכומי שוק Matt Connorמאת Matt Connor · עודכן 2026-07-24 · data as of July 24, 2026 · refreshed weekly

המניות העולות והיורדות ביותר בשנת 2026

רשימת המניות בעלות הביצועים הטובים ביותר והמניות המפסידות בשנת 2026, מדורגות לפי נתוני נזילות אמיתיים ללא פיצולי מניות או קרנות ממונפות.

המניות בעלות הביצועים הטובים ביותר בשנת 2026 עד כה מובילות על ידי SNDK, עם עלייה של 554.9% מסשירת הפתיחה של השנה ועד לסשן האחרון שהושלם. דף זה מדרג את המניות בעלות הרווחים וההפסדים הגדולים ביותר בשנת 2026 מבין שמות הנסחרים בפועל, על פי נתוני המסחר בבורסה ולא על סמך סיכום של ספק נתונים, והוא מתעדכן במהלך השנה. פיצולי מניות וקרנות ממונפות מוחרגים לפני הדירוג, מה שמהווה טעות נפוצה ברוב הרשימות של מתחילת השנה ועד היום.

המניות בעלות העלייה הגבוהה ביותר בשנת 2026

כל שם ברשימה עבר רף נזילות לפני שדורג: מחזור מסחר ממוצע של לפחות 100 מיליון דולר למסחר בכל יום מסחר במהלך החודש האחרון. אחוז גבוה במניה שאין לה נפח מסחר אינו נחשב לתוצאה, אלא לציטוט בלבד.

שאילתההמניות המרוויחות ביותר ב-2026: עשר המקומות הראשונות מתחילת השנה מבין מניות נזילות
ה-SQL המדויק מאחורי כל מספר
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 count() >= 380
),
universe AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING adv >= 100000000
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT e.ticker AS ticker,
    round((e.latest_close / e.year_open - 1) * 100, 1) AS ytd_return_pct,
    round(u.adv / 1e6, 0) AS avg_daily_dollar_m
FROM edges AS e
INNER JOIN universe AS u ON e.ticker = u.ticker
WHERE e.year_open >= 10
ORDER BY (e.latest_close / e.year_open) DESC
LIMIT 10

SNDK מובילה את השנה עם 554.9%, כאשר MXL נמצאת במקום השני עם 386.3% ו-AEHR במקום השלישי עם 345%. במקום העשירי ברשימה, AAOI, עדיין עולה ב-204.3%, ולכן כל הטבלה רצה הרבה קדימה מכל מדד רחב.

עמודת הדולרים לצד כל שינוי מכילה מידע רב לא פחות מהאחוזים. AAOI מציגה מחזור מסחר יומי ממוצע של כ-817 מיליון דולר. SNDK בראש הרשימה מציגה ממוצע של 18348 מיליון דולר. כל שם כאן עוקף את רף ה-100 מיליון דולר ביום, והטווח מעל רף זה רחב מספיק כך שאותו אחוז בכותרת משמעות שונה בשני קצוות הטווח. מניה עם נפח מסחר נמוך קלה יותר להזזת מחיר אך קשה יותר ליציאה במחיר המוצג על המסך.

המניות המפסידות הגדולות ביותר בשנת 2026

אותו מדד, אך הפוך: הירידות החדות ביותר מתחילת השנה בקרב מניות שעברו את רף הנזילות הנ"ל.

שאילתההמניות המפסידות ביותר ב-2026: עשר המפסידות ביותר מתחילת השנה מבין מניות נזילות
ה-SQL המדויק מאחורי כל מספר
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 count() >= 380
),
universe AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING adv >= 100000000
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT e.ticker AS ticker,
    round((e.latest_close / e.year_open - 1) * 100, 1) AS ytd_return_pct,
    round(u.adv / 1e6, 0) AS avg_daily_dollar_m
FROM edges AS e
INNER JOIN universe AS u ON e.ticker = u.ticker
WHERE e.year_open >= 10
ORDER BY (e.latest_close / e.year_open) ASC
LIMIT 10

הירידה החדה ביותר מתחילת השנה שייכת ל EOSE ברמה של -65.9%, ואחריה CSGP ברמה של -58.7%. במקום העשירי ברשימה, TEAM נמצא ב--47.3%. מספר מניות ברשימה הן חברות גדולות בעלות אחזקה נרחבת ולא מניות מיקרו-קאפ ספקולטיביות, מה שמהווה חלק מפתיע ברשימת המפסידות. נזילות וכיסוי אנליסטים אינם מספקים רצפה למחיר המניה. כל מי שהחזיק באחת מהן כחלק משמעותי מהפורטפוליו ספג את התנועה המלאה, אותה דף סיכון של החזקת מניה אחת מודד באמצעות נתוני תנודתיות ומשיכה (drawdown).

כמה מהשוק נמצא במגמת עלייה ב-2026

טבלת מובילים מציגה רק את שני הקצוות. רוחב השוק (Breadth) מציג את הגוף: כיצד כלל המניות שנבדקו, כולל קרנות מדד, מתחלקות בין מניות עולות ליורדות, לפי גודל התנועה.

שאילתהרוחב שוק מתחילת השנה: התפלגות היקום הסרוק על פני טווחי תשואה
ה-SQL המדויק מאחורי כל מספר
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 count() >= 380
),
universe AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING adv >= 100000000
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
      AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                         WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
),
rets AS (
    SELECT e.ticker AS ticker, (e.latest_close / e.year_open - 1) * 100 AS ret
    FROM edges AS e
    INNER JOIN universe AS u ON e.ticker = u.ticker
    WHERE e.year_open >= 10
)
SELECT bucket,
       names,
       round(100 * sum(names) OVER (PARTITION BY side) / sum(names) OVER (), 1) AS side_share_pct
FROM (
    SELECT tup.1 AS bucket, tup.2 AS names, tup.3 AS ord, tup.4 AS side
    FROM (
        SELECT arrayJoin([
            ('Down 40%+',   countIf(ret < -40),               1, 'down'),
            ('Down 20-40%', countIf(ret >= -40 AND ret < -20), 2, 'down'),
            ('Down 10-20%', countIf(ret >= -20 AND ret < -10), 3, 'down'),
            ('Down 0-10%',  countIf(ret >= -10 AND ret < 0),   4, 'down'),
            ('Up 0-10%',    countIf(ret >= 0 AND ret < 10),    5, 'up'),
            ('Up 10-25%',   countIf(ret >= 10 AND ret < 25),   6, 'up'),
            ('Up 25-50%',   countIf(ret >= 25 AND ret < 50),   7, 'up'),
            ('Up 50%+',     countIf(ret >= 50),                8, 'up')
        ]) AS tup
        FROM rets
    )
)
ORDER BY ord

61.9% מהמניות שנבדקו נמצאות במגמת עלייה מתחילת השנה ו-38.1% נמצאות במגמת ירידה. ההתפלגות היא מה שטבלת עשרת המובילים מסתירה. 22 מניות נמצאות ב-Down 40%+ בקיצון אחד ו-130 ב-Up 50%+ בקיצון השני, לעומת 146 ב-Down 0-10% ו-159 ב-Up 0-10% משני צידי המניות ללא שינוי. רוב השוק מבצע תנועה רגילה בכל שנה נתונה, והמניות בשתי הטבלאות לעיל הן החריג שממנו נבנים הממוצעים.

מצב השוק

ביצועי מניה בודדת בשנה נראים אחרת בהשוואה למדדים. ארבעת ה-ETFs המרכזיים, בדיוק באותו טווח זמן:

שאילתהארבעת מדדי ה-ETF המרכזיים, מתחילת השנה, באותו טווח זמן
ה-SQL המדויק מאחורי כל מספר
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 count() >= 380
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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
      AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT multiIf(ticker = 'SPY', 'S&P 500 (SPY)', ticker = 'QQQ', 'Nasdaq 100 (QQQ)',
               ticker = 'DIA', 'Dow (DIA)', ticker = 'IWM', 'Russell 2000 (IWM)', ticker) AS label,
    round((latest_close / year_open - 1) * 100, 1) AS ytd_return_pct,
    (SELECT toString(min(d)) FROM complete) AS measured_from_date,
    (SELECT toString(max(d)) FROM complete) AS measured_through_date
FROM edges
ORDER BY ytd_return_pct DESC

גם המדדים וגם הלוח לעיל נמדדים על פני טווח זמן אחד: מהישיבה המלאה הראשונה של 2026 (2026-01-02) ועד לישיבה האחרונה שהושלמה (2026-07-22). לאורך תקופה זו, Russell 2000 (IWM) הניב 18.6% ו-Dow (DIA) הניב 8.2%. כל המניות בטבלת המרוויחים עקפו את כל ארבעת המדדים בפער ניכר, דבר המעיד על המתמטיקה של מדד: מאות החזקות הממוצעות לשורה אחת, שבה תנועות בודדות מבטלות חלקית זו את זו. המרווח מתחת לשורה זו היה רחב בהרבה מהשורה עצמה, ולוח המדדים המגזרי לחצי השנה הראשון מדרג את כל אחד-עשר המגזרים זה מול זה.

המניה שהתרחשה בדיבידנד מנייתי ויוצרת מצג שווא של תשואה שנתית

פיצול מניות משנה את מספר המניות ואת המחיר למניה מבלי לשנות את שווי ההחזקה בפועל. לאורך טווח זמן כזה, חברות רבות מבצעות פיצולים, וחישוב לא מתוקנן של התשואה מתחילת השנה (year-to-date) מפרש את השינוי במחיר למניה כתשואה. המניות המפורטות להלן ביצעו פיצול או דיבידנד מנייתי בשנת 2026, ששינה את מחיר המניה בלפחות חמישית, וכל אחת מהן עברה את רף הנזילות הנדרש, ולכן כל אחת הייתה זכאית להופיע בלוחות שמעל לפני שסינון הפיצולים הסיר אותן.

שאילתהמוחרגים מהלוחות: פיצולי מניות ב-2026 הגדולים מספיק כדי לזייף תנועת YTD
ה-SQL המדויק מאחורי כל מספר
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 count() >= 380
),
universe AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING adv >= 100000000
),
split_terms AS (
    SELECT ticker,
        argMax(split_to, execution_date) AS new_shares,
        argMax(split_from, execution_date) AS old_shares,
        round((old_shares / new_shares - 1) * 100, 1) AS split_price_effect_pct,
        replaceAll(argMax(adjustment_type, execution_date), '_', ' ') AS split_type,
        toString(max(execution_date)) AS split_date
    FROM global_markets.stocks_splits
    WHERE execution_date BETWEEN toDate('2026-01-01') AND today()
    GROUP BY ticker
    HAVING new_shares > 0 AND old_shares > 0
       AND greatest(new_shares / old_shares, old_shares / new_shares) >= 1.25
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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
      AND ticker NOT IN ('SPCX')
      AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
      AND ticker IN (SELECT ticker FROM split_terms)
    GROUP BY ticker
    HAVING bars_open >= 100 AND bars_close >= 100
),
ranked AS (
    SELECT e.ticker AS ticker,
        round((e.latest_close / e.year_open - 1) * 100, 1) AS unadjusted_ytd_pct,
        s.split_price_effect_pct AS split_price_effect_pct,
        s.split_type AS split_type,
        s.split_date AS split_date
    FROM edges AS e
    INNER JOIN split_terms AS s ON e.ticker = s.ticker
    WHERE e.year_open >= 10 AND e.ticker IN (SELECT ticker FROM universe)
)
SELECT ticker, unadjusted_ytd_pct, split_price_effect_pct, split_type, split_date
FROM (
    SELECT ticker, unadjusted_ytd_pct, split_price_effect_pct, split_type, split_date,
           row_number() OVER (ORDER BY unadjusted_ytd_pct ASC) AS rn_low,
           row_number() OVER (ORDER BY unadjusted_ytd_pct DESC) AS rn_high
    FROM ranked
)
WHERE rn_low <= 14 OR rn_high = 1
ORDER BY unadjusted_ytd_pct ASC

BKNG תציג -96.7% במסך לא מתוקנן לאחר שforward split שינה את מחיר המניה ב--96%, ו-CVNA תציג -85.1% לאחר ש-forward split שינה את מחירה ב--80%. אף מחזיק מניות באף אחת מהן לא הפסיד דבר ביום שבו נכנס הפיצול לתוקף. המחיר למניה חולק ומספר המניות הוכפל באותו מקדם. עמודת השפעת הפיצול מבודדת את שינוי המחיר הנובע מהפיצול בלבד, שהוא החלק שמסך לא מתוקנן מפרש כתשואה.

השורה האחרונה בלוח פועלת בכיוון ההפוכה: DD מציגה את 245.3% לאחר ש-reverse split העלתה את המחיר למניה ב-200%, כלומר הגדילה את המחיר במקום להקטין אותו. כל רשימה שמדלגת על שלב זה מפרסמת נתונים שגויים הן בראש הרשימה והן בתחתיתה, וזו הסיבה שהמסך מפריד מניות שעברו פיצול במקום לנסות לתקן את מחיריהן. קרן יכולה להופיע בלוח זה בדיוק כמו חברה: גם קרנות מדד מבצעות פיצול מניות, ומסך זה מכסה את שתיהן.

אופן מדידת המסך הזה

כל שלב במסך, עם מספר המניות שנותרו לאחרו:

שאילתהשלבי הסינון: כמה מניות שורדות כל מסננת
ה-SQL המדויק מאחורי כל מספר
WITH complete AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2026-01-01 00:00:00')
      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 count() >= 380
),
universe AS (
    SELECT ticker
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 21 DAY
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
      AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
      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
    HAVING sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) >= 100000000
),
edges AS (
    SELECT ticker,
        argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
        argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
        countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
        OR (window_start >= now() - INTERVAL 8 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 ticker
    HAVING bars_open >= 100 AND bars_close >= 100
),
flagged AS (
    SELECT ticker,
        year_open,
        ticker IN (SELECT ticker FROM universe) AS liquid,
        ticker NOT IN ('SPCX','KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL') AS not_geared,
        ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
                       WHERE execution_date BETWEEN toDate('2026-01-01') AND today()) AS no_split
    FROM edges
)
SELECT tup.1 AS screen_step, tup.2 AS names
FROM (
    SELECT arrayJoin([
        ('Traded the first and the last full session', count()),
        ('Averaging $100m+ a day over the past month', countIf(liquid)),
        ('Opened 2026 above $10 a share', countIf(liquid AND year_open >= 10)),
        ('Not on the excluded-fund list', countIf(liquid AND year_open >= 10 AND not_geared)),
        ('No split or stock dividend in 2026', countIf(liquid AND year_open >= 10 AND not_geared AND no_split))
    ]) AS tup
    FROM flagged
)

השיטה, בפירוט מלא:

  • החלון. מסחר מלא אחד לפחות מתחילת שנת 2026 ועד למסחר המלא האחרון בבורסה. שני הקצוות מחושבים על בסיס נרות של דקה, ויום נחשב רק כאשר יש לו מספר נרות מלא בשעות המסחר הרגילות; יום שעדיין מתרחש אינו נחשב כהושלם.
  • התשואה. מחיר הפתיחה של המסחר הרגיל הראשון בשנה מול מחיר הסגירה של המסחר הרגיל האחרון, המחושב על בסיס נרות של דקה. נתוני טרום-מסחר (Premarket) ופוסט-מסחר (After-hours) אינם נכללים. אלו הן תשואות מחיר; דיבידנדים אינם מתווספים בחזרה, ולכן מניה עם תשואת דיבידנד גבוהה תציג תוצאה מעט נמוכה יותר מנתוני תשואה כוללת (Total-return).
  • רף הנזילות. ממוצע של לפחות 100 מיליון דולר מחזור מסחר בשעות המסחר הרגילות בכל יום מסחר לאורך 20 הימים הקלנדריים האחרונים, תוך ספירת ימי מסחר שהושלמו מההתחלה ועד הסוף בלבד. ללא כלל זה, יום מסחר חלקי היה מחלק חלק מהסכום היומי ביום שלם ומציג מחזור מסחר נמוך מדי עבור כל מניה. מסנן זה לבדו מצמצם את הרשימה מ4492 ל1036 tickers.
  • רף המחיר. המניה נפתחה בשנה מעל 10 דולר למניה. מניות מתחת ל-10 דולר מייצרות אחוזים גבוהים משינויי מחיר קטנים.
  • קרנות ממונפות והפוכות מוחרגות באמצעות רשימה מבוקרת, המופיעה במלואה ב-SQL תחת כל טבלה. הרשימה כוללת קרנות המצופות למדדים וקרנות מנייתיות המכפילות את התנועה היומית של חברה בודדת. קרן ממונפת יכולה להופיע בראש רשימת המניות התנועתיות ביותר ללא שום חדשות על החברה. הרשימה מתוחזקת ידנית, וזהו נקודת התורפה שלה: קרן שהושקה החודש תוחרג רק לאחר שמישהו יוסיף אותה לרשימה.
  • קרנות רגילות אינן מוחרגות. ETF של מדד או מגזר ללא מינוף שעומד ברפי הנזילות והמחיר מדורג כאן לצד חברות פעילות, והוא נכלל גם בספירות ה-breadth. קרן היא סל של מניות שכבר נספרו באותו עולם, לכן יש לקרוא שורות אלו כביצוע של הסל ולא כשנה של חברה בודדת.
  • פיצולי מניות. כל ticker שבו בוצע פיצול מניות או דיבידנד במניות שנכנס לתוקף במהלך 2026 מוסר מהרשימה, ללא קשר ליחס הפיצול. זוהי הבחירה השמרנית: היא גורמת לכמה מניות בעלות ביצועים אמיתיים לאבד מקום בלוח, והיא מונעת פרסום שינוי במספר המניות כחלק מהתשואה. הטבלה לעיל מציגה את המניות שהוחרגו בשל פיצול משמעותי מספיק כדי לייצר תנועה מלאכותית.
  • רישום מאוחר. חברה שנרשמה לאחר יום המסחר הראשון של השנה אינה מחזיקה במחיר של ינואר ואינה מופיעה בטבלאות אלו, מה שמהווה פער אמיתי בשנה עם לוח זמנים עמוס של רישום חברות חדשות.
  • התוצאה. 954 מניות מדורגות, ועשר המניות המובילות ועשר המניות האחרונות מתוכן הן שתי הטבלאות בעמוד זה.

אותה שאלה בשלושה אופק ๆ

הנתונים מתחילת השנה הם שלב אחד בסולם, ותנועה נראית אחרת בכל טווח זמן. המבט השבועי מציג את המניות בעלות העלייה והירידה הגבוהות ביותר השבוע, המבט החודשי מציג את המניות בעלות התנועה הגבוהה ביותר החודש, ועמוד זה מציג את השנה. הקריטריונים משתנים לפי כל שלב: עמוד זה מסנן לפי נפח מסחר ממוצע של 100 מיליון דולר ביום במהלך החודש האחרון, בעוד עמודי השבוע והחודש מסננים לפי סך הדולרים שנסחרו בתוך טווח הזמן שלהם; לכן, מניה יכולה להופיע בראש הרשימה בטווח אחד אך לא בשני. מניה שמובילה בלוח השבועי בעקבות תגובה לדו"ח רווחים מסוים, עשויה להופיע באמצע הטבלה בטווח השנתי. עבור התמונה הרחבה יותר של השנה עד כה, סיכום שוק המחצית הראשונה כולל פירוט על המדדים, הריבית והמגזרים, וכיצד עובדים leveraged ETFs מסביר מדוע קרנות ממונפות מופרדות כאן.

שאלות נפוצות

מה המניה בעלת הביצועים הטובים ביותר בשנת 2026?

מבין מניות עם נפח מסחר יומי ממוצע של לפחות 100 מיליון דולר, שפתחו את השנה מעל 10 דולר, ללא פיצול מניות בשנת 2026 ולא מופיעות ברשימת קרנות המינוף, SNDK היא המניה בעלת הביצועים הטובים ביותר בשנת 2026 עד כה, עם עלייה של 554.9% מאז יום המסחר הראשון של השנה. MXL מדורגת במקום השני עם עלייה של 386.3%.

אילו מניות ירדו ביותר בשנת 2026?

EOSE היא המניה בעלת הביצועים הגרועים ביותר בשנת 2026 במסך זה, עם ירידה של -65.9%, לפני CSGP עם ירידה של -58.7%. הרשימה המלאה של המניות המפסידות הגדולות ביותר בשנת 2026 מופיעה בטבלה השנייה לעיל, ומתעדכנת לאורך השנה.

כיצד מחושב תשואה למניה מתחילת השנה (YTD)?

תשואה מתחילת השנה משווה את המחיר העדכני למחיר בתחילת השנה הקלנדרית ומציגה את השינוי כאחוז. במקרה זה, ההשוואה היא בין מחיר הפתיחה של יום המסחר הרגיל הראשון בשנת 2026 לבין מחיר הסגירה של יום המסחר האחרון שהושלם. מניות שעברו פיצול במהלך השנה אינן עוברות התאמה אלא מוצאות מהרשימה, כך שאין גורם התאמה בין הקורא לנתוני המסחר.

האם ETF ממונף כלול ברשימת המרוויחות של 2026?

לא. קרן ממונפת או קרן הפוכה מכפילה את התנועה היומית של מדד או מניה בודדת, ולכן היא עולה לעיתים קרובות ברשימת המרוויחות ללא חדשות מהחברה. קרנות אלו מוסרות מהדירוג, והרשימה מופיעה ב-SQL מתחת לכל טבלה. ETF רגילים של מדדים ומגזרים הם מקרה שונה: הם עומדים באותם קריטריונים כמו כל מניה ומדורגים כאן, ולכן קרן יכולה להופיע באחד הלוחות.


כל טבלה כאן היא שאילתת SQL שמצורפת אליה. ניתן להרחיב כל פאנל כדי לבדוק את המסך, או לבנות אותו מחדש עם הקריטריונים האישיים שלך בטרמינל של Strasmore.