Strasmore Research
Обзор рынка Matt ConnorАвтор: Matt Connor · Обновлено 2026-07-23 · data as of July 23, 2026 · refreshed weekly

Акции с наибольшим изменением цены за месяц

Рейтинг лидеров роста и падения акций на основе биржевых данных. В списке указаны объемы торгов в долларах и процентные изменения цен за текущий период.

Ниже представлен рейтинг акций с наибольшим изменением цены за текущий месяц. Данные получены напрямую с биржи и охватывают 21 завершенных торговых сессий в период с Jun 22 по Jul 21. В список включены только операционные компании с объемом торгов не менее $1 billion за указанный период, поэтому каждое изменение цены подтверждено реальным капиталом. Кредитные и обратные фонды исключены из списка. По мере завершения новых торговых сессий временной интервал обновляется.

Наибольший рост акций в этом месяце

В таблице представлен рейтинг крупнейшего прироста за указанный период. В каждой строке указан объем торгов в долларах и процентный прирост; последний позволяет отличить массовую переоценку активов от движения на низких объемах.

ЗапросЛидеры роста за месяц (объем торгов >$1B)
Точный 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 10

CRNX занял первое место с ростом на 133.6% при объеме торгов в $9.4 миллиарда. За ним следуют PBF с результатом 75.5% и MAN с результатом 56.8%. Рост такого масштаба в течение месяца обычно начинается с повышенного относительного объема по сравнению со среднедневным объемом акции. Часто это проявляется в виде ночного разрыва в одной сессии, а не постепенного роста на протяжении всего периода.

Худшие акции месяца

Обратный список: компании с самым резким падением котировок за указанный период, чей объем торгов превышает один миллиард долларов.

ЗапросЛидеры падения за месяц (объем торгов >$1B)
Точный 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 10

Наибольшее падение показал NVTS на уровне -47.6% при объеме торгов 5.1 млрд долларов; следующим стал WOLF с показателем -47.1%. Следите за колонкой объема торгов в этой таблице. Падение акций с высокими объемами отличается от падения на спокойном рынке; здесь эти различия учитываются, а не предполагаются.

Один и тот же вопрос на трех временных интервалах

Один вопрос — три временных окна. Акция может занимать первое место в одном списке и полностью отсутствовать в двух других.

Эти три таблицы формируются раздельно, и их критерии фильтрации не идентичны. Еженедельная страница устанавливает собственный порог ликвидности и минимальный объем за сессию в рамках пятисессионного окна. Страница за год использует средний ежедневный долларовый объем торгов, а не совокупный объем за весь период. У каждой страницы свои правила, изложенные в соответствующем разделе методологии; ознакомьтесь с ними, прежде чем переносить данные из одного списка в другой.

Одиночный ценовой разрыв может доминировать в еженедельном списке, но исчезнуть в годовом. Медленное ежемесячное изменение может вообще не попасть в еженедельный список. Сравнение трех списков позволяет наиболее простым способом отличить разовое событие от тренда.

Состояние рынка за тот же период

Динамика отдельной акции может отличаться от динамики рынка за тот же месяц. Ниже приведены данные четырех основных индексов, пересчитанных от их первого значения открытия внутри периода:

ЗапросДинамика 4 основных индексов (база — цена открытия)
Точный 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 составил 0.08%, Nasdaq 100 — -4.46%, Dow — 0.91%, а Russell 2000 — -0.21%. Четыре набора акций, один период, четыре разных результата. Теперь сравним лидеров роста с этими показателями: максимальный рост в списке составил 133.6% за тот же период. Показатели отдельных компаний варьируются значительно сильнее, чем индексы, в которые они входят, — именно поэтому списки наиболее активных акций состоят из отдельных наименований.

Результаты известных брендов

Инвесторы, ищущие наиболее прибыльные акции в этом месяце, обычно также хотят узнать динамику компаний, которыми они уже владеют. Представляем фиксированную корзину из восьми крупнейших компаний, сформированную за тот же период по тем же правилам:

