Các cổ phiếu biến động mạnh nhất tháng này
Danh sách các cổ phiếu tăng và giảm mạnh nhất tháng qua dựa trên dữ liệu sàn giao dịch, bao gồm cả giá trị giao dịch tính bằng đô la Mỹ cho từng mã.
Dưới đây là danh sách các cổ phiếu biến động mạnh nhất trong tháng này, được trích xuất trực tiếp từ dữ liệu giao dịch, bao gồm 21 phiên giao dịch đã hoàn tất từ Jun 22 đến Jul 21. Danh sách này chỉ bao gồm các công ty đang hoạt động có khối lượng giao dịch ít nhất 1 tỷ USD trong giai đoạn này, đảm bảo mọi biến động trên bảng đều có dòng tiền thực tế hỗ trợ. Các quỹ đòn bẩy (leveraged) và quỹ nghịch đảo (inverse) đã được loại bỏ, và dữ liệu sẽ được cập nhật liên tục khi các phiên giao dịch mới kết thúc.
Những mã cổ phiếu tăng trưởng mạnh nhất tháng này
Bảng xếp hạng dưới đây hiển thị các mức tăng lớn nhất trong giai đoạn này. Mỗi dòng bao gồm tỷ lệ phần trăm tăng trưởng cùng với giá trị giao dịch, giúp phân biệt giữa một đợt tái định giá có khối lượng lớn và một đợt tăng với thanh khoản thấp.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 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 d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT ticker,
round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct,
round(sum(dollars) / 1e9, 1) AS month_dollar_bn
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
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','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) DESC
LIMIT 10CRNX dẫn đầu danh sách với mức tăng 133.6% trên khối lượng giao dịch 9.4 tỷ USD, vượt qua PBF với mức tăng 75.5% và MAN với mức tăng 56.8%. Một biến động lớn như vậy trong một tháng thường biểu hiện trước tiên qua relative volume cao so với average daily volume của cổ phiếu, và nó thường bắt đầu bằng một overnight gap trong một phiên thay vì tăng trưởng đều đặn trong suốt cả giai đoạn.
Những cổ phiếu giảm mạnh nhất trong tháng này
Danh sách ngược lại: những mã có mức giảm sâu nhất trong giai đoạn này, trong số các công ty có khối lượng giao dịch đạt mức tối thiểu 1 tỷ USD.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 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 d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT ticker,
round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct,
round(sum(dollars) / 1e9, 1) AS month_dollar_bn
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
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','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) ASC
LIMIT 10NVTS là mã giảm mạnh nhất với mức giảm -47.6% trên khối lượng giao dịch 5.1 tỷ USD, tiếp theo là WOLF với mức giảm -47.1%. Hãy chú ý đến cột giá trị giao dịch trên bảng này. Một đợt sụt giảm diễn ra khi khối lượng giao dịch lớn là một sự kiện khác biệt so với khi thị trường giao dịch lặng lẽ, và hai trường hợp này được phân biệt rõ ràng tại đây thay vì chỉ đưa ra giả định.
Cùng một câu hỏi trên ba khung thời gian
Một câu hỏi, ba cửa sổ quan sát. Một mã cổ phiếu có thể đứng đầu bảng này nhưng không hề xuất hiện ở hai bảng còn lại.
- những cổ phiếu giảm mạnh nhất tuần này, cùng với các mã tăng trưởng tương ứng trong năm phiên gần nhất
- Trang này, tính trong một tháng qua
- những cổ phiếu biến động mạnh nhất năm 2026, tính từ đầu năm đến nay
Ba bảng này được xây dựng riêng biệt và các tiêu chí lọc không giống nhau. Trang theo tuần tự thiết lập mức thanh khoản tối thiểu và khối lượng giao dịch tối thiểu trong cửa sổ năm phiên. Trang tính từ đầu năm đến nay lọc dựa trên khối lượng giao dịch trung bình hàng ngày thay vì tổng khối lượng giao dịch trong cả giai đoạn. Mỗi trang đều nêu rõ các quy tắc riêng trong phần phương pháp, vì vậy bạn nên đọc kỹ trước khi đối chiếu một mã từ bảng này sang bảng khác.
Một khoảng trống giá (gap) đơn lẻ có thể chiếm ưu thế trên bảng tuần nhưng sẽ biến mất khi xét theo năm. Một sự sụt giảm chậm trong tháng có thể không bao giờ xuất hiện trên bảng tuần. Đọc ba bảng này song song là cách tiết kiệm nhất để phân biệt giữa một sự kiện diễn ra trong một ngày và một xu hướng thực sự.
Diễn biến thị trường trong cùng kỳ
Biến động của một cổ phiếu sẽ khác biệt so với diễn biến chung của thị trường trong cùng một tháng. Dưới đây là bốn chỉ số chính, mỗi chỉ số được tính toán dựa trên giá mở cửa đầu tiên trong kỳ:
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 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 d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT session,
round(anyIf(cum_pct, ticker = 'SPY'), 2) AS sp500_pct,
round(anyIf(cum_pct, ticker = 'QQQ'), 2) AS nasdaq100_pct,
round(anyIf(cum_pct, ticker = 'DIA'), 2) AS dow_pct,
round(anyIf(cum_pct, ticker = 'IWM'), 2) AS russell2000_pct
FROM (
SELECT ticker,
formatDateTime(d, '%Y-%m-%d') AS session,
100 * (c / first_value(o) OVER (PARTITION BY ticker ORDER BY d) - 1) AS cum_pct
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND ticker IN ('SPY', 'QQQ', 'DIA', 'IWM')
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
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, d
)
)
GROUP BY session
ORDER BY sessionVào phiên cuối cùng, chỉ số S&P 500 đạt 0.08%, Nasdaq 100 đạt -4.46%, Dow Jones đạt 0.91% và Russell 2000 đạt -0.21%. Bốn nhóm cổ phiếu, một khoảng thời gian, bốn kết quả khác nhau. Khi so sánh danh sách các mã tăng mạnh nhất với phạm vi này: nhóm dẫn đầu đạt mức tăng trên 133.6% trong cùng kỳ. Các công ty riêng lẻ có biên độ biến động lớn hơn nhiều so với các nhóm chỉ số chứa chúng, đó là lý do tại sao danh sách các mã biến động mạnh luôn là danh sách các cổ phiếu riêng lẻ.
Kết quả của các cổ phiếu phổ biến
Những độc giả đang tìm kiếm các cổ phiếu tăng trưởng tốt nhất trong tháng này thường cũng muốn biết các mã cổ phiếu họ đang nắm giữ có kết quả ra sao. Dưới đây là danh mục gồm tám cổ phiếu vốn hóa lớn phổ biến, cùng khung thời gian và cùng cách xây dựng:
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 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 d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT ticker,
round((argMax(c, d) / argMin(o, d) - 1) * 100, 1) AS month_return_pct
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'GOOGL', 'META', 'TSLA', 'AVGO')
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
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 (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING count() >= 15
ORDER BY argMax(c, d) / argMin(o, d) DESCNhóm này biến động từ 12.5% cho META ở mức cao nhất đến -6.6% cho AVGO ở mức thấp nhất. Các cổ phiếu không biến động cùng chiều, đây là trường hợp thông thường thay vì là ngoại lệ. Việc thuộc cùng một chỉ số khiến các công ty này được nhóm lại với nhau; trong khi các mảng doanh thu của họ hầu như không liên quan đến nhau. Danh mục này là một danh sách cố định gồm tám cái tên thay vì một bảng xếp hạng, vì vậy hãy xem đây là thông tin tham khảo chứ không phải khẳng định về việc công ty nào lớn nhất.
Một tháng bình thường diễn ra như thế nào
Bảng xếp hạng thường chỉ hiển thị các trường hợp cực đoan. Dữ liệu này cho thấy xu hướng chung. Tất cả 1162 công ty vượt qua bộ lọc được phân loại theo tỷ lệ lợi nhuận trong giai đoạn quan sát:
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 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 d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
)
SELECT tup.1 AS return_bucket,
tup.3 AS stocks
FROM (
SELECT arrayJoin(arrayZip(
['down 20% or more', 'down 10% to 20%', 'down 0% to 10%',
'up 0% to 10%', 'up 10% to 20%', 'up 20% or more'],
[1, 2, 3, 4, 5, 6],
[countIf(r <= -20), countIf(r > -20 AND r <= -10), countIf(r > -10 AND r < 0),
countIf(r >= 0 AND r < 10), countIf(r >= 10 AND r < 20), countIf(r >= 20)])) AS tup
FROM (
SELECT ticker,
(argMax(c, d) / argMin(o, d) - 1) * 100 AS r
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
argMax(toFloat64(close), window_start) AS c,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
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','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
)
)
ORDER BY tup.260 số công ty trong danh sách tăng trưởng từ 20% trở lên, và 77 số công ty giảm từ 20% trở xuống. Hai nhóm có biến động gần mức 0% lần lượt chứa 315 và 426 mã cổ phiếu. Biểu đồ đó mô tả hình thái mà bảng xếp hạng các mã biến động mạnh được trích xuất ra, và mười mã dẫn đầu chính là phần rìa ngoài cùng bên phải. Khi xem các bảng trên, bạn cần lưu ý: biến động top ten hàng tháng là một trường hợp ngoại lệ về mặt cấu trúc, không bao giờ là một tháng điển hình cho một cổ phiếu thông thường.
Yếu tố đưa một cổ phiếu vào danh sách biến động hàng tháng
Một tháng là khoảng thời gian đủ dài để diễn ra nhiều sự kiện, nhưng cũng đủ ngắn để một sự kiện thường chiếm ưu thế. Các tên cổ phiếu trên danh sách này thường trùng khớp với các mốc thời gian trong lịch trình của doanh nghiệp. Kết quả kinh doanh quý là nguyên nhân phổ biến nhất: việc vượt hoặc không đạt kỳ vọng sẽ định giá lại cổ phiếu ngay trong một phiên, và phần còn lại của tháng sẽ giao dịch quanh mức giá mới đó. Việc thay đổi dự báo (guidance) cũng tạo ra tác động tương tự mà không cần đi kèm kết quả kinh doanh thực tế.
Tin tức về mua bán và sáp nhập (M&A) để lại dấu ấn rõ rệt nhất trên bảng biến động hàng tháng. Giá cổ phiếu thường tăng vọt lên mức gần với giá thỏa thuận được công bố rồi sau đó đi ngang, trong khi khối lượng giao dịch tính theo giá trị (dollars traded) vẫn duy trì ở mức rất lớn dù tỷ lệ phần trăm thay đổi đã dần ổn định. Nếu một mã nằm ở nhóm dẫn đầu về mức tăng có giá trị giao dịch cực lớn và giá ngừng biến động ở giữa chu kỳ, bạn nên kiểm tra mô hình đó trước tiên.
Các biến động theo ngành có tầm ảnh hưởng trong một tháng theo cách mà hiếm khi xảy ra trong một tuần. Sự thay đổi về lãi suất, giá dầu hoặc giá chip nhớ có thể kéo cả một nhóm ngành đi cùng nhau, đó là lý do tại sao các bảng hàng tháng thường hiển thị các nhóm doanh nghiệp tương tự nhau thay vì mười mã không liên quan. Các hoạt động của nhà phân tích, việc thêm hoặc loại bỏ khỏi chỉ số, kết quả thử nghiệm hoặc quy định pháp lý, và hiện tượng short squeeze là những yếu tố còn lại. Không có yếu tố nào trong số này có thể thấy được nếu chỉ nhìn vào tỷ lệ phần trăm, đó là lý do tại sao cột giá trị giao dịch và khung thời gian của thị trường luôn được đặt cạnh mỗi biến động ở đây.
Cách thức đo lường
Mọi ngưỡng giới hạn đều được nêu rõ tại đây thay vì để ngầm định. Một bộ lọc có các quy tắc ẩn sẽ mang tính chủ quan thay vì là dữ liệu thực tế.
- Khoảng thời gian. Sử dụng 30 ngày lịch gần nhất tính đến phiên giao dịch gần nhất đã được nạp đầy dữ liệu, bao gồm 21 phiên từ Jun 22 đến Jul 21. Có hai quy tắc để xác định một phiên có đủ điều kiện hay không. Phiên đó phải kết thúc trước ngày hiện tại ở New York, vì vậy phiên đang diễn ra sẽ không được tính. Số lượng nến trong giờ giao dịch bình thường cũng phải đạt 85% so với mức trung vị của các phiên trong đợt quét 34 ngày; quy tắc này giúp loại bỏ các ngày trước đó khi dữ liệu nến vẫn chưa được nạp đầy. Một phiên giao dịch ngắn ngày do nghỉ lễ chỉ có khoảng một nửa số lượng nến so với ngày bình thường, vì vậy quy tắc này sẽ loại bỏ phiên đó thay vì tính toán khi dữ liệu chưa đầy đủ.
- Mức lợi nhuận. Tính từ giá mở cửa của phiên giao dịch bình thường đầu tiên trong khoảng thời gian đến giá đóng cửa của phiên giao dịch bình thường cuối cùng, dựa trên các nến phút. Chỉ tính trong giờ giao dịch bình thường, do đó các dữ liệu trước và sau giờ giao dịch (premarket/after-hours) đều bị loại trừ. Đây là lợi nhuận giá (price return): cổ tức không được cộng vào.
- Ngưỡng tối thiểu. Tổng khối lượng giao dịch trong toàn bộ khoảng thời gian phải đạt ít nhất 1 tỷ USD, giá mở cửa từ 10 USD trở lên, và có dữ liệu giao dịch trong ít nhất 15 phiên của khoảng thời gian đó. Ngưỡng giá trị giao dịch tính theo tổng hàng tháng, giúp việc vượt qua ngưỡng này dễ dàng hơn so với việc đo lường cùng một con số trong một tuần duy nhất.
- Các loại bị loại trừ. Các quỹ đòn bẩy (leveraged) và quỹ nghịch đảo (inverse) bị loại trừ theo tên. Mọi ticker cũng phải có các dữ liệu cơ bản của công ty và vốn hóa thị trường trong dữ liệu tham chiếu của chúng tôi. Quy tắc thứ hai này loại bỏ các ETF, quỹ đóng (closed-end funds), quỹ hàng hóa (commodity trusts) và nhóm sản phẩm đòn bẩy cổ phiếu đơn lẻ đang tăng trưởng nhanh chóng, vốn là những đối tượng sẽ chiếm đa số trên cả hai bảng nếu không bị loại. Bảng tham chiếu này lưu trữ mỗi ticker trên một dòng thay vì là một bản chụp dữ liệu hàng ngày theo ngày, vì vậy bộ lọc sẽ quét toàn bộ bảng thay vì dựa vào một ngày duy nhất để quyết định tính hợp lệ. Bất kỳ ticker nào có chia tách cổ phiếu (stock split) thực hiện trong vòng 45 ngày qua sẽ bị loại thay vì điều chỉnh hồi tố, vì việc chia tách làm thay đổi giá mỗi cổ phiếu mà không làm thay đổi giá trị thực của khoản nắm giữ. Một mã chứng khoán bị các nguồn cung cấp dữ liệu gán lại cho hai công ty khác nhau cũng bị loại theo tên.
- Bảng mega-cap. Một rổ cố định gồm tám công ty lớn của Mỹ được nắm giữ rộng rãi, được liệt kê theo tên trong mã SQL của bảng đó. Bảng này sử dụng cùng một khoảng thời gian và cách tính lợi nhuận giống như các bảng khác, và không áp dụng bộ lọc khối lượng giao dịch bằng USD.
- Những gì không được áp dụng. Không có bộ lọc ngành, không có ngưỡng vốn hóa thị trường và không có yêu cầu về tư cách thành viên chỉ số, vì vậy một công ty nhỏ có biến động mạnh có thể xuất hiện trên bảng cùng với một công ty lớn. Thứ hạng chỉ dựa trên phần trăm thay đổi, đó là lý do tại sao cột khối lượng giao dịch bằng USD được hiển thị bên cạnh.
Một bảng sẽ hiển thị chi tiết cho tất cả các thông số: các phiên trong khoảng thời gian được quét và phạm vi các cổ phiếu mà mỗi bảng đã được quét qua.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH window_days AS (
SELECT d
FROM (
SELECT d, max(d) OVER () AS last_full
FROM (
SELECT d
FROM (
SELECT d, bars, medianExact(bars) OVER () AS typical_bars
FROM (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d, count() AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 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 d
HAVING d < toDate(toTimeZone(now(), 'America/New_York'))
)
)
WHERE bars >= 0.85 * typical_bars
)
)
WHERE d > last_full - 30
),
screened AS (
SELECT ticker
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMin(toFloat64(open), window_start) AS o,
sum(toFloat64(close) * toFloat64(volume)) AS dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= now() - INTERVAL 34 DAY
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM window_days)
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','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker IN (SELECT ticker FROM global_markets.stocks_ratios
WHERE market_cap > 0)
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 45 AND today())
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sum(dollars) >= 1000000000 AND argMin(o, d) >= 10 AND count() >= 15
)
SELECT formatDateTime(w.first_d, '%b %e') AS first_session_date,
formatDateTime(w.last_d, '%b %e') AS last_session_date,
w.n AS sessions,
(SELECT count() FROM global_markets.stocks_ratios WHERE market_cap > 0) AS companies_on_file,
(SELECT count() FROM screened) AS companies_screened
FROM (SELECT min(d) AS first_d, max(d) AS last_d, count() AS n FROM window_days) AS wBộ lọc bắt đầu từ 4122 ticker có vốn hóa thị trường trong bảng tham chiếu và kết thúc với 1162 công ty vượt qua các ngưỡng về khối lượng giao dịch, giá và số phiên. Cả hai con số này đều được lưu trữ sau mỗi lần làm mới trang, vì vậy nếu phạm vi cổ phiếu bị thu hẹp, sự thay đổi đó sẽ hiển thị trong phần chi tiết thay vì bị bỏ qua.
FAQ
Những cổ phiếu tăng giá mạnh nhất trong tháng này là gì?
Trong giai đoạn kết thúc vào Jul 21, mức tăng lớn nhất trong số các công ty có vốn hóa giao dịch trên 1 tỷ USD là CRNX ở mức 133.6% và PBF ở mức 75.5%. Danh sách đầy đủ mười cổ phiếu hàng đầu nằm ở bảng đầu tiên trên trang này và sẽ được cập nhật liên tục khi các phiên giao dịch mới kết thúc.
Những cổ phiếu giảm giá nhiều nhất trong tháng này là gì?
NVTS là cổ phiếu giảm mạnh nhất ở mức -47.6%, tiếp theo là WOLF ở mức -47.1%. Cả hai đều được đo lường trong cùng các phiên 21, với ngưỡng khối lượng giao dịch 1 tỷ USD tương tự như danh sách các cổ phiếu tăng giá.
Tỷ suất sinh lời hàng tháng của cổ phiếu được đo lường như thế nào?
Tỷ suất sinh lời hàng tháng ở đây là sự thay đổi từ giá mở cửa phiên giao dịch thông thường đầu tiên trong giai đoạn đến giá đóng cửa phiên giao dịch thông thường cuối cùng, được xây dựng từ các nến phút (minute bars). Đây là tỷ suất sinh lời theo giá (price return), vì vậy cổ tức không được cộng vào, và bất kỳ công ty nào có chia tách cổ phiếu diễn ra gần thời điểm trong giai đoạn sẽ bị loại bỏ thay vì điều chỉnh hồi tố.
Tại sao các leveraged ETF bị loại khỏi danh sách các cổ phiếu biến động mạnh?
Một quỹ leveraged hoặc inverse sẽ nhân mức biến động hàng ngày của một chỉ số hoặc một cổ phiếu riêng lẻ, vì vậy nó có thể đứng đầu danh sách biến động thuần túy trong một ngày thị trường bình thường mà không có tin tức doanh nghiệp nào đi kèm. Việc loại bỏ chúng giúp giữ cho danh sách này chỉ bao gồm các công ty đang hoạt động. Cách hoạt động của leveraged ETF giải thích về việc tái thiết lập hàng ngày (daily reset) và hiện tượng trôi dạt (drift) khi nắm giữ một quỹ trong một tháng.
Mỗi bảng trên là một truy vấn đã được lưu trữ kèm theo mã SQL. Hãy mở một bảng, thay đổi ngưỡng vốn hóa hoặc độ dài của giai đoạn, và tự mình sàng lọc dữ liệu tương tự trên terminal Strasmore.