Back to projects

AI IPO Analysis Assistant

The problem

I invest in Indian IPOs and apply for them myself. I wanted to know if you can actually predict whether an IPO will be profitable using the same public data you see when you apply.

What I did

I trained on 559 IPOs from 2010 to 2025 with six features: total subscription, QIB subscription, HNI subscription, HNI share, RII share, and issue size. I didn't use GMP even though it's probably the strongest predictor. It wasn't in my dataset, and I'm not even sure it's a legit number anyway. Sector and market sentiment were left out too, they're ideas for later.

My first attempt was a neural net on a smaller dataset of 319 rows. It overfit badly, 80.6% on training, 62.5% on validation. A neural net needs way more than 190 rows to work well. Trees handle small data better.

Then I tried XGBoost without tuning it. It did worse than plain logistic regression, 0.609 AUC versus 0.714. Once I added better features, tuned it, and used 5-fold cross-validation, it hit 0.804.

I almost dropped a feature called Total_Sub because I thought it was redundant. It turned out to be the most important one, 27.8% of the model's decisions.

Architecture

flowchart LR
    FE["Frontend (Custom UI)"] --> API["FastAPI /api/v1/predict"]
    API --> XG["XGBoost + SHAP Predictor"]
    XG --> LLM["LLM Report (Groq / Gemini / OpenRouter)"]

What came of it

It's live, and nobody's used it but me so far. It's a portfolio project and I'm still testing it myself.

  • 559 IPOs, 2010 to 2025, six features
  • ROC-AUC 0.804, F1 0.835
  • 47 tests, all passing
  • Weak spot: catching non-profitable IPOs, F1 stuck at 0.55

Next time

I'd spend more time up front looking for a better dataset before building anything. More data would help most at that weak spot.