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.
| semestre | numero_debutti | rendimento_mediano_primo_giorno_pct | chiusi_sotto_il_prezzo_pct | chiusi_sopra_il_prezzo_pct |
|---|---|---|---|---|
| luglio-dicembre 2025 | 104 | 8.9 | 27.9 | 68.3 |
| gennaio-giugno 2026 | 72 | 5.2 | 30.6 | 62.5 |
- Rows × columns
- 2 × 5
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
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)
Lavora con questi dati nel tuo assistente IA
Si apre pronto per le query, con i dati di questa pagina. Gratis, senza account.