Strasmore Research
Learn am Matt ConnorBy Matt Connor · Updated 2026-09-05 · data as of September 5, 2026 · refreshed weekly

Why short interest data dey two weeks old

Short interest no be live feed. See how FINRA settlement dates, the eight-business-day lag, pending prints, and days to cover dey work.

Short interest data dey old most times because of how the system work: e no be live feed. Brokers dey take snapshot of shares wey dem short for their accounts on settlement dates wey FINRA schedule, two times every month — middle of the month and month-end. After that, dem file the totals with FINRA. FINRA go compile report from every member firm and publish the combined figure roughly eight business days later. Add the vendor and database steps wey carry the file reach your screen, and the freshest short interest number wey dey available on any day dey show positioning as e be one to four weeks before. This page dey measure that gap, instead of claiming say e no dey.

How the reporting lag actually happens

This cycle get four steps, and each one dey add days.

  1. The settlement date. FINRA dey publish schedule of settlement dates: one for the middle of the month, and one for month-end. On each date, every broker-dealer dey record the short positions wey dey inside im customers’ accounts and firm accounts. These na settlement dates, no be trade dates. Under T+1 settlement, trade wey dem strike on Monday dey settle on Tuesday. So, the positions wey dem count for settlement date na the ones wey their trades don clear reach that date.
  2. The reporting deadline. Each member firm dey file im short totals for each security with FINRA within the next few business days. Nothing dey public for this stage. Na regulatory filing be this, no be market data feed.
  3. Compilation. FINRA dey add together thousands of firm-level reports for every security and assemble one file. Na one number for each security and each settlement date. E no get intraday history, venue detail, or per-firm breakout.
  4. Dissemination. The file dey go public roughly eight business days after the settlement date wey e describe. Vendors go then collect am, exchanges republish am, and data warehouses like the one behind this page go ingest am.

Nobody dey sit on the number. The delay na the total of the collection window, compilation window, and distribution hop. Every step na batch process wey dey follow calendar, no be stream.

Lag dey how long, measured by days?

Na all the settlement dates wey this warehouse receive as live, incremental delivery dey here. Settlement date dey one side, while the day wey the rows first show for here dey the other side.

QueryEvery incrementally-delivered settlement: wey dem measure on one date, but e land for file days later
settlement_datedon arrive herepublication lag days
2026-03-132026-04-0119
2026-03-312026-04-1010
2026-04-152026-05-0116
2026-04-302026-05-1111
2026-05-152026-06-1026
2026-05-292026-06-1012
2026-06-152026-07-0116
2026-06-302026-07-1111
2026-07-152026-08-0117
2026-07-312026-08-1111
2026-08-142026-09-0118
The exact SQL behind every number
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
Run am yourself

The latest settlement wey dey the file, 2026-08-14, reach here on 2026-09-01, 18 days after dem record the positions wey e describe. The one before am take 11 days. For the whole series, e form one range, no be fixed number:

QueryThe pipeline lag for one row: plus the bulk backfill wey these figures deliberately leave out
settlements we measurefastest lag daysmedian lag daysslowest lag dayssettlements we bulk loadbulk load date
111016261972026-03-16
The exact SQL behind every number
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
Run am yourself

Across 11 settlements wey come incrementally, the fastest print show 10 days after the settlement date, while the slowest take 26 days. The median na 16 days, the "two weeks old" wey the title talk about, based on measurement and no be assumption.

Make you note wetin those queries leave out. Warehouse history no be record of publication speed: on 2026-03-16, this database load 197 settlements together, through one backfill of the archive. The ingest timestamps for those rows show when the backfill happen, no be when the disclosure happen. Any "lag" wey dem calculate from them na artifact of our loading schedule. Na settlements wey arrive one by one, after the archive don already dey in place, fit measure the real pipeline. Na those rows dey above.

Cycle dey where today

You fit see the delay well-well from the gap itself: for any time, one settlement date don already pass but dem never publish am yet. This panel na the live receipt.

QueryThe current state of the cycle: the newest print wey dey for file, and the one still dey pipeline
latest settlement wey dey on filesecurities wey dey that printim publication lag daysnext settlement rows wey dey on filedaily short volume files sincedays from settlement reach newest daily file
2026-08-14224801801521
The exact SQL behind every number
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
Run am yourself

The newest short interest print wey dey on file na the 2026-08-14 settlement. E cover 22480 securities, and dem deliver am 18 days later. The next settlement for the cycle get 0 rows: dem never publish am yet, and based on the delays wey we measure above, that one normal well-well. We set that column boundary to zero on purpose. When the print land, the boundary go trigger, and we go hold this page for update instead of quietly serving stale sentence. Na the same tripwire wey the June recap carry inside, one cycle earlier.

Meanwhile, the daily short-volume file don publish 15 times since that settlement date. Its latest day dey 21 days newer than the newest short interest snapshot. Two FINRA datasets, two different clocks.

Wetin dey move while the print dey pipeline

The lag only matter if prices move inside am. Dem do. This panel dey take the latest settlement, then measure each name regular-session close for the settlement date against the close on the day the file really land.

QueryThe blind window: wetin five stocks do between the settlement date and the day dem publish the short interest
tickershares short mclose at settlementclose when dem publish ammove while pending (%)sessions wey dey inside window
AAPL116.3305.98325.146.313
MU30971.98933.24-413
TSLA69.2342.28356.12413
NVDA286225.12217.54-3.413
GME5418.6518.80.813
The exact SQL behind every number
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
Run am yourself

The window run for 13 trading sessions. The widest mover among the five na AAPL, wey move from $305.98 for the settlement close go $325.14 on the day its short interest print become available, a 6.3% change during a period when the disclosed short position, by definition, remain frozen at 116.3 million shares. The narrowest, GME, still move 0.8%.

