Strasmore Research
市場回顧 Matt Connor作者: Matt Connor · 更新於 2026-10-18 · data as of October 18, 2026 · refreshed weekly

2026年漲幅最大與跌幅最重的股票排行

查看2026年表現最佳與最差股票排名,依交易所真實成交與流動性篩選,排除股票分割及槓桿型基金,掌握榜首與跌幅排行變化。

2026年至今表現最佳的股票由 MRNA 領漲,從今年首個交易日開盤至最近一個已完成交易日,上漲 692.8%。本頁根據交易所成交紀錄,而非供應商彙總資料,排名2026年真正有交易的個股中漲幅最大與跌幅最大的股票,並會隨年度進展持續更新。排名前會先排除股票分割與槓桿型基金,這正是多數年初至今排行榜容易出錯之處。

2026年漲幅最大的股票

以下每檔股票在排名前,都先通過流動性門檻:過去一個月中,每個完整交易日的平均成交額至少為1億美元。沒有人交易的股票,即使百分比漲幅很高,也只是報價,不是實際結果。

查詢2026年漲幅最大的股票:高交易量股票中今年迄今前十名
股票代號年初至今報酬率 (%)平均每日成交金額(百萬美元)
MRNA692.83002
SNDK47111073
TWST355.2476
TXG343.5334
MXL338.4246
DELL2683100
AXTI236.9499
AEHR229.3203
PBF218.3195
KOD215.7389
每個數據背後的精確 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
自己執行這個查詢

MRNA以692.8%的漲幅領先全年,接下來是SNDK,漲幅為471%;第三名TWST則上漲355.2%。榜單第十名KOD仍上漲215.7%,因此整張榜單的表現都遠遠領先任何廣泛型指數。

每檔股票漲幅旁的美元成交額,同樣提供重要資訊。KOD的日均成交額約為389百萬美元。榜首MRNA的日均成交額為3002百萬美元。榜內每檔股票的日均成交額都超過1億美元,而且高於這項門檻的區間相當寬,意味著同樣的標題漲幅,在區間兩端代表的意義並不相同。成交清淡的股票較容易被推高,也較難以螢幕上的價格出場。

2026年跌幅最大的股票

採用相同指標,但方向相反:在達到相同流動性門檻的股票中,年初至今跌幅最大者。

查詢2026年跌幅最大的股票:高交易量股票中今年迄今後十名
股票代號年初至今報酬率 (%)平均每日成交金額(百萬美元)
CTVA-80.8410
TTD-65.7176
FLUT-64.8159
JOBY-64.3114
STLA-61.5126
OKLO-59.4288
APP-59.11168
SMR-57.8217
FICO-54.5998
Z-54.1114
每個數據背後的精確 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
自己執行這個查詢

年初至今跌幅最大的是 CTVA,跌幅為 -80.8%;其次是 TTD,跌幅為 -65.7%。排名第十的 Z,跌幅為 -54.1%。這份名單中的部分股票屬於大型且持股廣泛的公司,而非投機性微型股。這正是跌幅榜令人意外之處。流動性與分析師關注並不能為股價設下下限。若投資人將其中任何一檔股票配置為投資組合的過大比重,就會完整承受這段跌幅;持有單一股票的風險頁面則以波動率與回撤幅度衡量這項風險。

2026年市場有多少股票上漲

排行榜只能呈現兩端。市場廣度則顯示中間部分:整個篩選後的投資標的範圍,包括指數基金在內,如何依漲跌幅分組,分布在上漲與下跌的標的之間。

查詢今年迄今市場廣度:篩選股票池在各報酬率區間的分布
分組名稱側別占比 (%)
Down 40%+3741.2
Down 20-40%8441.2
Down 10-20%10441.2
Down 0-10%18741.2
Up 0-10%16258.8
Up 10-25%19458.8
Up 25-50%11658.8
Up 50%+11658.8
每個數據背後的精確 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
自己執行這個查詢

篩選後的標的中,58.8%今年以來上漲,41.2%下跌。這種分布是前十大標的排行榜所隱藏的資訊。位於一端的Down 40%+區間有37檔,另一端的Up 50%+區間有116檔;在未變動兩側,Down 0-10%區間有187檔,Up 0-10%區間則有162檔。市場中大多數標的在任何一年都呈現一般性的走勢;上方兩張表中的標的只是例外,而各項平均值正是由這些標的一同構成。

