Technical Screener for 900+ Stocks

A client needed to track 900 stocks with indicators no standard screening tool offered. I built it from scratch.

900+Stocks Tracked
<10minFull Refresh
99%+Uptime
0.01%Indicator Variance

The problem

The client's strategy used RS Rating, custom Wave indicators, and Delta values. No off-the-shelf screener calculated them. They needed all three across 900 stocks, updated on demand, with free-tier data APIs capped at 250-500 calls per day. Three hard problems: getting the data, doing the math, and keeping everything fresh without manual work.

The data solution

One API was not enough, so I built a multi-API fallback. Financial Modeling Prep runs first because it is faster. When it hits its daily limit or returns rate-limit errors, the system automatically switches to Twelve Data. The result: 99%+ uptime, because when one source fails, the other takes over without anyone noticing.

The indicators

  • RS Rating (1-99): each stock's performance weighed against the S&P 500 across four quarters, with the most recent quarter weighted 40%.
  • Wave indicators: momentum built from layered EMAs over HLC3 prices, producing Fast Wave, Slow Wave, and Delta.
  • Buy and sell signals generated on Fast/Slow Wave crossovers, shown with color coding so traders scan hundreds of stocks in seconds.
  • Accuracy verified against professional platforms within 0.01% variance.

Built for scale

Processing 900 stocks one by one would take hours, so the system works in batches of 100 with single bulk upserts into PostgreSQL, updating hundreds of records in milliseconds. Heavy calculations run in Google Cloud Functions that scale up during refreshes and cost nothing when idle. Database indexing and query optimization cut database calls by 900x. Individual stock updates finish in 2-3 seconds, and a full 900-stock refresh completes in under 10 minutes.

The result

Traders filter a 900-stock universe down to 10-20 candidates in seconds using stacked filters: RS Rating range, wave values, Delta, price bands, and signals, all working together. Bulk operations let the client add, refresh, or delete stocks in one click. The stack: Python, Django, PostgreSQL, Google Cloud Functions, Pandas, and Tailwind.

Want the full technical breakdown with code? Read the complete write-up on Medium.