Strasmore Research
Огляди ринку Matt ConnorВід Matt Connor · Оновлено 2026-10-18 · data as of October 18, 2026 · refreshed weekly

Найбільші зростання й падіння акцій у 2026 році

Рейтинг найкращих і найгірших акцій 2026 року за реальною ліквідністю біржового tape. Stock splits і leveraged funds виключено, рейтинг оновлюється протягом року.

Найкращі за показниками акції 2026 року наразі очолює MRNA, які зросли на 692.8% від першої торгової сесії року до останньої завершеної сесії. На цій сторінці наведено рейтинг найбільших зростань і падінь акцій у 2026 році серед паперів із реальними торгами. Розрахунок здійснюється за даними біржового tape, а не за зведенням постачальника даних. Сторінка оновлюється протягом року. Перед ранжуванням вилучаються результати stock splits і leveraged funds. Саме на цьому етапі більшість списків із показниками від початку року непомітно помиляються.

Найбільші зростання акцій у 2026 році

Кожна наведена нижче акція спочатку пройшла фільтр ліквідності, і лише після цього потрапила до рейтингу: у середньому за кожну завершену торгову сесію протягом останнього місяця обсяг торгів нею становив щонайменше $100 млн. Великий відсоток за акцією, якою ніхто не торгує, — це котирування, а не результат.

ЗапитНайбільші зростання акцій у 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 млн. За кожною акцією в цьому списку щодня укладають угоди щонайменше на $100 млн. Діапазон над цим мінімальним рівнем достатньо широкий, тому однаковий відсоток зростання на його верхній і нижній межах означає різні речі. Акцією з низьким обсягом торгів легше рухати, і з неї складніше вийти за ціною, яку бачить трейдер.

Найбільші падіння акцій у 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% подешевшали. Саме розподіл приховує таблиця з десятьма лідерами. 37 активів опинилися в категорії Down 40%+ на одному кінці діапазону, а 116 — у категорії Up 50%+ на іншому. Водночас по 187 припадає на категорії Down 0-10% і 162 у Up 0-10% по обидва боки від незмінного рівня. У будь-якому році більшість ринку демонструє звичайну динаміку. Активи з двох наведених вище таблиць є винятками, на основі яких формуються середні показники.

Позиція самого ринку

Результат окремої акції має інший вигляд у порівнянні з результатом усього ринку. Чотири основні індексні 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%. Кожна позиція в таблиці лідерів зростання випередила всі чотири індекси з великим відривом. Це відображає механіку індексу: сотні компонентів усереднюються в один показник, і їхні індивідуальні рухи частково компенсують один одного. Розкид результатів під цим показником був набагато ширшим, ніж сам показник, а секторальна таблиця за перше півріччя ранжує всі одинадцять секторів один проти одного.

Спліт акцій, який спотворює зміну від початку року

Спліт змінює кількість акцій і ціну однієї акції, не змінюючи вартості позиції. За такий тривалий період багато компаній проводять спліти, а необ adjusted розрахунок зміни від початку року сприймає зміну ціни однієї акції як результативність. Наведені нижче емітенти у 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
Запустіть самі

На необ adjusted екрані BKNG показав би -96.9% після того, як forward split змінив ціну однієї акції на -96%, а KLAC показав би -86.2% після того, як forward split змінив його ціну на -90%. У день набуття сплітом чинності жоден власник не втратив коштів. Ціну однієї акції було поділено, а кількість акцій помножено на той самий коефіцієнт. Стовпець «ефект спліту» виокремлює зміну ціни, яку пояснює лише спліт. Саме цю частину необ adjusted екран помилково сприймає як результативність.

Останній рядок таблиці показує зворотну ситуацію: ETHA показує 141.8% після того, як reverse split підвищив ціну однієї акції на 200%, тобто ціна зросла, а не знизилася. Будь-який список, який пропускає цей етап, одночасно публікує вигадані результати у верхній і нижній частинах рейтингу. Саме тому екран відокремлює тикери зі сплітами, а не намагається коригувати їхні ціни. До цієї таблиці так само легко може потрапити фонд, як і компанія: індексні фонди теж проводять спліти своїх паїв, і цей екран охоплює обидва типи емітентів.

Як вимірюється цей відбір

Кожен етап відбору із зазначенням кількості назв, що залишилися після нього:

ЗапитВідбір за етапами: скільки паперів проходить кожен фільтр
крок відборуназви
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 року до останньої доступної повної сесії. Обидві межі визначаються за хвилинними барами. Сесія враховується лише тоді, коли містить повну кількість барів регулярних торгів. Тому сесія, яка ще триває, ніколи не вважається завершеною.
  • Дохідність. Перше відкриття регулярної сесії року порівнюється з останнім закриттям регулярної сесії. Розрахунок виконується за хвилинними барами. Дані премаркету та after-hours не враховуються. Це цінова дохідність: дивіденди не додаються назад, тому для акцій із високою dividend yield показник тут буде дещо гіршим, ніж у розрахунку total return.
  • Мінімальна ліквідність. Середній оборот регулярних торгів має становити щонайменше $100 мільйонів за сесію протягом останніх 20 календарних днів. Враховуються лише сесії, що тривали від початку до завершення. Інакше часткову сесію можна було б поділити на повний день, занизивши оборот кожної назви. Цей єдиний фільтр скорочує вибірку з 4543 тикерів до 1082.
  • Мінімальна ціна. Акція мала відкрити рік вище $10 за акцію. Для акцій дешевше $10 невеликі зміни ціни можуть створювати великі процентні рухи.
  • Фонди з плечем та інверсні фонди виключаються за кураторським списком, який повністю наведено в SQL під кожною таблицею. Він охоплює фонди, прив’язані до індексів, а також фонди на окремі акції, що кратно відтворюють денний рух однієї компанії. Фонд із плечем може очолити список найбільших рухів без жодної корпоративної новини. Список ведеться вручну, і це його слабке місце: фонд, запущений цього місяця, буде виключено лише після того, як хтось додасть його до переліку.
  • Звичайні фонди не виключаються. Неплечовий індексний або галузевий ETF, який відповідає вимогам щодо ліквідності та ціни, ранжується тут разом з операційними компаніями й також враховується в показниках ширини ринку. Фонд є кошиком назв, які вже входять до тієї самої сукупності. Тому ці рядки слід читати як результат кошика, а не як результат однієї компанії за рік.
  • Спліти. Будь-який тикер, за яким у 2026 році набув чинності спліт або виплата дивіденду акціями, відкладається, незалежно від незначного коефіцієнта. Це консервативний підхід: він позбавляє місця в таблиці кілька справжніх лідерів, але не публікує зміну кількості акцій як дохідність. На панелі вище показано виключені назви, за якими спліт був достатньо великим, щоб створити ілюзію руху.
  • Пізні лістинги. Компанія, акції якої почали котируватися після першої сесії року, не має січневої ціни й не потрапляє до цих таблиць. Це створює реальну прогалину в році з великою кількістю нових лістингів.
  • Результат. Відранжовано 1000 назв. Перші та останні десять із них утворюють дві таблиці на цій сторінці.

Один і той самий показник у трьох часових інтервалах

Показник від початку року — це лише одна сходинка драбини, і динаміка акцій виглядає по-різному на кожному часовому відрізку. Тижневий огляд — це найбільші зростання та падіння акцій цього тижня, місячний — найбільші зміни цін на акції цього місяця, а ця сторінка охоплює період від початку року. Критерії відбору на кожній сходинці різні: ця сторінка враховує лише акції із середнім денним обсягом торгів $100 мільйонів за останній місяць, тоді як тижнева та місячна сторінки відбирають папери за загальним обсягом торгів у доларах у межах відповідного періоду. Тому акція може пройти відбір на одній сторінці й не пройти на іншій. Акція, яка очолила тижневий список після реакції ринку на звітність, за підсумками року часто опиняється в його середині. Ширший контекст динаміки від початку року наведено в матеріалі огляд ринку за перше півріччя, де розглянуто індекси, процентні ставки та сектори, а в матеріалі як працюють ETF із кредитним плечем пояснюється, чому фонди з плечем не включено до цього списку.

FAQ

Яка акція показала найкращу динаміку у 2026 році?

Серед акцій із середнім денним обсягом торгів не менше ніж $100 million, ціною на початку року понад $10, без split у 2026 році та відсутністю у списку leveraged funds, MRNA наразі є акцією з найкращою динамікою у 2026 році: від початку першої торгової сесії року вона зросла на 692.8%. На другому місці — SNDK із результатом 471%.

Які акції найбільше впали у 2026 році?

CTVA є найслабшою акцією у 2026 році серед паперів цього відбору: її результат становить -80.8%. Далі йде TTD із показником -65.7%. Повний список акцій із найбільшим падінням у 2026 році наведено в другій таблиці вище. Він оновлюється протягом року.

Як розраховується дохідність акції з початку року?

Дохідність з початку року порівнює останню ціну з ціною на початку календарного року та показує зміну у відсотках. У цьому матеріалі порівнюється ціна відкриття першої звичайної торгової сесії 2026 року із ціною закриття останньої завершеної сесії. Акції, щодо яких протягом року проводився split, вилучаються з відбору, а не перераховуються. Тому між читачем і фактичними даними ринку немає коригувального коефіцієнта.

Чи входять leveraged ETFs до списку акцій, що зросли у 2026 році?

Ні. Leveraged або inverse fund примножує денний рух індексу чи окремої акції, тому такий фонд може регулярно очолювати необроблений список лідерів руху без будь-яких корпоративних новин. Перед ранжуванням такі фонди вилучаються за назвою. Сам список наведено в SQL під кожною таблицею. Звичайні index та sector ETFs — інший випадок: вони мають відповідати тим самим мінімальним критеріям, що й будь-яка акція, і ранжуються в цьому відборі. Тому фонд може з’явитися в будь-якому з двох списків.


Кожна таблиця в цьому матеріалі є збереженим запитом із прикріпленим SQL. Розгорніть будь-яку панель, щоб перевірити критерії відбору, або побудуйте власний відбір із власними мінімальними параметрами в терміналі Strasmore.

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