Запрос8 крупнейших компаний за этот период
Точный 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

Показатели группы варьировались от 12.5% за META в верхней части списка до -6.6% за AVGO в нижней части. Компании не демонстрировали единообразной динамики, что является скорее правилом, чем исключением. Вхождение в индекс объединяет эти компании, однако их источники доходов практически не связаны друг с другом. Данная корзина представляет собой фиксированный список из восьми наименований, а не рейтинг, поэтому ее следует использовать для ориентира, а не как утверждение о масштабах компаний.

Как выглядит типичный месяц

Лидерборды показывают экстремальные значения. Этот график показывает основную массу данных. Все компании из 1162, прошедшие фильтрацию, распределены по группам в зависимости от их доходности за указанный период:

ЗапросРаспределение компаний по доходности за месяц
Точный 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

60 отобранных компаний показали рост от 20% и выше, а 77 — падение на 20% и более. В двух группах, наиболее близких к нулевой доходности, находилось 315 и 426 компаний. Этот график представляет собой основу, из которой формируется лидерборд по динамике цен, а десять лучших позиций — это его крайний правый сегмент. При анализе таблиц выше учитывайте следующее: доходность в топ-десяти за месяц является статистическим выбросом и не является типичным результатом для обычной акции.

Причины попадания акций в списки лидеров месяца

Месяц — это достаточно длительный период для совершения нескольких событий, но при этом достаточно короткий, чтобы одно из них обычно доминировало. Названия в таких списках обычно связаны с конкретными датами в календаре компании. Чаще всего это квартальная отчетность: превышение или недовыполнение прогнозов меняет цену за одну сессию, после чего в течение месяца торги продолжаются вокруг нового уровня. Изменения прогнозов (guidance) действуют аналогичным образом, даже если отчетность не публикуется.

Новости о слияниях и поглощениях оставляют самый заметный след в месячных списках. Цена акции резко возрастает до уровня, близкого к цене сделки, после чего волатильность снижается, хотя объемы торгов в долларах остаются огромными. Если компания в верхней части таблицы лидеров роста демонстрирует высокие показатели торгов в долларах и цену, которая перестала меняться в середине периода, этот паттерн следует проверить в первую очередь.

Секторальные движения имеют значение в течение месяца так, как они редко имеют значение в течение недели. Изменения процентных ставок, цен на нефть или на память влияют на целые группы активов одновременно. Именно поэтому в месячных списках часто наблюдаются кластеры схожих компаний, а не десять unrelated имен. Остальные позиции занимают действия аналитиков, включение или исключение из индексов, результаты клинических или регуляторных испытаний, а также шорт-сквизы. Ни один из этих факторов не виден только по процентному изменению, поэтому в каждом списке рядом с движением цены указаны объем торгов в долларах и временное окно.

Методика расчета