市場本身的表現

單一股票的年度表現,放在整體市場的年度表現中比較,會呈現不同面貌。以下是四檔主要指數 ETF 在完全相同期間的表現:

查詢四大指數 ETF:在相同觀測期間的今年迄今表現
標籤年初至今報酬率 (%)衡量起始日衡量截至日
Nasdaq 100 (QQQ)17.42026-01-022026-10-15
S&P 500 (SPY)12.52026-01-022026-10-15
Russell 2000 (IWM)11.12026-01-022026-10-15
Dow (DIA)8.22026-01-022026-10-15
每個數據背後的精確 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-10-15)止。在此期間,Nasdaq 100 (QQQ)上漲17.4%,Dow (DIA)上漲8.2%。漲幅榜上的每一檔股票都大幅超越這四檔 ETF。這正是指數運作的數學結果:數百檔持股平均成一條線,個別股票的漲跌會部分相互抵銷。這條指數線下方的個股表現分布,遠比指數本身寬廣;上半年各產業的評分表則將11個產業相互排名。

造成年初至今漲跌幅失真的股票分割

股票分割會改變股數與每股價格,但不會改變持有部位的價值。在這麼長的期間內,許多公司會進行股票分割;若未調整年初至今的計算,便會將每股價格的變化解讀為績效。以下各標的在2026年進行了足以使每股價格變動至少五分之一的股票分割或股票股利,且均符合相同的流動性門檻。因此,在套用股票分割篩選條件前,它們原本都符合上方排行榜的資格。

查詢排除標的:2026年足以扭曲今年迄今漲跌幅的股票分割
股票代號未調整年初至今報酬率 (%)拆股價格影響 (%)拆股類型拆股日期
BKNG-96.9-96forward split2026-04-06
KLAC-86.2-90forward split2026-06-12
CVNA-85.6-80forward split2026-05-08
VGT-83.9-87.5forward split2026-04-21
VUG-81.7-83.3forward split2026-04-21
VOOG-81-83.3forward split2026-04-21
MGK-77.9-80forward split2026-04-21
IWF-73.9-75forward split2026-04-29
VO-72.2-75forward split2026-04-21
INTW-57.3-87.5forward split2026-06-26
CRWD-48.4-75stock dividend2026-07-02
MNST-40.9-50stock dividend2026-08-11
APH-40.6-50stock dividend2026-09-03
HON7.6100reverse split2026-06-29
ETHA141.8200reverse split2026-10-06
每個數據背後的精確 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在forward split使其每股價格變動-96%後,年初至今漲跌幅為-96.9%;KLAC則會在forward split使其股價變動-90%後,顯示為-86.2%。兩者的持有人都沒有因股票分割生效而在當日蒙受損失。每股價格按照某一倍數除減,股數則按照相同倍數增加。股票分割影響欄位單獨列出分割本身造成的價格變化,也就是未調整篩選結果誤判為績效的部分。

面板的最後一列呈現相反情況:ETHA在reverse split使其每股價格上升200%後,顯示為141.8%,也就是價格上升而非下跌。任何跳過這項調整的排行榜,都會同時在頂端與底端刊出失實結果。因此,該篩選會將涉及股票分割的 ticker 另行排除,而不是試圖修正其價格。基金也同樣可能出現在這個面板中,因為指數基金也會進行股份分割;本篩選同時涵蓋公司與基金。

這項篩選的衡量方式

篩選的各個階段,以及每個階段完成後仍符合條件的標的數量:

