หุ้นที่บวกและลบมากที่สุดในปี 2026
สรุปอันดับหุ้นที่มีผลตอบแทนสูงสุดและต่ำสุดในปี 2026 โดยอ้างอิงจากข้อมูลการซื้อขายจริงจากตลาดหลักทรัพย์ ไม่รวมหุ้นที่มีการแตกหุ้นและกองทุนที่มีอัตราทด
หุ้นที่มีผลตอบแทนสูงสุดในปี 2026 จนถึงปัจจุบัน นำโดย SNDK ซึ่งปรับตัวขึ้น 554.9% นับตั้งแต่ช่วงเปิดตลาดต้นปีจนถึงรอบการซื้อขายล่าสุดที่สิ้นสุดลง หน้าเว็บนี้จัดอันดับหุ้นที่มีมูลค่าเพิ่มขึ้นและลดลงมากที่สุดในปี 2026 โดยคัดเลือกเฉพาะหุ้นที่มีการซื้อขายจริง ซึ่งวัดผลจากข้อมูลการซื้อขายโดยตรงจากตลาดหลักทรัพย์แทนการใช้ข้อมูลสรุปจากผู้ให้บริการ ข้อมูลจะได้รับการอัปเดตอย่างต่อเนื่องตลอดทั้งปี ทั้งนี้ มีการคัดหุ้นที่มีการแตกหุ้น (stock splits) และกองทุนที่มีอัตราทด (leveraged funds) ออกก่อนการจัดอันดับ เพื่อป้องกันข้อผิดพลาดที่มักพบในรายการสรุปผลตอบแทนตั้งแต่ต้นปีจนถึงปัจจุบัน (year-to-date) ส่วนใหญ่
หุ้นที่มีผลตอบแทนสูงสุดในปี 2026
รายชื่อทั้งหมดด้านล่างนี้ต้องผ่านเกณฑ์สภาพคล่องก่อนได้รับการจัดอันดับ โดยมีมูลค่าการซื้อขายเฉลี่ยอย่างน้อย 100 ล้านดอลลาร์ต่อหนึ่งรอบการซื้อขายในช่วงหนึ่งเดือนที่ผ่านมา เนื่องจากเปอร์เซ็นต์ที่สูงในหุ้นที่ไม่มีการซื้อขายถือเป็นเพียงราคาเสนอซื้อขาย ไม่ใช่ผลตอบแทนที่เกิดขึ้นจริง
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 นำเป็นอันดับหนึ่งของปี ณ 554.9% โดยมี MXL ตามมาที่ 386.3% และ AEHR อยู่ในอันดับที่สามที่ 345% ส่วนอันดับที่สิบคือ AAOI ซึ่งยังคงบวกอยู่ 204.3% ส่งผลให้หุ้นทั้งหมดในตารางนี้มีผลตอบแทนสูงกว่าดัชนีตลาดโดยรวมอย่างมาก
มูลค่าดอลลาร์ในคอลัมน์ข้างผลตอบแทนแต่ละตัวให้ข้อมูลที่สำคัญไม่แพ้กัน โดย AAOI มีมูลค่าการซื้อขายเฉลี่ยประมาณ 817 ล้านดอลลาร์ต่อวัน ส่วน SNDK ซึ่งอยู่อันดับสูงสุดในตาราง มีมูลค่าการซื้อขายเฉลี่ยที่ 18348 ล้านดอลลาร์ ทุกรายชื่อในที่นี้มีมูลค่าการซื้อขายมากกว่า 100 ล้านดอลลาร์ต่อวัน และช่วงของมูลค่าที่สูงกว่าเกณฑ์นั้นมีความแตกต่างกันมาก จนทำให้เปอร์เซ็นต์ที่เท่ากันอาจมีความหมายต่างกันอย่างสิ้นเชิงในแต่ละช่วงราคา หุ้นที่มีสภาพคล่องต่ำจะปรับตัวขึ้นได้ง่ายกว่า แต่จะทำกำไรตามราคาที่แสดงบนหน้าจอได้ยากกว่าเมื่อต้องการขายออก
หุ้นที่ราคาลดลงมากที่สุดในปี 2026
เกณฑ์การวัดแบบเดียวกันในทิศทางตรงกันข้าม: หุ้นที่มีการปรับตัวลดลงสูงสุดตั้งแต่ต้นปีจนถึงปัจจุบัน (year-to-date) โดยพิจารณาจากกลุ่มที่มีสภาพคล่องต่ำกว่าระดับที่กำหนด
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
universe AS (
SELECT ticker,
sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 21 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING adv >= 100000000
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT e.ticker AS ticker,
round((e.latest_close / e.year_open - 1) * 100, 1) AS ytd_return_pct,
round(u.adv / 1e6, 0) AS avg_daily_dollar_m
FROM edges AS e
INNER JOIN universe AS u ON e.ticker = u.ticker
WHERE e.year_open >= 10
ORDER BY (e.latest_close / e.year_open) ASC
LIMIT 10หุ้นที่มีการปรับตัวลดลงสูงสุดตั้งแต่ต้นปีจนถึงปัจจุบันคือ EOSE ที่ -65.9% ตามด้วย CSGP ที่ -58.7% ส่วนอันดับที่สิบในรายการคือ TEAM ซึ่งอยู่ที่ -47.3% หุ้นหลายตัวในรายการนี้เป็นบริษัทขนาดใหญ่ที่มีผู้ถือหุ้นจำนวนมาก ไม่ใช่หุ้นขนาดเล็กที่มีความเสี่ยงสูง (speculative micro caps) ซึ่งเป็นลักษณะที่สร้างความประหลาดใจแก่ผู้คน สภาพคล่องและการวิเคราะห์จากนักวิเคราะห์ไม่สามารถเป็นฐานรองรับราคาหุ้นได้ ผู้ที่ถือหุ้นเหล่านี้ในสัดส่วนที่มากเกินไปในพอร์ตโฟลิโอจะได้รับผลกระทบจากการเปลี่ยนแปลงของราคาอย่างเต็มที่ ซึ่งสามารถวัดได้ด้วยค่าความผันผวน (volatility) และการปรับตัวลดลงของราคา (drawdown) ในหน้า ความเสี่ยงจากการถือหุ้นตัวเดียว
ตลาดมีหุ้นที่ปรับตัวขึ้นเป็นสัดส่วนเท่าใดในปี 2026
ตารางอันดับแสดงให้เห็นเพียงหุ้นที่มีการเปลี่ยนแปลงสูงสุดและต่ำสุดเท่านั้น แต่ค่าความกว้างของตลาด (Breadth) จะแสดงภาพรวมทั้งหมด โดยแสดงสัดส่วนระหว่างหุ้นที่ปรับตัวขึ้นและหุ้นที่ปรับตัวลงจากหุ้นทั้งหมดที่คัดกรอง รวมถึงกองทุนดัชนี โดยแบ่งตามขนาดของการเปลี่ยนแปลง
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
universe AS (
SELECT ticker,
sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 21 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING adv >= 100000000
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN toDate('2026-01-01') AND today())
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
),
rets AS (
SELECT e.ticker AS ticker, (e.latest_close / e.year_open - 1) * 100 AS ret
FROM edges AS e
INNER JOIN universe AS u ON e.ticker = u.ticker
WHERE e.year_open >= 10
)
SELECT bucket,
names,
round(100 * sum(names) OVER (PARTITION BY side) / sum(names) OVER (), 1) AS side_share_pct
FROM (
SELECT tup.1 AS bucket, tup.2 AS names, tup.3 AS ord, tup.4 AS side
FROM (
SELECT arrayJoin([
('Down 40%+', countIf(ret < -40), 1, 'down'),
('Down 20-40%', countIf(ret >= -40 AND ret < -20), 2, 'down'),
('Down 10-20%', countIf(ret >= -20 AND ret < -10), 3, 'down'),
('Down 0-10%', countIf(ret >= -10 AND ret < 0), 4, 'down'),
('Up 0-10%', countIf(ret >= 0 AND ret < 10), 5, 'up'),
('Up 10-25%', countIf(ret >= 10 AND ret < 25), 6, 'up'),
('Up 25-50%', countIf(ret >= 25 AND ret < 50), 7, 'up'),
('Up 50%+', countIf(ret >= 50), 8, 'up')
]) AS tup
FROM rets
)
)
ORDER BY ord61.9% ของหุ้นที่คัดกรองมีราคาเพิ่มขึ้นในปีนี้ และ 38.1% มีราคาลดลง การกระจายตัวของข้อมูลคือสิ่งที่ตารางหุ้นสิบอันดับแรกไม่ได้แสดงไว้ โดยมีหุ้น 22 ตัวอยู่ในกลุ่ม Down 40%+ ที่ด้านหนึ่ง และหุ้น 130 ตัวอยู่ในกลุ่ม Up 50%+ ที่อีกด้านหนึ่ง เมื่อเทียบกับหุ้น 146 ตัวในกลุ่ม Down 0-10% และ 159 ตัวในกลุ่ม Up 0-10% ที่อยู่ทั้งสองด้านของกลุ่มที่ราคาไม่เปลี่ยนแปลง ในปีใดๆ หุ้นส่วนใหญ่ในตลาดจะมีการเคลื่อนไหวแบบปกติ และหุ้นในตารางสองตารางด้านบนคือข้อยกเว้นที่นำมาใช้คำนวณค่าเฉลี่ย
สถานะของตลาด
ผลตอบแทนรายปีของหุ้นตัวเดียวจะมีความแตกต่างจากผลตอบแทนของตลาด โดยในช่วงเวลาเดียวกันของ ETF ดัชนีหลักทั้งสี่รายการ:
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
)
SELECT multiIf(ticker = 'SPY', 'S&P 500 (SPY)', ticker = 'QQQ', 'Nasdaq 100 (QQQ)',
ticker = 'DIA', 'Dow (DIA)', ticker = 'IWM', 'Russell 2000 (IWM)', ticker) AS label,
round((latest_close / year_open - 1) * 100, 1) AS ytd_return_pct,
(SELECT toString(min(d)) FROM complete) AS measured_from_date,
(SELECT toString(max(d)) FROM complete) AS measured_through_date
FROM edges
ORDER BY ytd_return_pct DESCทั้งกระดานซื้อขายและตารางด้านบนวัดผลในช่วงเวลาเดียวกัน คือตั้งแต่เซสชันเต็มเซสชันแรกของปี 2026 (2026-01-02) จนถึงเซสชันล่าสุดที่สิ้นสุดลง (2026-07-22) ในช่วงเวลาดังกล่าว Russell 2000 (IWM) ให้ผลตอบแทน 18.6% และ Dow (DIA) ให้ผลตอบแทน 8.2% หุ้นทุกตัวในตารางหุ้นที่ปรับตัวขึ้น (gainers) มีผลตอบแทนสูงกว่าทั้งสี่ดัชนีอย่างชัดเจน ซึ่งเป็นผลจากการคำนวณดัชนี เนื่องจากหุ้นหลายร้อยตัวถูกนำมาหาค่าเฉลี่ยรวมเป็นเส้นเดียว โดยการเคลื่อนไหวของหุ้นแต่ละตัวจะมีการหักล้างกันบางส่วน ส่วนต่างที่อยู่ใต้เส้นนั้นกว้างกว่าตัวเส้นเองมาก และ คะแนนสรุปรายกลุ่มอุตสาหกรรมสำหรับครึ่งปีแรก ได้จัดอันดับทั้งสิบเอ็ดกลุ่มอุตสาหกรรมเปรียบเทียบกัน
การแตกหุ้นที่ทำให้ผลตอบแทนตั้งแต่ต้นปีดูผิดเพี้ยน
การแตกหุ้นทำให้จำนวนหุ้นและราคาต่อหุ้นเปลี่ยนไป โดยที่มูลค่ารวมของสินทรัพย์ที่ถือครองยังคงเท่าเดิม ในช่วงระยะเวลาที่ยาวนานเช่นนี้ หลายบริษัทมีการแตกหุ้น และการคำนวณผลตอบแทนตั้งแต่ต้นปีแบบไม่ปรับปรุงค่า (unadjusted) จะอ่านค่าการเปลี่ยนแปลงของราคาต่อหุ้นว่าเป็นผลการดำเนินงาน รายชื่อด้านล่างนี้แต่ละบริษัทมีการแตกหุ้นหรือการจ่ายเงินปันผลเป็นหุ้นในปี 2026 ในสัดส่วนที่มากพอจะทำให้ราคาเปลี่ยนแปลงไปอย่างน้อยหนึ่งในห้า และทุกบริษัทมีสภาพคล่องผ่านเกณฑ์ขั้นต่ำที่กำหนดไว้ ดังนั้นทุกบริษัทจึงมีคุณสมบัติครบถ้วนตามเกณฑ์ในตารางด้านบน ก่อนที่จะถูกคัดออกด้วยตัวกรองการแตกหุ้น
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
universe AS (
SELECT ticker,
sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS adv
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 21 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING adv >= 100000000
),
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.7% บนหน้าจอแบบไม่ปรับปรุงค่า หลังจากที่ forward split ทำให้ราคาต่อหุ้นเปลี่ยนไป -96% และ CVNA จะแสดงค่า -85.1% หลังจากที่ forward split ทำให้ราคาเปลี่ยนไป -80% ผู้ถือหุ้นของทั้งสองบริษัทไม่สูญเสียมูลค่าใดๆ ในวันที่การแตกหุ้นมีผล ราคาต่อหุ้นถูกหารด้วยจำนวนเท่าเดียวกับที่จำนวนหุ้นถูกคูณด้วย คอลัมน์ผลกระทบจากการแตกหุ้น (split effect) จะแยกเฉพาะการเปลี่ยนแปลงของราคาที่เกิดจากการแตกหุ้นเพียงอย่างเดียว ซึ่งเป็นส่วนที่หน้าจอแบบไม่ปรับปรุงค่าอ่านค่าเป็นผลการดำเนินงาน
แถวสุดท้ายของตารางแสดงผลในทิศทางตรงกันข้าม: DD แสดงค่า 245.3% หลังจากที่ reverse split ทำให้ราคาต่อหุ้นเพิ่มขึ้น 200% โดยเป็นการเพิ่มราคาแทนที่จะเป็นการลดราคา รายการใดก็ตามที่ข้ามขั้นตอนนี้จะเผยแพร่ข้อมูลที่เป็นเท็จทั้งในส่วนบนและส่วนล่างของตาราง ซึ่งเป็นเหตุผลที่หน้าจอนี้แยกหุ้นที่มีการแตกหุ้นไว้ต่างหาก แทนที่จะพยายามปรับปรุงราคาของหุ้นเหล่านั้น กองทุนสามารถเข้ามาอยู่ในตารางนี้ได้เช่นเดียวกับบริษัท เนื่องจากกองทุนดัชนีมีการแตกหุ้นเช่นกัน และหน้าจอนี้ครอบคลุมทั้งสองประเภท
วิธีการวัดผลของหน้าจอนี้
แต่ละขั้นตอนของการคัดกรอง พร้อมจำนวนชื่อที่ยังคงผ่านเกณฑ์หลังจากขั้นตอนนั้น:
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH complete AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-01-01 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY d
HAVING count() >= 380
),
universe AS (
SELECT ticker
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 21 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) >= today() - 20
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM complete)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING sum(toFloat64(close) * toFloat64(volume)) / uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) >= 100000000
),
edges AS (
SELECT ticker,
argMinIf(toFloat64(open), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS year_open,
argMaxIf(toFloat64(close), toTimeZone(window_start, 'America/New_York'), toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS latest_close,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT min(d) FROM complete)) AS bars_open,
countIf(toDate(toTimeZone(window_start, 'America/New_York')) = (SELECT max(d) FROM complete)) AS bars_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ((window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-01-10 00:00:00'))
OR (window_start >= now() - INTERVAL 8 DAY))
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker
HAVING bars_open >= 100 AND bars_close >= 100
),
flagged AS (
SELECT ticker,
year_open,
ticker IN (SELECT ticker FROM universe) AS liquid,
ticker NOT IN ('SPCX','KORU','SOXL','SOXS','SOXY','TQQQ','SQQQ','QQQU','SPXL','SPXS','UPRO','SPXU','SPYU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','GDXU','GDXD','FNGU','FNGD','DUST','JNUG','JDST','NUGT','BITX','BITU','SBIT','ETHU','ETHT','NVDL','NVDS','NVD','NVDX','NVDU','NVDD','NVDQ','TSLL','TSLQ','TSLZ','TSLR','TSLT','TSLS','TSDD','AAPU','AAPD','MSFU','MSFD','GGLL','GGLS','AMZU','AMZD','METU','METD','PLTU','PLTD','SMCX','SMCZ','CONL','CONI','MSTX','MSTU','MSTZ','BRKU','AMDL','AMUU','AMDD','ELIL','ELIS','HOOX','AVGX','AVGU','TSMX','TSMZ','MULL') AS not_geared,
ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN toDate('2026-01-01') AND today()) AS no_split
FROM edges
)
SELECT tup.1 AS screen_step, tup.2 AS names
FROM (
SELECT arrayJoin([
('Traded the first and the last full session', count()),
('Averaging $100m+ a day over the past month', countIf(liquid)),
('Opened 2026 above $10 a share', countIf(liquid AND year_open >= 10)),
('Not on the excluded-fund list', countIf(liquid AND year_open >= 10 AND not_geared)),
('No split or stock dividend in 2026', countIf(liquid AND year_open >= 10 AND not_geared AND no_split))
]) AS tup
FROM flagged
)รายละเอียดวิธีการทั้งหมด:
- ช่วงเวลา (The window). เริ่มตั้งแต่เซสชันการซื้อขายเต็มรูปแบบเซสชันแรกของปี 2026 จนถึงเซสชันเต็มรูปแบบล่าสุด ข้อมูลจุดเริ่มต้นและจุดสิ้นสุดอ่านจากแท่งราคาแบบรายนาที โดยจะนับหนึ่งเซสชันก็ต่อเมื่อมีจำนวนแท่งราคาในช่วงเวลาทำการปกติครบถ้วนเท่านั้น ดังนั้นวันที่ยังไม่สิ้นสุดวันจะไม่ถูกนับว่าเสร็จสิ้นแล้ว
- ผลตอบแทน (The return). คำนวณจากราคาเปิดของเซสชันปกติครั้งแรกของปี เทียบกับราคาปิดของเซสชันปกติครั้งล่าสุด โดยคำนวณจากแท่งราคาแบบรายนาที จะไม่มีการนำราคาในช่วง Pre-market และ After-hours มาคำนวณ นี่คือผลตอบแทนด้านราคา โดยไม่ได้รวมเงินปันผลกลับเข้าไป ดังนั้นหุ้นที่มีอัตราเงินปันผลสูงอาจมีค่าต่ำกว่าตัวเลขผลตอบแทนรวม (total-return) เล็กน้อย
- เกณฑ์สภาพคล่องขั้นต่ำ (The liquidity floor). ค่าเฉลี่ยของมูลค่าการซื้อขายในช่วงเวลาทำการปกติอย่างน้อย 100 ล้านดอลลาร์ต่อเซสชัน ในช่วง 20 วันปฏิทินที่ผ่านมา โดยนับเฉพาะเซสชันที่ดำเนินการตั้งแต่เริ่มต้นจนสิ้นสุดเท่านั้น มิฉะนั้นการนับเซสชันที่ไม่สมบูรณ์จะทำให้มูลค่าการซื้อขายต่อวันถูกหารด้วยจำนวนวันเต็ม ซึ่งจะทำให้มูลค่าการซื้อขายของหุ้นทุกตัวดูต่ำกว่าความเป็นจริง เพียงแค่ตัวกรองนี้ตัวเดียวก็ทำให้จำนวนหุ้นลดลงจาก 4492 เหลือเพียง 1036
- เกณฑ์ราคาขั้นต่ำ (The price floor). หุ้นต้องมีราคาเปิดต้นปีสูงกว่า 10 ดอลลาร์ต่อหุ้น เนื่องจากหุ้นที่มีราคาต่ำกว่า 10 ดอลลาร์อาจทำให้เกิดเปอร์เซ็นต์ที่สูงเกินจริงจากการเปลี่ยนแปลงของราคาเพียงเล็กน้อย
- กองทุนที่มีเลเวอเรจและกองทุน Inverse (Leveraged and inverse funds) จะถูกคัดออกโดยใช้รายการที่จัดทำขึ้นโดยเฉพาะ ซึ่งแสดงรายละเอียดทั้งหมดไว้ใน SQL ภายใต้ทุกตาราง รายการนี้ครอบคลุมถึงกองทุนที่อ้างอิงตามดัชนีและกองทุนรายตัวที่เพิ่มทวีคูณการเคลื่อนไหวรายวันของบริษัทหนึ่งๆ กองทุนที่มีเลเวอเรจอาจติดอันดับต้นๆ ของรายการหุ้นที่มีการเคลื่อนไหวรุนแรงได้โดยไม่ต้องมีข่าวสารของบริษัท รายการนี้ใช้วิธีการคัดเลือกด้วยมือซึ่งเป็นจุดอ่อน เนื่องจากกองทุนที่เปิดตัวในเดือนนี้จะถูกคัดออกก็ต่อเมื่อมีผู้เพิ่มชื่อเข้าไปในรายการแล้วเท่านั้น
- กองทุนทั่วไปจะไม่ถูกคัดออก. ETF ดัชนีหรือกลุ่มอุตสาหกรรมที่ไม่มีเลเวอเรจ ซึ่งผ่านเกณฑ์สภาพคล่องและเกณฑ์ราคา จะถูกจัดอันดับรวมกับบริษัทที่ดำเนินงานปกติ และจะถูกนับรวมในสถิติความกว้างของตลาด (breadth counts) ด้วย เนื่องจากกองทุนคือตะกร้าของหุ้นที่ถูกนับไปแล้วในจักรวาลเดียวกัน ดังนั้นให้ตีความแถวเหล่านั้นว่าเป็นผลการดำเนินงานของตะกร้าหุ้น ไม่ใช่ผลการดำเนินงานของบริษัทเดียวในปีนั้น
- การแตกหุ้น (Splits). หุ้นใดก็ตามที่มีการแตกหุ้นหรือการจ่ายหุ้นปันผลที่มีผลในช่วงปี 2026 จะถูกแยกออก ไม่ว่าอัตราส่วนจะเป็นเท่าใดก็ตาม นี่คือการเลือกที่ระมัดระวังที่สุด แม้จะทำให้หุ้นที่มีผลงานดีจำนวนหนึ่งเสียโอกาสในการติดอันดับ แต่จะช่วยป้องกันไม่ให้การเปลี่ยนแปลงจำนวนหุ้นถูกนำมาคำนวณเป็นผลตอบแทน ตารางด้านบนแสดงรายชื่อหุ้นที่ถูกคัดออกซึ่งมีการแตกหุ้นในสัดส่วนที่มากพอที่จะทำให้ราคาดูเหมือนมีการเคลื่อนไหวอย่างผิดปกติ
- การจดทะเบียนล่าช้า (Late listings). บริษัทที่จดทะเบียนหลังจากเซสชันแรกของปีจะไม่มีราคาของเดือนมกราคม และจะไม่ปรากฏในตารางเหล่านี้ ซึ่งถือเป็นช่องว่างของข้อมูลในปีที่มีการจดทะเบียนหุ้นใหม่จำนวนมาก
- ผลลัพธ์ (The result). หุ้นจำนวน 954 ตัวจะถูกจัดอันดับ โดยสิบอันดับแรกและสิบอันดับสุดท้ายจะแสดงในตารางสองชุดบนหน้าจอนี้
คำถามเดิมในสามช่วงเวลา
ข้อมูลตั้งแต่ต้นปีจนถึงปัจจุบันเปรียบเสมือนขั้นบันไดหนึ่งขั้น ซึ่งการเคลื่อนไหวจะดูแตกต่างกันไปตามระยะเวลาที่พิจารณา มุมมองรายสัปดาห์คือ หุ้นที่มีผลตอบแทนสูงสุดและต่ำสุดในสัปดาห์นี้ มุมมองรายเดือนคือ หุ้นที่มีการเคลื่อนไหวสูงสุดในเดือนนี้ และหน้านี้คือข้อมูลรายปี เกณฑ์การคัดเลือกข้อมูลในแต่ละช่วงเวลานั้นแตกต่างกัน โดยหน้านี้คัดเลือกจากมูลค่าการซื้อขายเฉลี่ย 100 ล้านดอลลาร์ต่อวันในช่วงหนึ่งเดือนที่ผ่านมา ในขณะที่หน้าข้อมูลรายสัปดาห์และรายเดือนคัดเลือกจากมูลค่าการซื้อขายรวมภายในช่วงเวลานั้นๆ ดังนั้นหุ้นตัวหนึ่งอาจติดอันดับในรายการหนึ่งแต่ไม่ติดอีกรายการหนึ่ง หุ้นที่ติดอันดับสูงสุดในสัปดาห์จากการตอบสนองต่อผลประกอบการเพียงครั้งเดียว มักจะมีอันดับอยู่เพียงช่วงกลางเมื่อพิจารณาในภาพรวมรายปี สำหรับข้อมูลเชิงลึกของภาพรวมตลาดในปีนี้ สรุปภาพรวมตลาดครึ่งปีแรก จะมีรายละเอียดเกี่ยวกับดัชนี อัตราดอกเบี้ย และกลุ่มอุตสาหกรรม ส่วน กลไกการทำงานของ Leveraged ETF จะอธิบายว่าเหตุใดจึงมีการแยกกองทุนที่มีอัตราทดเหล่านี้ไว้ต่างหาก
คำถามที่พบบ่อย
หุ้นที่มีผลตอบแทนดีที่สุดในปี 2026 คือหุ้นตัวใด?
ในกลุ่มหุ้นที่มีมูลค่าการซื้อขายเฉลี่ยต่อวันอย่างน้อย 100 ล้านดอลลาร์ มีราคาเปิดต้นปีสูงกว่า 10 ดอลลาร์ ไม่มีการแตกหุ้นในปี 2026 และไม่อยู่ในรายชื่อกองทุน Leverage โดย SNDK เป็นหุ้นที่มีผลตอบแทนดีที่สุดในปี 2026 จนถึงปัจจุบัน โดยปรับตัวขึ้น 554.9% จากราคาเปิดในวันแรกของปี ส่วน MXL มีผลตอบแทนเป็นอันดับสองที่ 386.3%
หุ้นตัวใดที่มีราคาลดลงมากที่สุดในปี 2026?
EOSE เป็นหุ้นที่มีผลตอบแทนแย่ที่สุดในปี 2026 ตามเกณฑ์นี้ที่ -65.9% นำหน้า CSGP ที่ระดับ -58.7% รายชื่อหุ้นที่ขาดทุนมากที่สุดทั้งหมดในปี 2026 แสดงอยู่ในตารางที่สองด้านบน ซึ่งจะมีการอัปเดตข้อมูลตลอดทั้งปี
การคำนวณผลตอบแทนหุ้นแบบ Year-to-date คำนวณอย่างไร?
ผลตอบแทนแบบ Year-to-date คือการเปรียบเทียบราคาสุดท้ายกับราคา ณ ต้นปีปฏิทิน และแสดงการเปลี่ยนแปลงเป็นเปอร์เซ็นต์ ในที่นี้เป็นการวัดราคาเปิดของเซสชันปกติครั้งแรกของปี 2026 เทียบกับราคาปิดของเซสชันล่าสุดที่สิ้นสุดลง หุ้นที่มีการแตกหุ้นระหว่างปีจะถูกคัดออกแทนการใช้ตัวปรับค่า เพื่อไม่ให้มีปัจจัยการปรับค่ามาแทรกแซงข้อมูลที่ผู้อ่านได้รับ
รายชื่อหุ้นที่กำไรในปี 2026 รวม ETF ที่มี Leverage หรือไม่?
ไม่รวม กองทุน Leverage หรือกองทุน Inverse จะทวีคูณการเคลื่อนไหวรายวันของดัชนีหรือหุ้นรายตัว ดังนั้นกองทุนเหล่านี้จึงมักติดอันดับต้นๆ ในรายการหุ้นที่มีการเคลื่อนไหวสูงโดยไม่มีข่าวสารของบริษัทมารองรับ กองทุนเหล่านี้จะถูกคัดออกก่อนการจัดอันดับ และสามารถตรวจสอบรายชื่อได้ใน SQL ภายใต้แต่ละตาราง สำหรับ ETF ดัชนีและกลุ่มอุตสาหกรรมทั่วไปนั้นเป็นคนละกรณี เนื่องจากผ่านเกณฑ์เดียวกับหุ้นทั่วไปและถูกจัดอันดับที่นี่ ดังนั้นกองทุนจึงสามารถปรากฏในตารางใดก็ได้
ทุกตารางในที่นี้คือการดึงข้อมูลจาก Query ที่จัดเก็บไว้พร้อมกับ SQL แนบท้าย คุณสามารถขยายแถบข้อมูลเพื่อตรวจสอบเกณฑ์การคัดเลือก หรือสร้างเกณฑ์ใหม่ด้วยตนเองบนเทอร์มินัล Strasmore