이달의 주식 최대 변동 종목 순위
거래소 데이터를 기반으로 이번 달 상승 및 하락 폭이 가장 큰 종목을 정리했습니다. 거래 대금과 상세 변동 수치를 확인하십시오.
이번 달 가장 큰 변동성을 보인 종목들을 거래소 데이터를 바탕으로 아래와 같이 순위별로 나열합니다. 해당 데이터는 Jun 23부터 Jul 22까지 완료된 21개의 거래 세션을 대상으로 합니다. 본 리스트는 해당 기간 동안 거래 대금이 최소 10억 달러 이상인 운영 기업만을 포함하므로, 모든 변동은 실제 자본에 근거합니다. 레버리지 및 인버스 펀드는 제외되었으며, 새로운 거래 세션이 완료됨에 따라 데이터 범위는 순차적으로 업데이트됩니다.
이달의 최대 상승 종목
이 표는 해당 기간 동안 가장 큰 폭으로 상승한 종목의 순위를 나타냅니다. 각 행에는 상승률과 함께 거래 대금이 표시되어 있으며, 이는 거래량이 집중된 재평가인지 혹은 거래량이 적은 상태에서의 상승인지를 구분하는 지표가 됩니다.
모든 수치 뒤에 숨겨진 정확한 SQL
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은(는) 9.70억 달러의 거래액을 기록하며 136.1%의 상승률로 1위를 차지했습니다. 이는 65.9% 상승한 PBF과(와) 62.1% 상승한 MAN을(를) 앞선 수치입니다. 한 달 동안 이 정도 규모의 변동이 발생하면, 대개 해당 주식의 평균 일일 거래량(average daily volume) 대비 상대 거래량(relative volume)이(가) 상승하는 현상이 먼저 나타납니다. 또한 이러한 움직임은 전체 기간에 걸친 꾸준한 상승보다는 특정 세션에서 갭 상승(overnight gap)으로 시작되는 경우가 많습니다.
이번 달 최대 하락 종목
반대 개념의 구성: 거래 대금이 10억 달러 이상인 기업 중 해당 기간 동안 가장 큰 폭으로 하락한 종목입니다.
모든 수치 뒤에 숨겨진 정확한 SQL
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 10CLBK이(가) 거래 대금 1.10억 달러에서 -44.6%의 하락률을 기록하며 가장 큰 하락폭을 보였으며, NVTS이(가) -41.6%로 그 뒤를 이었습니다. 이 표의 달러 열을 확인하십시오. 대규모 거래가 발생하는 시장에서의 하락은 거래량이 적은 시장에서의 하락과는 다른 사건이며, 본 표에서는 이를 추정하지 않고 명확히 구분하여 나타냅니다.
세 가지 시간 프레임에서의 동일한 질문
하나의 질문, 세 가지 관점. 특정 종목이 한 차트에서는 상위권에 위치하지만, 나머지 두 차트에서는 전혀 나타나지 않을 수 있습니다.
- 이번 주 최대 하락주와 지난 5거래일 동안의 상승주
- 이 페이지의 지난 한 달간 데이터
- 연초 대비 수치로 측정한 2026년 최대 변동성 종목
세 가지 차트는 각각 별도로 구성되며 화면 구성이 동일하지 않습니다. 주간 페이지는 5거래일 기간 동안 자체적인 유동성 하한선과 세션 최소 거래량을 설정합니다. 연초 대비 페이지는 기간 내 총 거래량이 아닌 평균 일일 달러 거래량을 기준으로 필터링합니다. 각 페이지는 자체 방법론 섹션에 고유한 규칙을 명시하고 있으므로, 한 차트의 종목을 다른 차트로 옮기기 전에 해당 규칙을 확인해야 합니다.
단일 급락은 주간 차트에서는 지배적으로 나타나지만, 연간 차트에서는 희석됩니다. 완만한 월간 하락은 주간 차트에 전혀 나타나지 않을 수도 있습니다. 이 세 가지를 나란히 살펴보는 것이 일회성 사건과 추세를 구분하는 가장 효율적인 방법입니다.
동일 기간 시장 현황
주식의 한 달 수익률은 시장의 수익률과 다르게 나타날 수 있습니다. 해당 기간 내 첫 시가로 기준을 재설정한 네 가지 주요 지수 추종 상품(Index tracker)의 결과는 다음과 같습니다.
모든 수치 뒤에 숨겨진 정확한 SQL
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 session마지막 거래일 기준 S&P 500 지수는 1.85%, Nasdaq 100 지수는 -1.47%, Dow Jones 지수는 1.33%, Russell 2000 지수는 0.17%를 기록했습니다. 동일한 기간 동안 네 가지 바스켓(Basket)에서 서로 다른 네 가지 결과가 도출되었습니다. 이제 상승 종목 목록을 해당 범위와 비교해 보겠습니다. 해당 기간 동안 가장 많이 상승한 종목은 136.1%를 기록했습니다. 개별 기업들은 이를 포함하는 지수 바스켓보다 훨씬 더 넓게 분산되어 있으며, 이것이 변동성 종목 목록이 개별 종목 위주로 구성되는 이유입니다.
주요 기업들의 실적
이번 달 가장 높은 수익률을 기록한 주식을 찾는 투자자들은 대개 본인이 이미 보유한 종목들의 성과도 확인하고자 한다. 동일한 기간과 구성 방식을 적용한 8개의 주요 대형주 바스켓(basket) 결과는 다음과 같다.
모든 수치 뒤에 숨겨진 정확한 SQL
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) DESC해당 그룹은 11.5% 기간 동안 META의 최고 수익률을 기록한 종목부터 TSLA 기간 동안 -4.7%의 최저 수익률을 기록한 종목까지 분포한다. 이들 종목이 일제히 같은 방향으로 움직이지는 않았으며, 이는 예외적인 상황이라기보다 일반적인 현상이다. 지수(index) 구성 요소로서 이 기업들은 하나로 묶여 있으나, 각 기업의 매출원은 서로 밀접한 관련이 없다. 이 바스켓은 순위가 아닌 8개 종목의 고정 목록이므로, 기업 규모를 나타내는 지표가 아닌 참고용으로 활용해야 한다.
일반적인 월간 수익률 양상
리더보드는 극단적인 사례를 보여줍니다. 이 차트는 일반적인 사례를 보여줍니다. 화면에 표시된 모든 1167 기업을 해당 기간 수익률에 따라 분류한 결과는 다음과 같습니다:
모든 수치 뒤에 숨겨진 정확한 SQL
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.2스크리닝된 기업 중 52는 해당 기간 동안 20% 이상의 수익을 기록했으며, 50는 20% 이상의 손실을 기록했습니다. 수익률이 0%에 가장 가까운 두 구간에는 각각 300개와 515개의 종목이 포함되었습니다. 해당 차트는 급등락 종목 리더보드의 전체적인 형태를 나타내며, 상위 10개 종목은 그 중 가장 오른쪽 끝에 위치합니다. 위 리더보드를 읽을 때 이 점을 유의해야 합니다. 월간 상위 10위권의 변동은 구조적으로 이상치(outlier)이며, 일반적인 주식의 전형적인 월간 수익률이 아닙니다.
주가가 월간 상승률 상위 목록에 오르는 요인
한 달은 여러 사건이 발생하기에 충분히 긴 시간이면서도, 그중 하나의 사건이 전체 흐름을 지배할 만큼 짧은 시간이기도 하다. 이러한 목록에 이름을 올리는 종목들은 대개 기업 일정상의 특정 시점과 일치한다. 가장 흔한 사례는 분기 실적이다. 실적이 예상치를 상회하거나 하회하면 단일 거래 세션 내에서 주가가 재설정되며, 남은 한 달 동안은 새로운 가격대를 중심으로 거래가 이루어진다. 실적 발표 없이 가이던스(Guidance)가 변경되는 경우도 동일한 효과를 낸다.
인수합병(M&A) 뉴스는 월간 목록에서 가장 뚜렷한 특징을 남긴다. 주가는 발표된 거래 가격 근처까지 급등한 후 정체된다. 이때 주가 변동률은 평탄해지지만 거래 대금은 여전히 막대하게 유지된다. 만약 상승률 상위 종목 중 하나가 거대한 거래 대금을 기록하면서도 해당 기간 중간에 주가 움직임이 멈춘 패턴을 보인다면, 다른 무엇보다 이 패턴을 먼저 확인해야 한다.
섹터(Sector)의 움직임은 주간 단위에서는 드물게 나타나는 현상이 월간 단위에서는 중요하게 작용한다. 금리, 유가 또는 메모리 가격의 변화는 관련 산업군 전체에 동시에 영향을 미친다. 이 때문에 월간 목록에는 서로 무관한 열 개의 종목 대신 유사한 업종들이 군집을 이루어 나타나는 경우가 많다. 그 외에도 애널리스트의 의견 변화, 지수 편입 및 편출, 임상 시험 및 규제 당국의 결과 발표, 그리고 숏 스퀴즈(Short squeeze) 등이 목록을 채운다. 이러한 요인들은 변동률만으로는 파악할 수 없기에, 모든 종목 옆에 거래 대금과 시장의 관찰 기간이 함께 표시된다.
측정 방식
모든 임계값은 암시하지 않고 명시합니다. 숨겨진 규칙이 있는 스크린은 데이터가 아니라 의견에 불과합니다.
- 윈도우(The window). 데이터가 완전히 로드된 가장 최근 세션을 기준으로 직전 30거래일을 의미하며, Jun 23부터 Jul 22까지 총 21 세션이 포함됩니다. 세션 포함 여부는 두 가지 규칙으로 결정됩니다. 첫째, 뉴욕 현지 날짜 기준 현재 날짜 이전에 종료된 세션이어야 하므로 진행 중인 세션은 포함되지 않습니다. 둘째, 정규 거래 시간의 봉(bar) 개수가 34일 스캔 기간 내 중앙값의 85%에 도달해야 합니다. 이 규칙은 데이터가 아직 채워지지 않은 이전 날짜를 제외합니다. 휴장일로 인해 단축된 세션은 일반적인 날의 봉 개수의 약 절반만 생성되므로, 데이터가 불완전한 상태로 측정되는 대신 제외됩니다.
- 수익률(The return). 분 단위 봉을 기반으로 윈도우 내 첫 정규 세션 시가부터 마지막 정규 세션 종가까지를 계산합니다. 정규 거래 시간만 포함하므로 프리마켓(premarket)과 애프터마켓(after-hours) 기록은 제외됩니다. 이는 가격 수익률(price return)이며, 배당금은 재투자되지 않습니다.
- 하한선(The floors). 윈도우 전체 거래 대금이 최소 10억 달러 이상이어야 하며, 시가는 10달러 이상이어야 하고, 윈도우 내 최소 15개 세션에서 거래 기록이 있어야 합니다. 달러 하한선은 월간 합계 기준이므로, 동일한 수치를 주간 단위로 측정할 때보다 통과하기가 더 쉽습니다.
- 제외 대상(The exclusions). 레버리지 및 인버스 펀드는 명칭을 기준으로 제외됩니다. 모든 티커(ticker)는 당사의 참조 데이터에 기업 펀더멘털(fundamentals)과 시가총액(market capitalization) 정보가 등록되어 있어야 합니다. 이 두 번째 규칙으로 인해 ETF, 폐쇄형 펀드(closed-end funds), 상품 신탁(commodity trusts), 그리고 급성장 중인 레버리지 개별 주식 상품들이 제외됩니다. 그렇지 않으면 대부분의 보드가 이들로 채워질 것입니다. 해당 참조 테이블은 날짜별 스냅샷이 아닌 티커당 하나의 행을 보유하므로, 스크린은 테이블 전체를 읽으며 특정 날짜가 적격 여부를 결정하지 않습니다. 최근 45일 이내에 주식 분할(stock split)을 실행한 티커는 소급 수정(back-adjusted)하는 대신 제외됩니다. 주식 분할은 보유 가치를 변화시키지 않고 주당 가격만 이동시키기 때문입니다. 벤더 피드(vendor feeds)에서 두 개의 서로 다른 회사로 재지정된 심볼(symbol) 하나도 명칭을 기준으로 제외됩니다.
- 메가캡 패널(The mega-cap panel). 해당 패널의 SQL에 명시된 미국 대형주 8개로 구성된 고정 바스켓입니다. 보드와 동일한 윈도우 및 수익률 산출 방식을 사용하며, 달러 거래량 하한선 적용 대상에서는 제외됩니다.
- 적용되지 않는 항목. 섹터 필터, 시가총액 하한선, 지수 편입(index-membership) 요건은 적용되지 않습니다. 따라서 거래가 빈번한 소형주가 대형주와 함께 보드에 표시될 수 있습니다. 순위는 오직 퍼센트(percentage) 변화량으로만 결정되므로, 거래 대금 열이 옆에 함께 표시됩니다.
하나의 패널이 이 모든 과정의 영수증을 제공합니다. 즉, 윈도우가 포함한 세션과 각 보드가 스캔된 유니버스(universe)를 보여줍니다.
모든 수치 뒤에 숨겨진 정확한 SQL
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 w이 스크린은 참조 테이블에 시가총액 정보가 있는 4121개의 티커에서 시작하여, 달러 거래량, 가격 및 세션 하한선을 모두 통과한 1167개의 기업으로 마무리되었습니다. 두 수치는 페이지가 새로고침될 때마다 저장되므로, 유니버스가 축소된 경우 이를 영수증을 통해 확인할 수 있습니다.
FAQ
이번 달 가장 많이 상승한 주식은 무엇입니까?
Jul 22로 종료되는 기간 동안, 시가총액 10억 달러 이상인 기업 중 가장 큰 상승률을 기록한 종목은 136.1%의 CRNX와 65.9%의 PBF입니다. 상위 10개 종목 전체 목록은 이 페이지의 첫 번째 표에 있으며, 새로운 거래 세션이 완료됨에 따라 데이터가 갱신됩니다.
이번 달 가장 많이 하락한 주식은 무엇입니까?
-44.6%의 CLBK가 가장 큰 하락폭을 기록했으며, -41.6%의 NVTS가 그 뒤를 이었습니다. 두 종목 모두 상승 종목과 동일하게 21 세션 동안 동일한 10억 달러 거래량 기준을 적용하여 측정되었습니다.
월간 주식 수익률은 어떻게 측정됩니까?
여기서 월간 수익률은 해당 기간 내 첫 번째 정규 세션의 시가와 분 단위 차트(minute bars)로 구성된 마지막 정규 세션의 종가 사이의 변화를 의미합니다. 이는 가격 수익률(price return)이므로 배당금은 포함되지 않습니다. 또한 해당 기간 근처에서 주식 분할을 실시한 기업은 수정 주가(back-adjusted)를 적용하는 대신 목록에서 제외됩니다.
왜 레버리지 ETF는 주식 변동 종목 목록에서 제외됩니까?
레버리지(leveraged) 또는 인버스(inverse) 펀드는 지수나 개별 주식의 일일 변동폭을 배수로 적용합니다. 따라서 기업 관련 뉴스 없이도 일반적인 시장 거래일에 단순 변동 종목 순위 상위에 오를 수 있습니다. 이러한 펀드를 제외함으로써 이 목록은 실제 운영 기업들로만 구성됩니다. 레버리지 ETF의 작동 원리에서 일일 리셋(daily reset)과 한 달간 보유 시 발생하는 드리프트(drift) 현상을 확인할 수 있습니다.
위의 모든 패널은 SQL이 포함된 저장된 쿼리입니다. 하나를 열어 최소 거래 금액이나 기간을 변경하여 Strasmore 터미널에서 직접 동일한 데이터를 스크리닝할 수 있습니다.