查詢篩選流程逐階段:每項條件篩選後的剩餘標的數量
篩選步驟名稱
Traded the first and the last full session4543
Averaging $100m+ a day over the past month1082
Opened 2026 above $10 a share1049
Not on the excluded-fund list1017
No split or stock dividend in 20261000
每個數據背後的精確 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年的第一個完整交易時段,到行情資料中最近一個完整交易時段。兩個端點均取自分鐘線資料;只有具備完整正常交易時段K線數量的交易日才會計入。因此,尚未結束的交易日不會被視為已完成。
  • 報酬。 以年初第一個正常交易時段的開盤價,對比最後一個正常交易時段的收盤價,並根據分鐘線資料計算。盤前與盤後成交不納入計算。這裡計算的是價格報酬,不加回股息,因此高殖利率標的的表現會略低於總報酬數字所呈現的結果。
  • 流動性門檻。 過去20個日曆日內,正常交易時段每個交易日的平均成交金額至少為1億美元,且只計入從開盤至收盤完整交易的交易日。否則,部分交易日的成交金額會被除以完整的一天,導致所有標的的成交金額被低估。這項單一篩選將標的池從4543個 ticker 縮減至1082個。
  • 價格門檻。 股票年初開盤價須高於每股10美元。股價低於10美元的標的,可能僅因小幅價格變動便產生很大的百分比變化。
  • 槓桿型與反向基金透過人工整理的清單排除;該清單完整列在每張表格下方的 SQL 中。清單涵蓋追蹤指數並放大波動的基金,以及放大單一公司每日股價變動的單股基金。槓桿型基金可能在完全沒有公司新聞的情況下,登上原始漲跌幅排行榜。這份清單由人工維護,弱點也在於此:本月新推出的基金,必須等有人將其加入清單後才會被排除。
  • 一般基金不會被排除。 未使用槓桿的指數或產業 ETF,只要通過流動性與價格門檻,就會與營運公司並列排名,也會計入廣度統計。基金本身是一籃子已在相同標的池中計算的標的,因此這些列反映的是該籃子整體的表現,而非單一公司的年度表現。
  • 分割。 任何在2026年內生效拆股或股票股利的 ticker,無論比率多小,均會被擱置。這是較保守的做法:它會讓少數真正表現優異的標的無法登榜,但也不會把股數變化當成報酬發布。上方面板顯示遭排除、且分割幅度大到足以製造虛假漲跌幅的標的。
  • 晚上市標的。 在年初第一個交易日之後上市的公司沒有1月價格,因此不會出現在這些表格中。對於新上市日程密集的年度而言,這確實造成資料缺口。
  • 結果。 1000個標的完成排名,其中前十名與後十名分別構成本頁的兩個排行榜。

三個時間區間的相同問題

年初至今只是階梯上的一級,觀察區間不同,行情呈現也會不同。週線檢視的是本週漲幅最大與跌幅最大的股票,月線檢視的是本月波動最大的股票,本頁則檢視年初至今的表現。每一級的篩選門檻都不同:本頁篩選過去一個月平均每日成交額達1億美元的標的;週線與月線頁面則篩選各自區間內的累計成交金額。因此,某檔股票可能通過其中一個榜單的門檻,卻未能進入另一個榜單。某檔股票可能因一次財報公布後的反應而登上週榜首位,但在全年排名中僅居中段。若要了解今年截至目前為止的整體市場脈絡,上半年市場回顧提供指數、利率與產業的詳細內容;槓桿 ETF 如何運作則說明為何本頁排除槓桿型基金。

常見問題

2026年表現最佳的股票是哪一檔?

在每日平均成交額至少達1億美元、年初開盤價高於10美元、2026年未進行股票分割,且不在槓桿型基金名單中的股票裡,MRNA是截至目前2026年表現最佳的股票,較今年第一個交易日上漲692.8%。SNDK以471%居次。

2026年跌幅最大的股票有哪些?

在本篩選結果中,CTVA是2026年表現最差的股票,跌幅為-80.8%,其次是TTD,跌幅為-65.7%。2026年跌幅最大的完整股票名單列於上方第二張表,並會隨年內進展更新。

年初至今的股票報酬如何計算?

年初至今報酬是比較最新價格與曆年年初價格,並以百分比表示變化。本文採用2026年第一個正常交易時段的開盤價,與最近一個已完成交易時段的收盤價相比。年內進行股票分割的股票會予以排除,而非進行調整,因此讀者看到的市場行情不會夾帶調整因子。

2026年上漲股名單是否包含槓桿型 ETF?

不包含。槓桿型或反向基金會放大指數或單一股票的單日波動,因此在沒有公司消息支撐的情況下,也經常出現在原始漲跌幅名單的前列。這些基金會在排名前依名稱排除,相關名單可在各表下方的 SQL 中查看。一般指數 ETF 與產業 ETF 則不同:只要符合與個股相同的門檻,就會納入排名,因此基金可能出現在任一榜單中。


本文每張表都是附有 SQL 的儲存查詢。展開任一面板即可稽核篩選結果,或在 Strasmore terminal 上使用自訂門檻重新建立查詢。

#market movers#gainers and losers#year to date#stock splits#market breadth