STRASMORE/EXPLORE 3,293 QUERIES

cohort_stats

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-18, from what-is-an-ipo.

as of table 2×5read in context →
cohort_stats — 2 rows by 5 columns, computed from US exchange, SIP and OPRA data.
semestrenumero_debuttirendimento_mediano_primo_giorno_pctchiusi_sotto_il_prezzo_pctchiusi_sopra_il_prezzo_pct
luglio-dicembre 20251048.927.968.3
gennaio-giugno 2026725.230.662.5
Rows × columns
2 × 5
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for cohort_stats, derived from the stored result.
ColumnTypeRangeNotes
semestre text 2 distinct values
numero_debutti number 72 to 104
rendimento_mediano_primo_giorno_pct number 5.2 to 8.9 percent
chiusi_sotto_il_prezzo_pct number 27.9 to 30.6 percent
chiusi_sopra_il_prezzo_pct number 62.5 to 68.3 percent

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH
    offerte AS
    (
        SELECT
            ticker,
            argMax(toDate(listing_date), _ingest_time)         AS data_quotazione,
            argMax(toFloat64(final_issue_price), _ingest_time) AS prezzo_offerta
        FROM global_markets.stocks_ipos
        WHERE toDate(listing_date) >= '2025-07-01'
          AND toDate(listing_date) <  '2026-07-01'
          AND lower(ifNull(ipo_status, '')) NOT IN ('pending', 'postponed', 'withdrawn', 'rumor', 'direct_listing_process')
          AND final_issue_price >= 4
          AND lower(ifNull(issuer_name, '')) NOT LIKE '%acquisition%'
          AND lower(ifNull(security_description, '')) NOT LIKE '%unit%'
          AND lower(ifNull(security_description, '')) NOT LIKE '%warrant%'
          AND ticker NOT IN ('SPCX')
        GROUP BY ticker
    ),
    prime_sedute AS
    (
        SELECT
            o.ticker                           AS simbolo,
            o.data_quotazione                  AS quotato_il,
            o.prezzo_offerta                   AS prezzo_coll,
            argMin(toFloat64(a.close), a.date) AS prima_chiusura
        FROM global_markets.stocks_daily_aggs AS a
        INNER JOIN offerte AS o ON a.ticker = o.ticker
        WHERE a.ticker IN (SELECT ticker FROM offerte)
          AND a.date >= '2025-07-01'
          AND a.date <  '2026-07-10'
          AND a.date >= o.data_quotazione
          AND a.date <= o.data_quotazione + 5
          AND a.volume > 0
        GROUP BY o.ticker, o.data_quotazione, o.prezzo_offerta
    )
SELECT
    if(quotato_il < toDate('2026-01-01'), 'luglio-dicembre 2025', 'gennaio-giugno 2026') AS semestre,
    count()                                                                AS numero_debutti,
    round(quantileExact(0.5)(prima_chiusura / prezzo_coll * 100 - 100), 1) AS rendimento_mediano_primo_giorno_pct,
    round(countIf(prima_chiusura < prezzo_coll) / count() * 100, 1)        AS chiusi_sotto_il_prezzo_pct,
    round(countIf(prima_chiusura > prezzo_coll) / count() * 100, 1)        AS chiusi_sopra_il_prezzo_pct
FROM prime_sedute
GROUP BY semestre
ORDER BY min(quotato_il)
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.