Найбільші зростання й падіння акцій у 2026 році
Рейтинг найкращих і найгірших акцій 2026 року за реальними біржовими угодами та ліквідністю. Без stock splits і leveraged funds, з оновленням протягом року.
Найкращі за динамікою акції 2026 року наразі очолює SNDK: від першої торгової сесії року до останньої завершеної сесії їхня ціна зросла на 536.4%. На цій сторінці наведено рейтинг найбільших зростань і падінь серед акцій 2026 року, які справді торгуються. Розрахунок здійснюється за даними біржового tape, а не за зведенням постачальника даних. Рейтинг оновлюється протягом року. Перед ранжуванням із вибірки вилучаються stock splits і leveraged funds. Саме на цьому найчастіше непомітно помиляються списки з початку року.
Найбільші лідери зростання акцій у 2026 році
Кожна назва нижче спершу відповідала мінімальним вимогам щодо ліквідності, а вже потім потрапила до рейтингу: у середньому за одну завершену торгову сесію протягом останнього місяця в ній укладали угоди з акціями щонайменше на $100 мільйонів. Великий відсоток у папері, яким ніхто не торгує, — це котирування, а не результат.
| тикер | дохідність з початку року (%) | середній денний оборот ($ млн) |
|---|---|---|
| SNDK | 536.4 | 15431 |
| MRNA | 399 | 5598 |
| TWST | 305.4 | 202 |
| DELL | 301.8 | 3566 |
| TXG | 287.5 | 142 |
| AEHR | 262.8 | 208 |
| MXL | 233.4 | 114 |
| AXTI | 226.9 | 525 |
| MU | 224.8 | 20455 |
| AMLX | 183.5 | 131 |
Точний 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 10SNDK очолює список із результатом 536.4%. Далі йде MRNA із показником 399%, а третє місце посідає TWST із результатом 305.4%. Навіть папір на десятому місці, AMLX, додав 183.5%, тому весь список значно випередив будь-який широкий індекс.
Стовпчик із доларовим оборотом поруч із кожною зміною містить не менше інформації, ніж відсотковий показник. Середній денний оборот AMLX становить близько $131 мільйонів. Лідер списку, SNDK, у середньому має денний оборот $15431 мільйонів. Кожен папір у цьому списку перевищує поріг у $100 мільйонів на день, а діапазон вище цього мінімуму достатньо широкий, щоб однаковий відсотковий результат на його двох кінцях означав різні речі. Акцією з низькою ліквідністю легше рухати ціну, але важче вийти з позиції за ціною, зазначеною на екрані.
Найбільші падіння акцій у 2026 році
Той самий показник у зворотному напрямку: найбільше зниження з початку року серед акцій, що відповідають тому самому мінімальному рівню ліквідності.
| тикер | дохідність з початку року (%) | середній денний оборот ($ млн) |
|---|---|---|
| TTD | -60.5 | 192 |
| WING | -54.4 | 103 |
| APP | -54.1 | 1257 |
| CSGP | -52.8 | 144 |
| FLUT | -52.7 | 140 |
| STLA | -51.5 | 105 |
| BSX | -51 | 763 |
| KLAR | -50.4 | 145 |
| RBLX | -49.1 | 303 |
| JOBY | -48.8 | 153 |
Точний 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Найбільше зниження з початку року зафіксувала TTD — -60.5%, далі йде WING — -54.4%. Десяте місце в списку посідає JOBY зі зниженням на -48.8%. Деякі компанії в цьому списку є великими й широко представленими в портфелях інвесторів, а не спекулятивними micro caps. Саме це часто дивує в списках найбільших падінь. Ліквідність і покриття з боку аналітиків не встановлюють нижню межу для ціни акції. Інвестор, у якого одна з цих акцій становила надмірно велику частку портфеля, зазнав усього падіння. Ризик такої концентрації вимірюється показниками волатильності та drawdown на сторінці ризик володіння однією акцією.
Яка частина ринку зросла у 2026 році
Рейтинг показує лише два крайні сегменти. Ширина ринку показує його основну масу: як увесь відібраний набір, включно з індексними фондами, розподіляється між активами, що зростають і знижуються, залежно від масштабу руху.
| кошик | назви | частка сторони (%) |
|---|---|---|
| Down 40%+ | 18 | 35.5 |
| Down 20-40% | 69 | 35.5 |
| Down 10-20% | 78 | 35.5 |
| Down 0-10% | 162 | 35.5 |
| Up 0-10% | 152 | 64.5 |
| Up 10-25% | 198 | 64.5 |
| Up 25-50% | 142 | 64.5 |
| Up 50%+ | 103 | 64.5 |
Точний 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 ord64.5% відібраних активів зросли з початку року, а 35.5% знизилися. Розподіл показує те, що приховує таблиця десяти лідерів. 18 активів належать до категорії Down 40%+ на одному кінці діапазону, а 103 — до категорії Up 50%+ на іншому; по різні боки від незмінного рівня перебувають відповідно 162 у категорії Down 0-10% та 152 у категорії Up 0-10%. У будь-якому році більша частина ринку демонструє звичайну динаміку, а активи у двох наведених вище таблицях є винятками, з яких формуються середні показники.
Позиція самого ринку
Результат окремої акції має інший вигляд у порівнянні з результатом самого ринку. Показники чотирьох основних індексних ETF за точно такий самий період:
| мітка | дохідність з початку року (%) | дата початку вимірювання | дата завершення вимірювання |
|---|---|---|---|
| Russell 2000 (IWM) | 19.2 | 2026-01-02 | 2026-09-03 |
| Nasdaq 100 (QQQ) | 15.7 | 2026-01-02 | 2026-09-03 |
| S&P 500 (SPY) | 12.7 | 2026-01-02 | 2026-09-03 |
| Dow (DIA) | 11.4 | 2026-01-02 | 2026-09-03 |
Точний 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-09-03). За цей період Russell 2000 (IWM) зріс на 19.2%, а Dow (DIA) — на 11.4%. Усі компанії з таблиці лідерів зростання значно випередили всі чотири індекси. Це відображає сам принцип розрахунку індексу: сотні компонентів усереднюються в один показник, і окремі рухи частково компенсують один одного. Діапазон змін окремих акцій був набагато ширшим, ніж рух самого індексу, а секторальний огляд за перше півріччя ранжує всі одинадцять секторів між собою.
Фондовий спліт, який імітує зміну від початку року
Спліт змінює кількість акцій і ціну однієї акції, але не змінює вартість позиції. За такий тривалий період багато компаній проводять спліти, а розрахунок зміни від початку року без коригування сприймає зміну ціни однієї акції як результативність. Кожна з наведених нижче компаній у 2026 році провела спліт або виплатила stock dividend, достатній для зміни ціни щонайменше на п’яту частину. Усі вони також відповідали однаковому мінімальному порогу ліквідності, тому до застосування фільтра сплітів могли потрапити до наведених вище списків.
| тикер | дохідність з початку року без коригування (%) | вплив дроблення на ціну (%) | тип дроблення | дата дроблення |
|---|---|---|---|---|
| BKNG | -96.4 | -96 | forward split | 2026-04-06 |
| KLAC | -86.3 | -90 | forward split | 2026-06-12 |
| VGT | -84.1 | -87.5 | forward split | 2026-04-21 |
| CVNA | -82.6 | -80 | forward split | 2026-05-08 |
| VUG | -81.9 | -83.3 | forward split | 2026-04-21 |
| HDV | -75.6 | -80 | forward split | 2026-04-29 |
| IWF | -74.1 | -75 | forward split | 2026-04-29 |
| VO | -71.7 | -75 | forward split | 2026-04-21 |
| CRWD | -54.6 | -75 | stock dividend | 2026-07-02 |
| MNST | -42.5 | -50 | stock dividend | 2026-08-11 |
| APH | -40.1 | -50 | stock dividend | 2026-09-03 |
| MVLL | 4.3 | -66.7 | forward split | 2026-06-26 |
| HON | 6.1 | 100 | reverse split | 2026-06-29 |
| DD | 224.3 | 200 | reverse split | 2026-06-24 |
Точний 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 ASCBKNG показав би -96.4% на екрані без коригування після того, як forward split змінив ціну однієї акції на -96%, а KLAC показав би -86.3% після того, як forward split змінив ціну на -90%. Власники жодної з цих позицій не втратили коштів у день набуття сплітом чинності. Ціну однієї акції поділили, а кількість акцій помножили на той самий коефіцієнт. Колонка «ефект спліту» виокремлює зміну ціни, зумовлену лише сплітом. Саме її екран без коригування сприймає як результативність.
Останній рядок таблиці показує протилежний випадок: DD демонструє 224.3% після того, як reverse split підвищив ціну однієї акції на 200%, тобто підняв ціну, а не знизив її. Будь-який список, який пропускає цей етап, одночасно публікує вигадані результати і серед лідерів, і серед аутсайдерів. Саме тому екран відокремлює тикери, за якими проводилися спліти, а не намагається вручну коригувати їхні ціни. До цієї таблиці так само легко може потрапити фонд, як і компанія: індексні фонди також проводять спліти своїх паїв, і цей екран охоплює обидва типи інструментів.
Як вимірюється цей відбір
Кожен етап відбору із зазначенням кількості назв, що залишилися після нього:
| крок відбору | назви |
|---|---|
| Traded the first and the last full session | 4471 |
| Averaging $100m+ a day over the past month | 1000 |
| Opened 2026 above $10 a share | 970 |
| Not on the excluded-fund list | 938 |
| No split or stock dividend in 2026 | 922 |
Точний 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 року до останньої доступної повної сесії. Обидві крайні дати визначаються за хвилинними барами. Сесія враховується лише за наявності повної кількості барів регулярної торгової сесії. Тому сесія, яка ще триває, ніколи не вважається завершеною.
- Дохідність. Перша ціна відкриття регулярної сесії року порівнюється з останньою ціною закриття регулярної сесії. Розрахунок виконується за хвилинними барами. Котирування до відкриття та після закриття ринку не враховуються. Це цінова дохідність: дивіденди не додаються, тому для акцій із високою dividend yield показник буде дещо нижчим, ніж відповідна total return.
- Мінімальний рівень ліквідності. Середній оборот у регулярні торгові години має становити щонайменше $100 мільйонів за сесію протягом останніх 20 календарних днів. Враховуються лише сесії, що тривали від початку до кінця. Інакше частина денного обороту ділилася б на повний день, що занижувало б оборот кожної назви. Цей єдиний фільтр скорочує вибірку з 4471 тикерів до 1000.
- Мінімальна ціна. Акція мала відкрити рік вище за $10 за акцію. Акції дешевші за $10 можуть показувати великі відсоткові зміни через невеликі кроки ціни.
- Фонди з кредитним плечем та інверсні фонди виключаються за допомогою кураторського списку, який повністю наведено в SQL під кожною таблицею. До нього входять фонди, прив’язані до індексів, а також фонди на окремі акції, що кратно відтворюють денний рух однієї компанії. Фонд із кредитним плечем може очолити список лідерів за ціновою зміною без жодної корпоративної новини. Список підтримується вручну, і це його слабке місце: фонд, запущений цього місяця, буде виключений лише після того, як його хтось додасть.
- Звичайні фонди не виключаються. Неплечовий індексний або секторний ETF, який відповідає мінімальним вимогам щодо ліквідності та ціни, ранжується тут разом з операційними компаніями й також враховується у breadth-показниках. Фонд є кошиком назв, які вже входять до тієї самої сукупності. Тому ці рядки слід трактувати як результат кошика, а не як результат однієї компанії за рік.
- Спліти. Будь-який тикер зі сплітом або stock dividend, що набрав чинності протягом 2026 року, відкладається в окрему категорію незалежно від розміру коефіцієнта. Це консервативний підхід: він позбавляє місця в таблиці кількох справжніх лідерів, зате не публікує зміну кількості акцій як дохідність. На панелі вище показано виключені назви, для яких спліт був достатньо великим, щоб штучно створити рух.
- Пізні лістинги. Компанія, що вийшла на біржу після першої сесії року, не має січневої ціни й відсутня в цих таблицях. Це реальна прогалина в році з великою кількістю нових лістингів.
- Результат. Ранжуються 922 назв. Перші та останні десять із них формують дві таблиці на цій сторінці.
Один і той самий показник у трьох часових інтервалах
Показник з початку року — лише одна сходинка шкали, і динаміка акції має різний вигляд на кожному часовому відрізку. Тижневий огляд — це найбільші зростання та падіння акцій цього тижня, місячний — акції з найбільшими змінами цього місяця, а ця сторінка охоплює період від початку року. Критерії відбору на різних сходинках відрізняються: ця сторінка враховує лише акції із середнім денним оборотом $100 мільйонів за останній місяць, тоді як тижнева та місячна сторінки використовують загальний обсяг торгів у доларах у межах відповідних періодів. Тому акція може пройти відбір на одній сторінці, але не пройти його на іншій. Акція, яка після публікації квартального звіту очолила тижневий список, за підсумками року часто опиняється в його середині. Ширший огляд динаміки ринку від початку року наведено в матеріалі огляд ринку за перше півріччя, де розглянуто індекси, ставки та сектори, а матеріал як працюють leveraged ETFs пояснює, чому фонди з кредитним плечем не включено до цього списку.
FAQ
Яка акція показала найкращу динаміку у 2026 році?
Серед паперів із середнім денним обсягом торгів не менш як $100 мільйонів, ціною на початку року понад $10, без split у 2026 році та відсутністю у списку leveraged-фондів SNDK наразі є акцією з найкращою динамікою у 2026 році: її ціна зросла на 536.4% від першої торгової сесії року. MRNA посідає друге місце з результатом 399%.
Які акції найбільше впали у 2026 році?
TTD має найгіршу динаміку серед акцій у цьому переліку: -60.5%. Далі йде WING із результатом -54.4%. Повний список акцій із найбільшим падінням у 2026 році наведено в другій таблиці вище; він оновлюється протягом року.
Як розраховується дохідність акції з початку року?
Дохідність з початку року порівнює останню ціну з ціною на початку календарного року та виражає зміну у відсотках. У цьому матеріалі йдеться про порівняння ціни відкриття першої regular session 2026 року із ціною закриття останньої завершеної сесії. Акції, за якими протягом року проводили split, вилучаються з розрахунку, а не коригуються. Тому між читачем і фактичними котируваннями немає коригувального коефіцієнта.
Чи включені leveraged ETFs до списку лідерів зростання у 2026 році?
Ні. Leveraged або inverse fund примножує денну зміну індексу чи окремої акції, тому такий фонд може регулярно очолювати список найбільших рухів без будь-яких корпоративних новин. Такі фонди вилучаються за назвою до ранжування, а сам список доступний у SQL під кожною таблицею. Звичайні індексні та галузеві ETFs є окремою категорією: вони мають відповідати тим самим мінімальним критеріям, що й будь-яка акція, і ранжуються в цьому списку. Тому фонд може з’явитися в будь-якій із двох таблиць.
Кожна таблиця в цьому матеріалі є збереженим запитом із прикріпленим SQL. Розгорніть будь-яку панель, щоб перевірити критерії відбору, або перебудуйте запит із власними мінімальними параметрами на терміналі Strasmore.