Na this be the practical meaning of the lag. Any headline wey report “short interest in X” dey describe the position for the last settlement; everything inside the window above no dey show for am. Shorts fit don cover into strength or add into weakness; the number no fit talk, and e no go talk until the next print.

Days to cover, wey dem work out with stale numerator

Days to cover, shares wey dem short divide by average daily volume, na the ratio wey most readers dey actually see. E carry stale data two times: numerator wey dem fix for settlement date, plus volume denominator wey the file itself calculate weeks before. GameStop na the clearest example because na household name and one of the more crowded liquid tickers.

QueryGME days to cover: as dem report am for the file, and recomputed with the volume wey trade while the print dey pending
settlementshares short mfile ADV mreported days to covertape ADV since settlement mdays to cover on recent volumedays of differencesessions we measure
2026-08-145410.175.315.59.824.5112
The exact SQL behind every number
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)
Run am yourself

Read the row from left to right. For the 2026-08-14 settlement, GameStop get 54 million shares short. The file match am with average daily volume of 10.17 million shares and report 5.31 days to cover, na the number wey screener dey show you.

Now replace the denominator with reality. Across the 12 regular sessions wey trade while the print still dey pipeline, GameStop average 5.5 million shares per day for the consolidated tape. The same short position against that volume come to 9.82 days, 4.51 days away from the published ratio, with numerator still the same. Na only the volume assumption change. Treat days to cover as dated ratio wey dem build from two dated inputs, no be live measure of how long e go take to exit.

Short squeezes: na where lag dey bite well-well

Na the squeeze make most people dey search this question at all. For squeeze, the short position na the main story, but na exactly the quantity wey nobody fit see in real time. GameStop for early 2021 na textbook example. The columns below show each settlement regular-session close and the close eight trading sessions later. E dey stand in for FINRA target to release the information after roughly-eight-business-day.

QueryGME, winter 2020-21: each short interest print and the price move before dem make am public (as-traded prices)
settlementshares short mclose at settlementclose 8 sessions latermove while pending (%)
2020-12-1568.113.8720.9851.3
2020-12-3171.218.8131.4467.1
2021-01-1561.835.49197.44456.3
2021-01-2921.4328.2451.19-84.4
2021-02-1216.552.33109.16108.6
2021-02-2614.2101.6263.05158.9
The exact SQL behind every number
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
Run am yourself

Follow the 2021-01-15 settlement. E record say 61.8 million shares dey short, while the stock dey $35.49. Eight sessions later, around the time that kind print fit reach the public, GameStop close for $197.44, a 456.3% move. Anybody wey read that short interest figure on the day dem publish am dey read description of stock wey no longer dey that price.

The next print turn the trap upside down. The 2021-01-29 settlement record say 21.4 million shares dey short, with most of the position don disappear, while the stock dey $328.24. By eight sessions later, e don reach $51.19, -84.4%. Dem don already cover the position before the file wey show am become public. Both sides of the squeeze, the crowding and the unwind, dem disclose am after the fact.

Diari cousin, and wetin e no dey tell you

FINRA dey publish one thing every day: short volume, wey be the share of one day reported volume wey dem mark as short-sale executions, and dem release am the next morning. E dey almost real-time, but na different measurement. Short volume dey count trading flow, and plenty of am na market-maker hedging wey don flatten before market close, no be positions held. Stock fit print heavy short volume every day for one week, while e short interest no move at all. The difference between the two datasets na the difference between traffic for road and cars wey park for the end of the road; both files are described here with detail.

For US, no daily disclosed short interest number dey. Vendors dey sell daily estimates wey dem model from securities-lending and flow data; na models dem be, no be disclosures. The disclosed figure dey come out two times every month, and e dey arrive late.

FAQ

Why short interest data dey two weeks old?

Brokers dey take snapshot of short positions only on FINRA settlement dates wey happen twice every month. Dem file the totals a few business days later. FINRA come distribute the compiled file roughly eight business days after the settlement date. Across the settlements wey this database receive as live deliveries, the full pipeline take 10 to 26 days, with median of 16 days.

How brokers dey calculate and report short interest?

Each broker-dealer dey count the shares wey customers and the firm hold short in their accounts as of the settlement date. Dem aggregate the shares for each security, then file the total with FINRA. FINRA dey add the reports from all member firms into one number for each security, 22480 of them in the 2026-08-14 print. Na regulatory tally of positions be this, no be count of trades.

Reporting cycle different for NYSE, Nasdaq or OTC stocks?

No. The same settlement schedule wey happen twice every month, plus the same compilation-and-dissemination cycle, apply across US listing venues. The exchanges dey republish from the FINRA file instead of producing their own count. The venue wey list a stock no change how old its short interest number be.

Wetin be good or bad short interest percentage?

No threshold dey make a stock good or bad holding, and high reading no be forecast. Crowding measures show how large a short position be compared with the stock's tradable volume. GameStop latest print get 5.31 reported days to cover, compared with low single digits for most liquid names. See the current crowding leaders for the distribution.

The reporting lag matter for short squeezes?

Na for short squeezes the lag matter pass. For the 2021-01-15 GameStop settlement, the stock move 456.3% between the measurement date and the eight-session mark wey approximate publication. By the 2021-01-29 print, the short position don fall to 21.4 million shares. Public data no dey confirm squeeze crowding until after the event.


Every panel above come with the SQL wey produce am. Open any one to audit the numbers, or run the settlement calendar on the Strasmore terminal.

#short interest#data quality#settlement#reporting lag#short squeeze