Почему данные о short interest всегда устаревшие
Узнайте, почему отчеты FINRA публикуются с задержкой в две недели. Разбор цикла отчетности, причин запаздывания данных и показателя days to cover.
Данные о коротких позициях всегда устаревают по структурной причине: это не поток данных в реальном времени. Брокеры фиксируют количество акций, проданных в короткую в их счетах, в установленные FINRA даты расчетов — дважды в месяц, в середине месяца и в конце месяца. Затем они подают эти данные в FINRA, которая суммирует отчеты всех фирм-участниц и публикует совокупный результат примерно через восемь рабочих дней. С учетом времени, необходимого вендору и базе данных для передачи файла на ваш экран, самое свежее доступное на данный момент значение short interest описывает позиции, которые были сформированы от одной до четырех недель назад. Эта страница измеряет этот временной разрыв, а не просто констатирует его наличие.
Причины задержки отчетности
Цикл состоит из четырех этапов, каждый из которых занимает несколько дней.
- Дата расчетов. FINRA публикует график дат расчетов — одна дата приходится на середину месяца, другая — на конец месяца. В каждую из этих дат каждый брокер-дилер фиксирует короткие позиции, открытые на счетах клиентов и собственных счетах фирмы. Это даты расчетов, а не даты сделок: при расчетах по схеме T+1 сделка, совершенная в понедельник, рассчитывается во вторник, поэтому в дату расчетов учитываются позиции по сделкам, которые были проведены к этому моменту.
- Срок подачи отчетности. Каждая фирма-участник подает в FINRA данные об общем объеме коротких позиций по каждой ценной бумаге в течение следующих двух рабочих дней. На этом этапе информация не является публичной; это регуляторная отчетность, а не поток рыночных данных.
- Компиляция. FINRA суммирует тысячи отчетов от различных фирм по каждой ценной бумаге и формирует один файл: одно число на каждую ценную бумагу на каждую дату расчетов — без внутридневной истории, без детализации по площадкам и без разбивки по фирмам.
- Распространение. Файл становится публичным примерно через восемь рабочих дней после описываемой даты расчетов. Затем поставщики данных извлекают его, биржи переопубликовывают его, а хранилища данных, подобные используемому на этой странице, загружают его.
Никто не скрывает эти данные намеренно. Задержка — это сумма времени на сбор, компиляцию и передачу данных; каждый этап представляет собой пакетную обработку по календарю, а не непрерывный поток.
Какова задержка в днях?
Ниже приведены все даты расчетов, полученные этим складом в режиме реального времени в виде инкрементальных поставок. В одном столбце указана дата расчета, в другом — день, когда данные строки впервые появились в этом отчете.
Точный SQL-код для каждого числа
WITH first_arrival AS (
SELECT settlement_date,
toDate(min(_ingest_time)) AS arrived
FROM global_markets.stocks_short_interest
GROUP BY settlement_date
),
bulk_days AS (
SELECT arrived
FROM first_arrival
GROUP BY arrived
HAVING count() > 5
)
SELECT settlement_date,
toString(arrived) AS arrived_here,
dateDiff('day', settlement_date, arrived) AS publication_lag_days
FROM first_arrival
WHERE arrived NOT IN (SELECT arrived FROM bulk_days)
ORDER BY settlement_dateПоследний доступный расчет от 2026-06-30 поступил в систему 2026-07-11 — через 11 дней после фиксации соответствующих позиций. Предыдущий расчет занял 16 дней. На всей серии данных наблюдается не постоянная величина, а определенный диапазон:
Точный SQL-код для каждого числа
WITH first_arrival AS (
SELECT settlement_date,
toDate(min(_ingest_time)) AS arrived
FROM global_markets.stocks_short_interest
GROUP BY settlement_date
),
bulk_days AS (
SELECT arrived
FROM first_arrival
GROUP BY arrived
HAVING count() > 5
),
organic AS (
SELECT settlement_date,
dateDiff('day', settlement_date, arrived) AS lag
FROM first_arrival
WHERE arrived NOT IN (SELECT arrived FROM bulk_days)
)
SELECT count() AS settlements_measured,
min(lag) AS fastest_lag_days,
round(quantileDeterministic(0.5)(lag, cityHash64(settlement_date)), 1) AS median_lag_days,
max(lag) AS slowest_lag_days,
(SELECT count() FROM first_arrival WHERE arrived IN (SELECT arrived FROM bulk_days)) AS settlements_bulk_loaded,
(SELECT toString(max(arrived)) FROM bulk_days) AS bulk_load_date
FROM organicЗа 8 инкрементальных расчетов самый быстрый пришел через 10 дней после даты расчета, а самый медленный — через 26 дней; медианное значение составляет 14 дней. Это и есть те самые «две недели», упомянутые в заголовке, — фактический показатель, а не предположение.
Обратите внимание, что не учитывают эти данные. История склада не является показателем скорости публикации: 2026-03-16 в этой базе данных было загружено 197 расчетов одновременно в рамках одного архивного обновления. Временные метки загрузки в этих строках относятся к моменту обновления архива, а не к моменту раскрытия информации. Любая «задержка», рассчитанная на их основе, является следствием нашего графика загрузки. Только те расчеты, которые поступали по одному после формирования архива, отражают реальную скорость обработки — именно они представлены выше.
Текущее состояние цикла
Задержка данных наиболее заметна в самом разрыве: в любой момент времени существует дата расчетов, которая уже наступила, но данные по ней еще не опубликованы. Эта панель отображает актуальные поступления.
Точный SQL-код для каждого числа
WITH (SELECT max(settlement_date) FROM global_markets.stocks_short_interest) AS latest
SELECT toString(latest) AS latest_settlement_on_file,
(SELECT count() FROM global_markets.stocks_short_interest
WHERE settlement_date = latest) AS securities_in_that_print,
(SELECT dateDiff('day', latest, toDate(min(_ingest_time))) FROM global_markets.stocks_short_interest
WHERE settlement_date = latest) AS its_publication_lag_days,
(SELECT count() FROM global_markets.stocks_short_interest
WHERE settlement_date > latest AND settlement_date <= latest + 16) AS next_settlement_rows_on_file,
(SELECT count(DISTINCT date) FROM global_markets.stocks_short_volume
WHERE date > latest) AS daily_short_volume_files_since,
(SELECT dateDiff('day', latest, max(date)) FROM global_markets.stocks_short_volume) AS days_from_settlement_to_newest_daily_fileПоследний доступный отчет по коротким позициям соответствует расчетам за 2026-06-30, охватывает 22207 ценных бумаг и публикуется с задержкой в 11 дней. Следующий этап цикла содержит 0 строк: данные еще не опубликованы, и при указанных выше задержках это является нормой. Значение в этом столбце намеренно ограничено нулем. Когда данные поступают, ограничение снимается, и страница ожидает обновления, вместо того чтобы отображать устаревшие сведения — по тому же принципу, что и июньский обзор, опубликованный на один цикл позже.
Тем временем файл ежедневного объема коротких продаж публиковался 12 раз с указанной даты расчетов, при этом самые свежие данные на 17 дней новее, чем последний снимок коротких позиций. Два набора данных FINRA, два разных графика.
Динамика цен в период ожидания публикации данных
Задержка имеет значение только в том случае, если за это время меняются цены. Так и происходит. В данной панели сравнивается цена закрытия каждой акции в регулярной сессии на дату расчета с ценой закрытия в день фактического получения файла.
Точный SQL-код для каждого числа
WITH latest AS (SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest),
arrived AS (
SELECT toDate(min(_ingest_time)) AS a
FROM global_markets.stocks_short_interest
WHERE settlement_date = (SELECT d FROM latest)
),
daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session,
argMax(toFloat64(close), window_start) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'TSLA', 'NVDA', 'GME', 'MU')
AND toDate(toTimeZone(window_start, 'America/New_York')) >= (SELECT d FROM latest)
AND toDate(toTimeZone(window_start, 'America/New_York')) <= (SELECT a FROM arrived)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) BETWEEN 570 AND 959
GROUP BY ticker, session
)
SELECT si.ticker AS ticker,
round(si.short_interest / 1e6, 1) AS shares_short_m,
round(argMin(d.rth_close, d.session), 2) AS close_at_settlement,
round(argMax(d.rth_close, d.session), 2) AS close_when_published,
round((argMax(d.rth_close, d.session) / argMin(d.rth_close, d.session) - 1) * 100, 1) AS move_while_pending_pct,
count() AS sessions_in_window
FROM global_markets.stocks_short_interest AS si
INNER JOIN daily AS d ON d.ticker = si.ticker
WHERE si.settlement_date = (SELECT d FROM latest)
GROUP BY si.ticker, si.short_interest
ORDER BY abs(move_while_pending_pct) DESC, si.ticker ASCПериод охватывал 8 торговых сессий. Наибольшее изменение среди пяти позиций показала MU: цена выросла с $1151.01 на момент расчета до $978.69 в день публикации данных о коротких позициях. Это составило -15% за период, когда заявленная короткая позиция была зафиксирована на уровне 31.7 миллионов акций. Наименьшее изменение продемонстрировала GME, которая все же изменилась на -1.9%.
В этом заключается практический смысл задержки. Любой заголовок о «коротких позициях в X» описывает состояние на момент последнего расчета — все изменения внутри указанного периода в нем не отражены. Игроки могли закрывать позиции на растущем рынке или наращивать их на падающем; текущее число не дает такой информации и не даст ее до следующей публикации.
Дни покрытия, рассчитанные на основе устаревших данных
Дни покрытия — отношение количества коротких позиций к среднему дневному объему торгов — это показатель, с которым чаще всего сталкиваются читатели. Он дважды содержит в себе устаревшие данные: числитель фиксируется на дату расчетов, а знаменатель (объем) рассчитывается самим файлом несколько недель назад. Самый наглядный пример — GameStop, так как это широко известный актив с высокой плотностью торгов.
Точный SQL-код для каждого числа
WITH latest AS (SELECT max(settlement_date) AS d FROM global_markets.stocks_short_interest),
arrived AS (
SELECT toDate(min(_ingest_time)) AS a
FROM global_markets.stocks_short_interest
WHERE settlement_date = (SELECT d FROM latest)
),
tape AS (
SELECT count(DISTINCT toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
sum(toFloat64(volume)) AS shares
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'GME'
AND toDate(toTimeZone(window_start, 'America/New_York')) > (SELECT d FROM latest)
AND toDate(toTimeZone(window_start, 'America/New_York')) <= (SELECT a FROM arrived)
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) BETWEEN 570 AND 959
)
SELECT toString((SELECT d FROM latest)) AS settlement,
round(si.short_interest / 1e6, 1) AS shares_short_m,
round(si.avg_daily_volume / 1e6, 2) AS file_adv_m,
round(si.days_to_cover, 2) AS reported_days_to_cover,
round(tape.shares / tape.sessions / 1e6, 2) AS tape_adv_since_settlement_m,
round(si.short_interest / (tape.shares / tape.sessions), 2) AS days_to_cover_on_recent_volume,
round(abs(si.short_interest / (tape.shares / tape.sessions) - si.days_to_cover), 2) AS days_of_difference,
tape.sessions AS sessions_measured
FROM global_markets.stocks_short_interest AS si, tape
WHERE si.ticker = 'GME'
AND si.settlement_date = (SELECT d FROM latest)Читайте строку слева направо. На дату расчетов 2026-06-30 объем коротких позиций по GameStop составлял 55.9 млн акций. Файл сопоставляет это значение со средним дневным объемом в 5.2 млн акций и показывает 10.75 дней покрытия — именно это число отображает скринер.
Теперь заменим знаменатель на реальные данные. За 7 регулярных торговых сессий, пока данные готовились к публикации, средний объем торгов GameStop по консолидированной ленте составлял 3.09 млн акций в день. При том же объеме коротких позиций этот показатель составит 18.08 дней — на 7.33 дней меньше, чем в опубликованном коэффициенте, при неизменном числителе. Изменилось только допущение по объему. Рассматривайте дни покрытия как устаревший коэффициент, построенный на основе двух устаревших входных данных, а не как актуальный показатель времени, необходимого для закрытия позиций.
Шорт-сквизы: когда задержка данных становится критической
Основная причина интереса к этой теме — сквиз. В ситуации сквиза ключевым фактором является короткая позиция, объем которой невозможно отследить в реальном времени. Классическим примером служит GameStop в начале 2021 года. В таблицах ниже указаны цены закрытия регулярных сессий на даты расчетов и через восемь торговых сессий после них. Это соответствует целевому сроку публикации данных FINRA, составляющему примерно восемь рабочих дней.
Точный SQL-код для каждого числа
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session,
argMax(toFloat64(close), window_start) AS cl
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'GME'
AND window_start >= toDateTime('2020-12-01 00:00:00')
AND window_start < toDateTime('2021-03-15 00:00:00')
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) BETWEEN 570 AND 959
GROUP BY session
),
ranked AS (
SELECT session, cl, row_number() OVER (ORDER BY session) AS n
FROM daily
)
SELECT toString(si.settlement_date) AS settlement,
round(si.short_interest / 1e6, 1) AS shares_short_m,
round(r0.cl, 2) AS close_at_settlement,
round(r8.cl, 2) AS close_8_sessions_later,
round((r8.cl / r0.cl - 1) * 100, 1) AS move_while_pending_pct
FROM global_markets.stocks_short_interest AS si
INNER JOIN ranked AS r0 ON r0.session = si.settlement_date
INNER JOIN ranked AS r8 ON r8.n = r0.n + 8
WHERE si.ticker = 'GME'
AND si.settlement_date >= toDate('2020-12-15')
AND si.settlement_date <= toDate('2021-02-26')
ORDER BY si.settlement_dateРассмотрим расчеты на 2021-01-15. На тот момент объем коротких позиций составлял 61.8 миллионов акций, а цена акции была $35.49. Спустя восемь сессий — примерно когда подобные данные становятся публичными — GameStop закрылась по цене $197.44, что означает движение на 456.3%. Любой, кто изучал этот показатель коротких позиций в день его публикации, видел данные о состоянии актива, который уже не стоил таких денег.
Следующая публикация демонстрирует обратную ситуацию. В расчетах на 2021-01-29 зафиксировано 21.4 миллионов акций в коротких позициях — большая часть позиций уже закрыта, при цене акции $328.24. Спустя восемь сессий цена составила $51.19, -84.4%. Закрытие позиций произошло еще до того, как отчет об этом стал общедоступным. Обе фазы сквиза — скопление позиций и их закрытие — были раскрыты постфактум.
Ежедневный показатель и его ограничения
FINRA публикует данные ежедневно: на следующее утро становится доступен объем коротких продаж (short volume) — доля от общего объема торгов за день, отмеченная как сделки по коротким продажам. Эти данные близки к реальному времени, но это иной показатель. Объем коротких продаж отражает торговый поток — значительная его часть приходится на хеджирование маркетмейкеров, которое закрывается к концу дня, — а не открытые позиции. Акция может демонстрировать высокий объем коротких продаж в течение недели, при этом уровень короткого интереса (short interest) не изменится. Разница между этими двумя наборами данных аналогична разнице между интенсивностью движения транспорта на дороге и количеством машин, припаркованных в конце этой дороги; подробное описание обоих файлов приведено здесь.
В США нет ежедневных раскрываемых данных по короткому интересу. Поставщики данных продают ежедневные оценки, построенные на основе данных о кредитовании ценных бумаг и торговых потоках; это модели, а не официальная отчетность. Официальный показатель публикуется дважды в месяц и поступает с задержкой.
FAQ
Почему данные по коротким позициям двухнедельной давности?
Брокеры фиксируют короткие позиции только в даты расчетов FINRA дважды в месяц. Сводные данные подаются через несколько рабочих дней, а FINRA распространяет итоговый файл примерно через восемь рабочих дней после даты расчетов. При обработке данных, полученных в базу в реальном времени, полный цикл занимал от 10 до 26 дней, при медиане в 14 дней.
Как брокеры рассчитывают и предоставляют данные по коротким позициям?
Каждый брокер-дилер подсчитывает количество акций, находящихся в коротких позициях на счетах клиентов и собственных счетах фирмы на дату расчетов. Затем он суммирует эти данные по каждой ценной бумаге и подает общий итог в FINRA. FINRA объединяет отчеты всех фирм-членов в одно число по каждой ценной бумаге — 22207 из них в 2026-06-30 публикации. Это регуляторный подсчет позиций, а не учет сделок.
Отличается ли цикл отчетности для акций NYSE, Nasdaq или OTC?
Нет. На всех торговых площадках США действует один и тот же график расчетов дважды в месяц и один и тот же цикл сбора и распространения данных. Биржи переопубликовывают данные из файла FINRA, а не создают собственный подсчет. Место листинга акции не влияет на актуальность данных по ее коротким позициям.
Какое значение процента коротких позиций является хорошим или плохим?
Не существует порогового значения, которое определяло бы акцию как хороший или плохой актив; высокий показатель не является прогнозом. Показатели скученности (crowding) описывают размер короткой позиции относительно доступного для торговли объема акций. Последний отчет по GameStop демонстрирует 10.75 дней покрытия, в то время как у большинства ликвидных бумаг этот показатель составляет единицы процентов — распределение можно увидеть в разделе текущие лидеры скученности.
Имеет ли значение задержка в отчетности для коротких сквизов?
Именно здесь задержка наиболее критична. В период расчетов 2021-01-15 акции GameStop изменились на 456.3% в период между замером и восьмисессионной отметкой, приближенной к публикации. К моменту публикации 2021-01-29 короткая позиция уже сократилась до 21.4 миллионов акций. Скученность для сквиза подтверждается в публичных данных только после самого события.
Каждая панель выше сопровождается SQL-запросом, который ее сформировал. Вы можете развернуть любой из них для проверки чисел или запустить календарь расчетов на терминале Strasmore.