{"id":41728,"date":"2026-07-11T05:27:10","date_gmt":"2026-07-11T03:27:10","guid":{"rendered":"https:\/\/www.graviton.at\/letterswaplibrary\/using-the-ipogrid-api-to-extract-ipo-features-for-financial-modeling\/"},"modified":"2026-07-11T05:27:10","modified_gmt":"2026-07-11T03:27:10","slug":"using-the-ipogrid-api-to-extract-ipo-features-for-financial-modeling","status":"publish","type":"post","link":"https:\/\/www.graviton.at\/letterswaplibrary\/using-the-ipogrid-api-to-extract-ipo-features-for-financial-modeling\/","title":{"rendered":"Using The IPOGrid API To Extract IPO Features For Financial Modeling"},"content":{"rendered":"<p><!-- SC_OFF --><\/p>\n<div class=\"md\">\n<h1>A lot of IPO research starts as manual filing review: S-1s, F-1s, amendments, 424B4s, effectiveness notices, ticker changes, exchange hints, and post-listing performance. That works for one company. It breaks down if you want to build watchlists, backtests, screens, or systematic models.<\/h1>\n<p>The IPOGrid API is meant to make that workflow structured.<\/p>\n<p>Docs:<\/p>\n<p><a href=\"https:\/\/ipogrid.com\/docs\">https:\/\/ipogrid.com\/docs<\/a><\/p>\n<p>API reference:<\/p>\n<p><a href=\"https:\/\/ipogrid.com\/api\/v1\/docs\">https:\/\/ipogrid.com\/api\/v1\/docs<\/a><\/p>\n<p>OpenAPI:<\/p>\n<p><a href=\"https:\/\/ipogrid.com\/api\/v1\/openapi.json\">https:\/\/ipogrid.com\/api\/v1\/openapi.json<\/a><\/p>\n<h1>What you can pull<\/h1>\n<p>IPOGrid exposes structured company, filing, news, chart, article, and outcome data. The useful modeling chain is usually:<\/p>\n<p>companies \u2192 filings \u2192 extracted terms \/ consensus \u2192 outcomes \/ news<\/p>\n<p>That means you can start with an issuer, resolve it to a durable CIK, add filing events, add deal terms, then join to post-listing outcomes. IPOGrid\u2019s docs specifically recommend using CIK as the durable issuer key because tickers can drift, collide, or point to units and warrants instead of the common-stock IPO.<\/p>\n<h1>Example feature families<\/h1>\n<p>Here are the kinds of features I\u2019d extract for a financial model.<\/p>\n<h1>Issuer identity features<\/h1>\n<p>CIK<\/p>\n<p>issuer name<\/p>\n<p>ticker hint<\/p>\n<p>resolved ticker<\/p>\n<p>exchange<\/p>\n<p>sector<\/p>\n<p>issuer kind<\/p>\n<p>market family<\/p>\n<p>deal type<\/p>\n<p>operating company vs SPAC vs fund vs follow-on<\/p>\n<p>These are basic filters, but they matter. Mixing operating IPOs, SPACs, funds, direct listings, and follow-ons in the same model is usually garbage-in, garbage-out.<\/p>\n<h1>Filing timeline features<\/h1>\n<p>first registration date<\/p>\n<p>latest amendment date<\/p>\n<p>number of amendments<\/p>\n<p>days from initial filing to effectiveness<\/p>\n<p>days from latest amendment to pricing<\/p>\n<p>presence of S-1, F-1, S-11, 424B4, 424B1, 8-A, EFFECT<\/p>\n<p>final prospectus filed or not<\/p>\n<p>recent filing activity count<\/p>\n<p>filing recency bucket<\/p>\n<p>The docs call out SEC filing events such as registrations, amendments, final prospectuses, effectiveness notices, and 8-A registrations as explicit research surfaces.<\/p>\n<h1>Deal term features<\/h1>\n<p>offer price<\/p>\n<p>price range low<\/p>\n<p>price range high<\/p>\n<p>range midpoint<\/p>\n<p>shares offered<\/p>\n<p>gross proceeds<\/p>\n<p>underwriters<\/p>\n<p>use of proceeds<\/p>\n<p>unit details<\/p>\n<p>warrant terms<\/p>\n<p>range revision direction<\/p>\n<p>range revision magnitude<\/p>\n<p>priced above range \/ in range \/ below range<\/p>\n<p>IPOGrid exposes extracted offer price, range, shares, proceeds, underwriters, unit details, warrants, and use-of-proceeds fields so you do not have to reopen every filing manually.<\/p>\n<h1>Consensus \/ listing features<\/h1>\n<p>resolved listing date<\/p>\n<p>resolved exchange<\/p>\n<p>resolved offer price<\/p>\n<p>resolved shares<\/p>\n<p>resolved proceeds<\/p>\n<p>latest terms snapshot<\/p>\n<p>classification<\/p>\n<p>consensus ticker<\/p>\n<p>consensus listing fields<\/p>\n<p>The API supports company lookups with includes such as <code>latest_terms<\/code>, <code>classification<\/code>, <code>consensus<\/code>, <code>filings<\/code>, <code>news<\/code>, and <code>financial_snapshot<\/code>.<\/p>\n<h1>Outcome features<\/h1>\n<p>trading start date<\/p>\n<p>first close<\/p>\n<p>1D return<\/p>\n<p>week-one close<\/p>\n<p>week-one return<\/p>\n<p>current performance<\/p>\n<p>offer-to-first-close return<\/p>\n<p>offer-to-week-one return<\/p>\n<p>IPOGrid has outcome rows for first close, 1D return, week-one close, and post-listing performance.<\/p>\n<h1>Market context features<\/h1>\n<p>gross proceeds by week<\/p>\n<p>prospectus counts<\/p>\n<p>final prospectus counts<\/p>\n<p>first-day returns by sector<\/p>\n<p>filing activity by form family<\/p>\n<p>sector-level IPO volume<\/p>\n<p>recent IPO temperature<\/p>\n<p>The chart API supports metrics such as gross proceeds, prospectus counts, final prospectus counts, and first-day returns grouped by sector, form family, or status over fixed or trailing windows.<\/p>\n<h1>Basic API calls<\/h1>\n<p>Use an API key for the richer endpoints:<\/p>\n<pre><code>export IPOGRID_API_KEY=\"your_key_here\" <\/code><\/pre>\n<p>Find companies and include the useful joins:<\/p>\n<pre><code>curl -H \"Authorization: Bearer $IPOGRID_API_KEY\"  \"https:\/\/ipogrid.com\/api\/v1\/companies?scope=all&amp;kind=operating&amp;include=latest_terms,classification,consensus\" <\/code><\/pre>\n<p>Fetch company detail by ticker or CIK:<\/p>\n<pre><code>curl -H \"Authorization: Bearer $IPOGRID_API_KEY\"  \"https:\/\/ipogrid.com\/api\/v1\/companies\/spcx?include=filings,news,latest_terms,classification,consensus,financial_snapshot\" <\/code><\/pre>\n<p>Pull recent final prospectus filings:<\/p>\n<pre><code>curl -H \"Authorization: Bearer $IPOGRID_API_KEY\"  \"https:\/\/ipogrid.com\/api\/v1\/filings?form_type=424B4&amp;filing_date_from=2026-06-01&amp;include=company,terms\" <\/code><\/pre>\n<p>Pull recent outcomes:<\/p>\n<pre><code>curl -H \"Authorization: Bearer $IPOGRID_API_KEY\"  \"https:\/\/ipogrid.com\/api\/v1\/outcomes?trading_start_date_from=2026-06-01&amp;limit=100\" <\/code><\/pre>\n<p>Pull public articles without auth:<\/p>\n<pre><code>curl \"https:\/\/ipogrid.com\/api\/v1\/articles?limit=30\" <\/code><\/pre>\n<p>The public article feed works without authentication; deeper company, filing, and outcome data uses API key bearer auth.<\/p>\n<h1>Backtest shape<\/h1>\n<p>A clean IPO backtest should freeze the cohort before looking at outcomes.<\/p>\n<p>For example:<\/p>\n<ol>\n<li>Select operating-company IPOs only.<\/li>\n<li>Require a final prospectus or effective status.<\/li>\n<li>Exclude SPACs, funds, vehicles, direct listings, and follow-ons.<\/li>\n<li>Resolve each issuer to CIK.<\/li>\n<li>Pull only filing and term data available as of the cohort date.<\/li>\n<li>Join outcomes after trading starts.<\/li>\n<li>Measure first-day and week-one returns against the offer price.<\/li>\n<\/ol>\n<p>IPOGrid\u2019s research workflow docs make the same basic point: freeze the cohort definition first, then join market bars or outcomes only after the cohort date to avoid leaking future information.<\/p>\n<h1>Example model table<\/h1>\n<p>A row in a modeling dataset might look like this:<\/p>\n<pre><code>cik company_name issuer_kind sector exchange form_family initial_filing_date latest_amendment_date final_prospectus_date effective_date trading_start_date days_initial_to_effective days_final_prospectus_to_trade amendment_count offer_price range_low range_high range_midpoint priced_vs_range shares_offered gross_proceeds underwriter_count has_warrants is_unit_deal first_close day1_return_pct week1_close week1_return_pct sector_ipo_count_26w sector_avg_day1_return_26w <\/code><\/pre>\n<p>That table can feed normal financial modeling workflows: screening, regression, ranking, clustering, risk controls, or event studies.<\/p>\n<h1>Caveats<\/h1>\n<p>Do not treat latest terms as historical truth. Latest snapshots are useful for current watchlists, but historical tests should use the filings and market data that existed around the test date. IPOGrid\u2019s freshness docs explicitly warn not to silently fill missing historical fields with today\u2019s values.<\/p>\n<p>Also separate clocks carefully. SEC filing dates, SEC acceptance times, pricing dates, and trading dates are different events. A Friday filing, Monday effectiveness notice, and Tuesday first trade should not be collapsed into one timestamp.<\/p>\n<p>Finally, ticker logic needs care. Units, warrants, and share classes can trade separately. A ticker hint is not always the same thing as the security your model is trying to study. For anything serious, resolve to CIK first, then verify the traded instrument.<\/p>\n<h1>Practical use cases<\/h1>\n<p>A few useful models you can build from this:<\/p>\n<p>IPO readiness screen: find effective or recently amended operating IPOs with exchange listing signals and extracted terms.<\/p>\n<p>Pricing-change model: compare initial range, revised range, final offer price, and sector conditions.<\/p>\n<p>Day-one return model: join final prospectus terms to first close and sector-level IPO context.<\/p>\n<p>Week-one fade model: compare first close to week-one close.<\/p>\n<p>Filing-momentum model: count amendments, form changes, and final prospectus timing.<\/p>\n<p>Sector heat model: use chart data to track issuance volume, proceeds, and first-day returns by sector.<\/p>\n<p>The important part is not just having IPO data. It is having issuer, filing, term, and outcome data joined in a way that does not leak future information into the model.<\/p>\n<\/div>\n<p><!-- SC_ON -->   submitted by   <a href=\"https:\/\/www.reddit.com\/user\/ipogrid\"> \/u\/ipogrid <\/a> <br \/> <span><a href=\"https:\/\/www.reddit.com\/r\/datasets\/comments\/1ut80mf\/using_the_ipogrid_api_to_extract_ipo_features_for\/\">[link]<\/a><\/span>   <span><a href=\"https:\/\/www.reddit.com\/r\/datasets\/comments\/1ut80mf\/using_the_ipogrid_api_to_extract_ipo_features_for\/\">[comments]<\/a><\/span><\/p><div class='watch-action'><div class='watch-position align-right'><div class='action-like'><a class='lbg-style1 like-41728 jlk' href='javascript:void(0)' data-task='like' data-post_id='41728' data-nonce='9de69db8d5' rel='nofollow'><img class='wti-pixel' src='https:\/\/www.graviton.at\/letterswaplibrary\/wp-content\/plugins\/wti-like-post\/images\/pixel.gif' title='Like' \/><span class='lc-41728 lc'>0<\/span><\/a><\/div><\/div> <div class='status-41728 status align-right'><\/div><\/div><div class='wti-clear'><\/div>","protected":false},"excerpt":{"rendered":"<p>A lot of IPO research starts as manual filing review: S-1s, F-1s, amendments, 424B4s, effectiveness notices, ticker&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[85],"tags":[],"class_list":["post-41728","post","type-post","status-publish","format-standard","hentry","category-datatards","wpcat-85-id"],"_links":{"self":[{"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/posts\/41728","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/comments?post=41728"}],"version-history":[{"count":0,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/posts\/41728\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/media?parent=41728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/categories?post=41728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.graviton.at\/letterswaplibrary\/wp-json\/wp\/v2\/tags?post=41728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}