Все пороговые значения указаны здесь в явном виде. Скрининг со скрытыми правилами — это не данные, а мнение.

  • Временное окно. Последние 30 календарных дней, включая последнюю сессию с полностью загруженными данными, которая составила 21 сессий в период с Jun 22 по Jul 21. Соответствие сессии критериям определяют два правила. Сессия должна завершиться до текущей даты в Нью-Йорке, поэтому текущая сессия не учитывается. Количество баров в основные торговые часы должно составлять не менее 85% от медианного значения по 34-дневному сканированию; это правило исключает ранние дни, данные по которым еще загружаются. Короткая праздничная сессия содержит примерно половину нормы баров, поэтому она исключается, а не учитывается как неполная.
  • Доходность. Разница между ценой открытия первой регулярной сессии внутри окна и ценой закрытия последней регулярной сессии, рассчитанная на основе минутных баров. Учитываются только основные торговые часы; данные премаркета и постмаркета исключены. Это ценовая доходность: дивиденды не учитываются.
  • Нижние пороги. Общий объем торгов за все окно должен составлять не менее 1 миллиарда долларов, цена открытия — не менее 10 долларов, а торги должны проводиться как минимум в 15 сессиях из окна. Денежный порог рассчитывается как сумма за месяц, что упрощает выполнение условия по сравнению с недельным расчетом.
  • Исключения. Кредитные и обратные фонды исключаются по названию. Каждый тикер также должен иметь фундаментальные показатели компании и рыночную капитализацию в нашей справочной базе. Второе правило исключает ETF, закрытые фонды, товарные трасты и быстрорастущий сегмент кредитных продуктов на отдельные акции, которые иначе заняли бы большую часть списков. Справочная таблица содержит по одной строке на тикер, а не ежедневные снимки данных, поэтому скрининг анализирует всю таблицу, и право на участие не зависит от конкретной даты. Тикеры, по которым в последние 45 дней был проведен сплит акций, исключаются, а не корректируются ретроспективно, так как сплит меняет цену за акцию, не меняя стоимость владения активом. Один символ, переназначенный поставщиками данных между двумя разными компаниями, исключен по названию.
  • Панель мега-капитализации. Фиксированная корзина из восьми широко торгуемых крупных компаний США, перечисленных в SQL-запросе данной панели. Используются те же временное окно и метод расчета доходности, что и в основных списках; на нее не распространяется фильтр по объему торгов в долларах.
  • Что не применяется. Фильтр по секторам, порог по капитализации и требование членства в индексах отсутствуют. Поэтому компания с высокой оборачиваемостью может находиться в списке рядом с крупной компанией. Ранжирование происходит только по процентному изменению, поэтому столбец объема торгов в долларах выводится рядом.

Одна панель содержит отчет по всем параметрам: охваченные сессии и совокупность активов, из которых проводился скрининг.

ЗапросПериод и совокупность акций для всех данных на странице
Точный 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

Скрининг начался с 4122 тикеров с рыночной капитализацией в справочной таблице и завершился 1162 компаниями, прошедшими по порогам объема торгов, цены и количества сессий. Оба показателя обновляются при каждой перезагрузке страницы, поэтому сокращение выборки будет заметно в отчете.

FAQ

Какие акции показали наибольший рост в этом месяце?

За период, закончившийся Jul 21, наибольший рост среди компаний с капитализацией более 1 миллиарда долларов показали CRNX на уровне 133.6% и PBF на уровне 75.5%. Полный список из десяти крупнейших компаний представлен в первой таблице на этой странице; данные обновляются по завершении новых торговых сессий.

Какие акции показали наибольшее падение в этом месяце?

Наибольшее падение продемонстрировала компания NVTS на уровне -47.6%, за ней следует WOLF на уровне -47.1%. Оба показателя рассчитаны за тот же период 21 с тем же порогом объема торгов в 1 миллиард долларов, что и в списке лидеров роста.

Как рассчитывается ежемесячная доходность акций?

Ежемесячная доходность в данном контексте — это изменение цены акции от цены открытия первой регулярной сессии в отчетном периоде до цены закрытия последней регулярной сессии, рассчитанное на основе минутных баров. Это ценовая доходность, поэтому дивиденды не учитываются. Компании, проводившие дробление акций вблизи отчетного периода, исключаются из списка, а не корректируются ретроспективно.

Почему из списка лидеров рынка исключены биржевые фонды с кредитным плечом (leveraged ETFs)?

Фонды с кредитным плечом или обратные фонды умножают дневное изменение индекса или отдельной акции. Это может привести к тому, что они возглавят список лидеров в обычный торговый день без каких-либо корпоративных новостей. Исключение таких фондов позволяет сохранить в списке только операционные компании. В статье Как работают биржевые фонды с кредитным плечом объясняется механизм ежедневного пересчета и эффект дрейфа при владении таким активом в течение месяца.


Каждая панель выше представляет собой сохраненный запрос с приложенным SQL-кодом. Вы можете открыть любой из них, изменить порог капитализации или период, чтобы самостоятельно проанализировать те же данные на терминале Strasmore.