Skip to main content
← All Projects

Case Study

Stock Screening & Analytics Platform

Ranks 5,500+ stocks daily using a composite scoring model with real-time portfolio strategy simulation.

Next.jsTypeScriptPostgreSQLPrismaTradingView ChartsInngestOpenAI APIVercel
OnTheMoney.ai screener interface showing stock rankings with composite scores, sector ETF performance, and multi-factor analysis columns
01

Problem

Retail investors and small teams lack access to systematic, quantitative screening tools. Consensus estimates are slow-moving, and most free screeners offer static filters without real analytical depth. I wanted a platform that combined fundamental, growth, and technical signals into a single composite view — updated daily and filterable in real time.

02

Approach

Built a three-factor scoring model that calculates z-scores across value, growth, and technical dimensions for every stock in the universe. Scores are computed dynamically at query time using PostgreSQL window functions, so users can toggle between industry-relative, sector-relative, and market-wide comparisons instantly. Added layers for relative strength rankings, earnings quality, capital discipline, and pivot-based risk/reward analysis. The screener feeds into multiple portfolio strategies — each with historical tracking, daily rotation logs, and backtest analytics.

03

Result

The platform processes the full stock universe nightly through an automated pipeline, serves real-time rankings with sub-500ms query times, and runs four distinct portfolio strategies with out-of-sample performance tracking. It replaced a collection of spreadsheets and manual workflows with a single system that handles data ingestion, scoring, and presentation end to end.

04

What I Learned

The scoring model itself was the easier part. The real complexity was in the data pipeline — handling corporate actions, rate limits, stale data detection, and making the nightly scrape resilient enough to run unattended. Event-driven architecture (small chained jobs instead of one long process) was the key to reliability at scale.