Các cổ phiếu có khả năng short squeeze tuần này
Danh sách cổ phiếu tiềm năng short squeeze được sàng lọc dựa trên số lượng shares short và xu hướng tăng giá để bạn theo dõi biến động thị trường.
Các cổ phiếu có khả năng xảy ra hiện tượng short squeeze được sàng lọc dựa trên hai cơ chế: vị thế bán khống lớn so với khối lượng giao dịch của cổ phiếu, và giá đang trong xu hướng tăng. Trang này thực hiện sàng lọc dựa trên dữ liệu vị thế bán khống mới nhất từ sàn giao dịch, chốt vào ngày Jun 30, 2026, và đo lường biến động giá trong năm phiên kết thúc vào ngày Jul 21, 2026. Đây là những cơ chế tương tự như các đợt squeeze trong quá khứ. Nội dung này không phải là dự báo, và hầu hết các cổ phiếu bị bán khống nhiều nhất đều không bao giờ xảy ra squeeze.
Hãy lưu ý về mốc thời gian trước khi xem tên cổ phiếu. Theo quy định, dữ liệu bán khống trên trang này đã cũ vài tuần, không phải do lỗi dữ liệu: các công ty môi giới báo cáo vị thế bán khống của họ cho FINRA hai lần mỗi tháng vào các ngày chốt lệnh đã định sẵn, và tệp dữ liệu tổng hợp sẽ được công khai sau đó khoảng tám ngày làm việc. Dữ liệu mới nhất hiện có là từ ngày Jun 30, 2026, tức là cách đây 23 ngày, trong khi biến động giá được tính đến ngày Jul 21, 2026. Mọi biến động của phe bán khống trong khoảng thời gian đó đều không thể hiển thị trên bất kỳ bộ lọc nào, kể cả bộ lọc này. Tại sao dữ liệu short interest luôn chậm hai tuần giải thích chi tiết từng bước của chu kỳ báo cáo.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH prints AS (
SELECT DISTINCT settlement_date AS d
FROM global_markets.stocks_short_interest
ORDER BY d DESC
LIMIT 2
),
loaded AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= now() - INTERVAL 20 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 session
HAVING count() >= 380
),
legs AS (
SELECT arrayJoin([
('Short interest, previous settlement', (SELECT min(d) FROM prints)),
('Short interest, latest settlement', (SELECT max(d) FROM prints)),
('Price tape, last fully loaded session', (SELECT max(session) FROM loaded))]) AS row
)
SELECT formatDateTime(row.2, '%b %e, %Y') AS as_of_date,
row.1 AS leg,
dateDiff('day', row.2, today()) AS age_days
FROM legsHai mốc chốt dữ liệu nằm cách đây 38 và 23 ngày, tương ứng với chu kỳ kiểm đếm hai lần mỗi tháng cộng với độ trễ tổng hợp. Dữ liệu giá chậm hơn 2 ngày, và độ trễ này là do quá trình nạp dữ liệu vào kho lưu trữ chứ không phải do quy định. Cả hai loại độ trễ đều có giới hạn, vì vậy nếu nguồn dữ liệu bị đình trệ, trang này sẽ giữ nguyên dữ liệu cũ thay vì đăng lại một ngày cũ dưới một tiêu đề mới.
Danh sách các cổ phiếu short squeeze: bộ lọc hiện tại
Tất cả các mã dưới đây đều vượt qua cùng một bộ lọc: khối lượng giao dịch trung bình hàng ngày đạt năm triệu cổ phiếu, số ngày để cover từ năm ngày trở lên, và có biến động tăng trong năm phiên kết thúc vào ngày Jul 21, 2026. Các mã 36 đã vượt qua tất cả các tiêu chí đó, và những mã 12 bị bán khống nhiều nhất được hiển thị ở đây. Days to cover là số cổ phiếu bán khống chia cho khối lượng giao dịch trung bình hàng ngày: cho biết cần bao nhiêu ngày giao dịch toàn bộ khối lượng của cổ phiếu đó để phe bán khống có thể mua lại vị thế của mình.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH latest AS (
SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest
),
sessions AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= now() - INTERVAL 20 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 session
HAVING count() >= 380
ORDER BY session DESC
LIMIT 6
),
crowded AS (
SELECT ticker, days_to_cover, short_interest
FROM global_markets.stocks_short_interest
WHERE settlement_date = (SELECT d FROM latest)
AND avg_daily_volume >= 5000000
AND days_to_cover >= 5
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 NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 60 AND today())
),
tape AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session,
argMax(close, window_start) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM crowded)
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT session FROM sessions)
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, session
),
moves AS (
SELECT ticker,
round((argMax(rth_close, session) / argMin(rth_close, session) - 1) * 100, 1) AS return_5d_pct
FROM tape
GROUP BY ticker
HAVING count() = 6 AND return_5d_pct > 0
)
SELECT c.ticker AS ticker,
round(c.days_to_cover, 1) AS days_to_cover,
round(c.short_interest / 1e6, 1) AS shares_short_m,
m.return_5d_pct AS return_5d_pct
FROM crowded c
INNER JOIN moves m ON m.ticker = c.ticker
ORDER BY c.days_to_cover DESC, c.ticker
LIMIT 12Mã bị bán khống nhiều nhất ở đây, MPT, có 16.9 ngày để cover trên tổng số 138.1 triệu cổ phiếu bán khống, và đã tăng 5.4% trong năm phiên kết thúc vào ngày Jul 21, 2026. Dòng cuối cùng hiển thị là 6.5 ngày để cover, đây là điểm dừng của danh sách hiển thị chứ không phải giới hạn dưới của bộ lọc. Thứ hạng được sắp xếp theo mức độ tập trung lệnh bán khống thay vì theo quy mô, do đó một vị thế trung bình trên một cổ phiếu có thanh khoản thấp sẽ xếp trên một vị thế lớn hơn nhiều trên một cổ phiếu có thanh khoản cao. Để xem xếp hạng theo quy mô, the most shorted stocks right now hiển thị cả hai bảng xếp hạng cạnh nhau.
Tiêu chí về giá tăng có lý do kỹ thuật. Một đợt squeeze là hoạt động mua cưỡng bức khi những người bán khống phải đóng vị thế, và việc đóng vị thế bán khống nghĩa là phải mua lại cổ phiếu, điều này chỉ bắt đầu xảy ra khi giá biến động ngược chiều với vị thế đó. How a short squeeze works, thông qua các dữ liệu lịch sử của GameStop năm 2021, cho thấy trình tự này qua các con số.
Các quy tắc và những gì mỗi quy tắc loại bỏ
Một bộ lọc là một quan điểm đi kèm với các con số, vì vậy đây là nơi các tiêu chí được áp dụng.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH latest AS (
SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest
),
sessions AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= now() - INTERVAL 20 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 session
HAVING count() >= 380
ORDER BY session DESC
LIMIT 6
),
reported AS (
SELECT ticker, days_to_cover, avg_daily_volume
FROM global_markets.stocks_short_interest
WHERE settlement_date = (SELECT d FROM latest)
),
liquid AS (
SELECT ticker, days_to_cover
FROM reported
WHERE avg_daily_volume >= 5000000
AND days_to_cover IS NOT NULL
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 NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 60 AND today())
),
crowded AS (
SELECT ticker FROM liquid WHERE days_to_cover >= 5
),
tape AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session,
argMax(close, window_start) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM crowded)
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT session FROM sessions)
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, session
),
rising AS (
SELECT ticker,
round((argMax(rth_close, session) / argMin(rth_close, session) - 1) * 100, 1) AS return_5d_pct
FROM tape
GROUP BY ticker
HAVING count() = 6 AND return_5d_pct > 0
),
tally AS (
SELECT (SELECT count() FROM reported) AS all_names,
(SELECT count() FROM liquid) AS liquid_names,
(SELECT count() FROM crowded) AS crowded_names,
(SELECT count() FROM rising) AS rising_names
)
SELECT step.1 AS label, step.2 AS names
FROM (
SELECT arrayJoin([
('Every name in the settlement file', all_names),
('Liquid: five million shares a day, no leveraged funds', liquid_names),
('Crowded: five or more days to cover', crowded_names),
('Rising: a positive move over the price window', rising_names)]) AS step
FROM tally
)Tệp Jun 30, 2026 bao gồm 22207 chứng khoán. Ngưỡng thanh khoản và danh sách loại trừ để lại 885, ngưỡng tập trung (crowding threshold) giảm con số đó xuống còn 96, và rào cản giá tăng (rising-price gate) để lại 36. Mỗi ngưỡng là một sự lựa chọn, và một lựa chọn khác nhau sẽ tạo ra một danh sách khác nhau. Đó là lý do tại sao các quy tắc được trình bày rõ ràng thay vì chỉ nằm ở phần chú thích.
Tỷ lệ bán khống của từng công ty là bao nhiêu
Chỉ số mà hầu hết mọi người tìm kiếm là tỷ lệ bán khống trên lượng cổ phiếu lưu hành tự do (float), nhưng dữ liệu này không bao gồm chỉ số đó. Báo cáo từ sàn giao dịch chỉ cung cấp số lượng cổ phiếu bán khống và khối lượng giao dịch trung bình hàng ngày, không có bất kỳ loại tổng số lượng cổ phiếu nào khác. Những gì có thể tính toán được là vị thế bán khống so với tổng số cổ phiếu đang lưu hành, bằng cách lấy giá trị vốn hóa của mỗi công ty chia cho giá cổ phiếu.
KSS dẫn đầu danh sách với tỷ lệ bán khống chiếm 26.3% tổng số cổ phiếu đang lưu hành: 29.9 triệu cổ phiếu trên tổng số 113 triệu cổ phiếu đang tồn tại. 10 hàng được hiển thị là những giá trị lớn nhất trong số các mã được sàng lọc có công bố tổng số cổ phiếu, và giá trị cuối cùng vẫn là 15.5%. Hãy xem cột đó là mức sàn và đừng bao giờ coi đó là số lượng float. Float chỉ tính các cổ phiếu thực sự được chuyển nhượng, loại bỏ cổ phần của người nội bộ và các khoản nắm giữ bị hạn chế khác. Float là mẫu số nhỏ hơn, vì vậy tỷ lệ bán khống thực tế trên float sẽ cao hơn tất cả các con số được hiển thị. Mức chênh lệch cao hơn bao nhiêu tùy thuộc vào cơ cấu sở hữu của từng công ty, điều mà kho dữ liệu này không lưu trữ.
Xu hướng bán khống đang gia tăng hay giảm dần?
Một báo cáo chỉ là một lát cắt tại một thời điểm. Dữ liệu này đã được lưu trữ nhiều năm, vì vậy câu hỏi chung của thị trường có thể được giải đáp bằng dữ liệu.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH dates AS (
SELECT DISTINCT settlement_date AS d
FROM global_markets.stocks_short_interest
ORDER BY d DESC
LIMIT 12
)
SELECT toString(settlement_date) AS settlement_date,
countIf(days_to_cover >= 5) AS names_5plus_dtc,
countIf(days_to_cover >= 10) AS names_10plus_dtc,
round(quantileExact(0.5)(days_to_cover), 2) AS median_dtc_liquid
FROM global_markets.stocks_short_interest
WHERE settlement_date IN (SELECT d FROM dates)
AND avg_daily_volume >= 5000000
AND days_to_cover IS NOT NULL
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')
GROUP BY settlement_date
ORDER BY settlement_dateDựa trên 12 các kỳ thanh toán được hiển thị, số lượng cổ phiếu có thanh khoản với số ngày để cover (days to cover) từ năm ngày trở lên đã thay đổi từ 58 xuống 96. Phần hiếm hoi ở cuối phân phối vẫn rất mỏng: 5 cổ phiếu có số ngày để cover từ mười ngày trở lên trong báo cáo mới nhất. Giá trị trung vị của các cổ phiếu có thanh khoản là 1.87 ngày, điều này khiến ngưỡng năm ngày trở nên có ý nghĩa thay vì chỉ là một con số ngẫu nhiên. Trang Các cổ phiếu có số ngày để cover cao nhất theo dõi riêng phần cực hạn đó.
Diễn biến thường xảy ra tiếp theo
Các biểu đồ như thế này rất dễ xây dựng nhưng cũng dễ bị đọc sai, vì vậy dưới đây là cùng một biểu đồ được chạy ngược lại, với cùng một khoảng lệch so với tệp dữ liệu. Đối với mỗi lệnh thanh toán (settlement) trong năm qua, hãy lấy những mã đã vượt qua ngưỡng tập trung (crowding gate) tại thời điểm đó và đang tăng trong sáu phiên kết thúc sau hai mươi ngày lịch, tức là thời điểm hiện tại của trang này, sau đó đo lường biến động của từng mã trong 30 ngày lịch tiếp theo.
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH screened AS (
SELECT settlement_date, ticker
FROM global_markets.stocks_short_interest
WHERE settlement_date >= today() - 400
AND settlement_date <= today() - 55
AND avg_daily_volume >= 5000000
AND days_to_cover >= 5
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')
),
split_hits AS (
SELECT s.settlement_date AS sd, s.ticker AS tkr
FROM screened s
INNER JOIN global_markets.stocks_splits sp ON sp.ticker = s.ticker
WHERE sp.execution_date > s.settlement_date + 11
AND sp.execution_date <= s.settlement_date + 50
),
daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session,
argMax(close, window_start) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT DISTINCT ticker FROM screened)
AND window_start >= now() - INTERVAL 400 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, session
),
paired AS (
SELECT s.settlement_date AS sd,
s.ticker AS tkr,
(argMaxIf(d.rth_close, d.session, d.session <= s.settlement_date + 20)
/ argMinIf(d.rth_close, d.session, d.session <= s.settlement_date + 20) - 1) * 100 AS prior_pct,
(argMaxIf(d.rth_close, d.session, d.session >= s.settlement_date + 20)
/ argMinIf(d.rth_close, d.session, d.session >= s.settlement_date + 20) - 1) * 100 AS next_pct
FROM screened s
INNER JOIN daily d ON d.ticker = s.ticker
WHERE d.session > s.settlement_date + 11
AND d.session <= s.settlement_date + 50
GROUP BY sd, tkr
HAVING countIf(d.session <= s.settlement_date + 20) >= 4
AND countIf(d.session >= s.settlement_date + 20) >= 15
),
outcomes AS (
SELECT multiIf(next_pct < -20, 1,
next_pct < -10, 2,
next_pct < 0, 3,
next_pct < 10, 4,
next_pct < 20, 5, 6) AS bucket,
multiIf(next_pct < -20, 'Fell more than 20%',
next_pct < -10, 'Fell 10% to 20%',
next_pct < 0, 'Fell 0% to 10%',
next_pct < 10, 'Rose 0% to 10%',
next_pct < 20, 'Rose 10% to 20%', 'Rose more than 20%') AS move_over_30_days
FROM paired
WHERE prior_pct > 0
AND (sd, tkr) NOT IN (SELECT sd, tkr FROM split_hits)
),
tallied AS (
SELECT bucket, move_over_30_days, count() AS name_count
FROM outcomes
GROUP BY bucket, move_over_30_days
)
SELECT move_over_30_days,
name_count,
round(100.0 * sum(name_count) OVER (ORDER BY bucket) / sum(name_count) OVER (), 1) AS cumulative_share_pct
FROM tallied
ORDER BY bucket51.7% các quan sát về mã và lệnh thanh toán đó đã giao dịch thấp hơn sau 30 ngày. Kết quả này gần tương đương với xác suất tung đồng xu, và đây chính là tiêu đề trung thực của trang này: những người bán khống (short sellers) thường xuyên đúng, và trạng thái "tập trung cộng với đang tăng" mô tả một thiết lập hơn là một lợi thế giao dịch. Các phần đuôi là nơi hiện tượng squeeze (bị ép mua) sẽ xuất hiện, và cả hai phần đuôi đều rất mỏng. 68 quan sát giảm hơn một phần năm; 73 tăng hơn một phần năm, đây là nhóm mà một đợt squeeze thực sự sẽ rơi vào. 87.8% mẫu nghiên cứu không bao giờ đạt tới mức đó.
Hãy xem bảng này như một phân phối, không phải là một kết quả giao dịch. Nó bỏ qua chi phí, phí mượn chứng khoán và quy mô vị thế, đồng thời đánh trọng số cho mọi mã được đánh dấu là như nhau. Cả hai giai đoạn đều được neo vào thời điểm hai mươi ngày lịch sau mỗi ngày thanh toán, cùng một khoảng lệch mà trang này sử dụng, vì vậy mọi mã được đánh dấu đều dựa trên mức giá mà người đọc có thể đã thấy. Một năm dữ liệu thanh toán là một mẫu nghiên cứu ngắn.
Cách thức đo lường
Mọi quy tắc và các trường hợp loại trừ đằng sau các con số trên.
- Dữ liệu short-interest được báo cáo bởi sàn giao dịch và được cập nhật hai lần mỗi tháng. Dữ liệu được sử dụng ở đây đã chốt vào Jun 30, 2026, 23 ngày trước. Tại Mỹ, không có con số short interest được công bố hàng ngày, chỉ có các ước tính từ nhà cung cấp dựa trên dữ liệu cho vay chứng khoán.
- Ngưỡng thanh khoản: trung bình năm triệu cổ phiếu khối lượng giao dịch hàng ngày, theo báo cáo trong cùng tệp dữ liệu này. Nếu không có ngưỡng này, danh sách sẽ tràn ngập các cổ phiếu vốn hóa siêu nhỏ (microcaps), nơi chỉ số days-to-cover cực lớn thực chất chỉ là hệ quả của khối lượng giao dịch gần bằng không.
- Ngưỡng đám đông (Crowding threshold): năm ngày trở lên để cover, cao hơn nhiều so với mức trung vị thanh khoản được hiển thị ở trên.
- Động lực tăng trưởng (Momentum leg): sự thay đổi giữa giá đóng cửa của sáu phiên giao dịch thông thường đầy đủ gần nhất, tương ứng với tỷ suất sinh lời của năm phiên. Một phiên chỉ được đưa vào cửa sổ tính toán khi dữ liệu thị trường đã có đầy đủ các thanh minute của cả một ngày giao dịch. Một phiên đang trong quá trình cập nhật sẽ được giữ lại thay vì tính toán khi chưa hoàn thiện, do đó cửa sổ tính toán có thể chậm hơn một phiên so với lịch thực tế ngay cả khi phiên đó đã đóng cửa. Giá được sử dụng là giá đóng cửa của phiên giao dịch thông thường.
- Cả hai mốc thời gian đều có giới hạn. Bảng điều khiển ở trên cùng lưu trữ tuổi của mỗi dữ liệu đầu vào theo ngày, và các giá trị này có giới hạn kiểm soát. Một dữ liệu chốt phiên cũ hơn một tháng, hoặc dữ liệu giá chậm hơn mức trễ tiếp nhận thông thường, sẽ khiến trang này được giữ lại để xem xét thay vì xuất bản một ngày cũ dưới một tiêu đề mới.
- Các trường hợp loại trừ. Các quỹ ETF đòn bẩy và ETF nghịch đảo (inverse ETF) bị loại khỏi mọi bảng điều khiển (vì short interest của chúng phần lớn là hệ quả của việc phòng hộ). Ngoài ra, một mã chứng khoán không rõ ràng do các nguồn dữ liệu nhà cung cấp dùng chung cho hai công ty cũng bị loại bỏ. Các bảng đo lường biến động giá cũng loại bỏ một mã có sự kiện chia tách cổ phiếu nằm trong cửa sổ đo lường, vì việc chia tách sẽ tạo ra biến động giá giả. Trong phần backtest, kiểm thử được thực hiện theo từng kỳ chốt phiên, nên việc chia tách trong một tháng không làm mất dữ liệu quan sát của mã đó trong các tháng khác.
- Các quỹ nằm trong tệp này cùng với các công ty hoạt động. Một ETF trái phiếu hoặc ETF chỉ số có thể nắm giữ vị thế short lớn phát sinh từ cơ chế tạo mới và mua lại (creation-and-redemption) thay vì từ việc có ai đó đặt cược ngược lại mã đó.
- Không có dữ liệu về lượng cổ phiếu lưu hành tự do (float) và tổng số lượng cổ phiếu trong tệp này, cũng như không có dữ liệu open interest của quyền chọn trong kho dữ liệu. Cột shares-outstanding ở trên đến từ một bảng dữ liệu cơ bản riêng biệt, vì vậy một mã không có giá trị vốn hóa thị trường đã công bố sẽ bị loại khỏi bảng đó.
- Không có nội dung nào ở đây là dự báo hay khuyến nghị. Nó mô tả các điều kiện có thể đo lường được, kèm theo bảng kết quả tương ứng.
FAQ
Làm thế nào để tìm các cổ phiếu có khả năng xảy ra short squeeze?
Hãy lọc tệp báo cáo short-interest từ sàn giao dịch để tìm các vị thế có quy mô lớn so với khối lượng giao dịch hàng ngày của cổ phiếu, chỉ giữ lại các mã có đủ tính thanh khoản để giao dịch, sau đó kiểm tra xem giá có đang tăng hay không. Bộ lọc này áp dụng cho tệp short-interest Jun 30, 2026 với các tiêu chí: số ngày để cover từ năm ngày trở lên, khối lượng giao dịch trung bình hàng ngày đạt năm triệu cổ phiếu và biến động tăng trong năm phiên, kết quả là đã loại bỏ 36 mã.
Tỷ lệ short interest bao nhiêu thì gây ra squeeze?
Không có con số kỳ diệu nào cả, và bất kỳ ai đưa ra một con số cụ thể đều là đang đoán mò. Các đợt squeeze có thể bắt đầu từ nhiều mức độ khác nhau, và thường thì sẽ không có hiện tượng gì xảy ra cả: dựa trên dữ liệu thanh toán trong một năm qua, 51.7% các mã mà bộ lọc này từng đánh dấu có mức giá thấp hơn sau 30 ngày. short interest cao chỉ là điều kiện cần, không bao giờ là tác nhân kích hoạt.
Dữ liệu short interest cũ bao nhiêu?
Dữ liệu thanh toán mới nhất trong tệp này là ngày Jun 30, 2026, tức là cách đây 23 ngày, và dữ liệu giá kéo dài đến Jul 21, 2026. Khoảng cách này là do chu kỳ báo cáo chứ không phải do dữ liệu bị lỗi thời: các vị thế được kiểm đếm hai lần một tháng và được công bố khoảng tám ngày làm việc sau mỗi ngày thanh toán, vì vậy mọi con số short-interest khi được công bố đều đã cũ vài tuần.
Những cổ phiếu nào đang bị bán khống nhiều nhất hiện nay?
Các bảng xếp hạng chưa qua bộ lọc, một theo số ngày để cover và một theo tổng số cổ phiếu bị bán khống, nằm tại trang các cổ phiếu bị bán khống nhiều nhất. Trang này trả lời một câu hỏi hẹp hơn: trong số các mã thuộc tệp Jun 30, 2026 có giá đang tăng, mã bị bán khống nhiều nhất là MPT với 16.9 ngày để cover, đây là mã dẫn đầu trong bộ lọc này chứ không phải là cổ phiếu bị bán khống nhiều nhất thị trường.
Mỗi bảng dữ liệu là một truy vấn đã được lưu và phân phiên dựa trên tệp báo cáo từ sàn giao dịch. Bạn có thể mở rộng mã SQL dưới bất kỳ bảng nào, hoặc chạy bộ lọc với các ngưỡng tùy chỉnh của riêng bạn trên terminal Strasmore.