What I Learned Building an Equity Research Dashboard

By Niko Hoogeveen • May 6, 2026

I am a software engineer, not an analyst. I started building a stock dashboard because reading about equity research was not teaching me much, and building the tool forced me to answer questions I had been skimming past — what exactly is being compared when someone says a company beat expectations, and over what window does that beat show up in the price.

Earnings overlays changed what I saw

A price chart on its own is close to useless for learning. The moment I overlaid earnings dates onto the price series, the chart started to have structure: gaps clustered around specific dates, and the size of the move stopped looking random. It became obvious that the interesting quantity is not the reported number but the distance between the reported number and what was expected.

That led directly to plotting EPS and revenue estimates against actuals with the percentage surprise, and then to the observation that surprise direction and price direction disagree often enough to be genuinely interesting. Guidance and positioning going into the print matter as much as the print.

Valuation is context, not a signal

I added P/E, forward P/E, EV/EBITDA, and free cash flow multiples last, and my mental model of them shifted while doing it. In isolation a multiple says almost nothing. Placed next to the same company's own history and next to the surprise data, it starts to describe what the market is currently willing to pay for a given growth expectation — which is a much more useful frame than trying to read it as cheap or expensive.

The architecture is deliberately boring

  • A scheduled GitHub Actions workflow fetches market and fundamental data on a fixed cadence.
  • The workflow writes plain JSON files into the repository. Data changes are therefore version-controlled and diffable, which has caught upstream data errors more than once.
  • The site is a Next.js static export. There is no server, no database, and no runtime API dependency.
  • Because every page is prerendered, the dashboard pages are fully crawlable and load without waiting on a network round trip.

The cost of this stack is zero and the operational burden is close to it. The trade-off is that data is as fresh as the last scheduled run, which for a learning tool is entirely acceptable. If I needed intraday data the design would have to change, but I would want a much clearer reason before accepting a server.

The real takeaway

Building the tool taught me more about equity research than reading about it did, and it taught me something about software too: the constraint of shipping a static site forced better decisions than an unconstrained architecture would have. You can see the result on the dashboard.

About the author

Niko Hoogeveen is a software engineer based in Toronto, Ontario. He builds custom Moodle and web applications at Catalyst IT Canada and takes on independent engagements through Niko Hoogeveen Consulting. Read more about Niko Hoogeveen, browse other articles, or get in touch.