US Stock Screener - Backtested Opportunity Score avatar

US Stock Screener - Backtested Opportunity Score

Pricing

Pay per usage

Go to Apify Store
US Stock Screener - Backtested Opportunity Score

US Stock Screener - Backtested Opportunity Score

Scores US stocks 0-100 on trend, momentum, fundamentals and news sentiment with a backtest-calibrated model, and returns a ranked verdict per ticker with the reasons behind it. Optional SEC EDGAR insider-buying and 13F fund-ownership layer. No API key.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Mustafa Abut

Mustafa Abut

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

US Stock Screener — Backtested Opportunity Score

Most finance scrapers hand you fields. This one hands you a ranked shortlist with reasons.

Every US ticker you feed it gets a 0–100 opportunity score built from trend, 6-month momentum, fundamentals and news sentiment, a verdict (STRONG_CANDIDATE / CANDIDATE / WATCHLIST / WEAK), and a plain-English list of why it scored that way. The weights are not guesses — they come from a 5-year walk-forward backtest (method and numbers below).

Optional second layer, straight from SEC EDGAR: open-market insider buying and selling (Form 4) and which of 19 well-known managers hold the stock (13F).

No API key. No login. No data-vendor contract.


What you get per stock

{
"symbol": "NVDA",
"companyName": "NVIDIA Corporation",
"sector": "Technology",
"price": 225.07,
"score": 90.6,
"verdict": "STRONG_CANDIDATE",
"technicalScore": 82.0,
"fundamentalScore": 100.0,
"newsScore": 85.0,
"momentum6mPct": 34.66,
"distanceFrom52wHighPct": -4.31,
"rsi14": 55.2,
"goldenCross": true,
"forwardPE": 14.35,
"peg": 0.48,
"roePct": 117.21,
"debtToEquity": 0.17,
"analystUpsidePct": 45.6,
"analystRating": 1.3,
"signalCodes": ["ABOVE_SMA200", "GOLDEN_CROSS", "MOMENTUM_STRONG", "ATTRACTIVE_PEG"],
"signals": [
"Price is above the 200-day moving average (long-term trend is positive)",
"Golden cross active (SMA50 > SMA200)",
"Strong 6-month momentum (35%)",
"Attractive PEG (0.48) - cheap relative to growth",
"Analyst consensus: STRONG BUY"
]
}

signalCodes is the stable machine-readable contract — branch on it in your pipeline or agent. signals is the same thing in words, for humans and for LLM context.

Full field list: scores and verdict · price, market cap, sector, industry · SMA50/SMA200, RSI14, MACD histogram, 6-month momentum, distance from the 52-week high, annualised volatility, golden cross · revenue and earnings growth, net margin, ROE, debt/equity, forward P/E, PEG, free cash flow, analyst target upside and consensus rating · news counts and the top headlines with sentiment and links · recent candlestick patterns · optional insider and 13F block.


Inputs

FieldWhat it does
universecurated (~80 liquid large caps, fast), custom (your own list), sp500, nasdaq100
symbolsYour tickers when universe is custom — Yahoo notation, share classes with a dash (BRK-B)
sectorScan one curated sector only (Technology, Financials, Healthcare, Energy, …)
maxSymbolsHard cap per run — keeps cost and runtime predictable
minScoreReturn only stocks at or above this score
verdictsReturn only these verdicts, e.g. just STRONG_CANDIDATE
includeNews14-day headline sentiment (15% of the score) — off makes runs faster
includeInsiderDataSEC Form 4 insider buys/sells
insiderWindowDaysForm 4 lookback, default 90 days
includeFundHoldings13F check against 19 tracked managers
concurrencyParallel fetches, 1–8
proxyConfigurationRecommended for runs over ~50 tickers

How you are charged. One event per stock successfully scored, plus one event per stock when the SEC insider layer runs. Tickers with too little data are never charged. minScore and verdicts shape the output for free — they do not change the price, because the scoring work has already happened. Cap your spend per run with maxSymbols.


How the score is built

ComponentWeightContents
Technical40%6-month momentum (40 pts), trend filter — above SMA200 + golden cross (25 pts), distance from the 52-week high / pullback inside an uptrend (20 pts), RSI (10 pts), MACD (5 pts)
Fundamental45%Revenue and earnings growth, net margin, ROE, debt/equity, forward P/E, PEG, free cash flow, analyst target and consensus
News15%Positive/negative keyword sentiment over the last 14 days of headlines

Verdict thresholds: ≥70 and both technical and fundamental ≥55 → STRONG_CANDIDATE · ≥60 → CANDIDATE · ≥48 → WATCHLIST · below → WEAK.

The bias is explicitly medium-to-long-term, not day trading: overbought extremes (RSI > 78) are penalised, and a 5–25% pullback inside an intact uptrend is rewarded as an entry setup rather than treated as weakness.

The backtest behind the weights

Over 5 years, 84 tickers and 3,523 monthly samples, the technical score was recomputed at each historical month using only data available on that date (no look-ahead), then compared with the following 6- and 12-month return versus SPY.

  • Stocks scoring 70+ beat SPY by +8.4% on average over 6 months (win rate 56%); the in-sample 12-month figure was +17.3%, but see the caveat below — the 12-month edge did not survive out-of-sample testing. Treat this as a 6-month-horizon signal.
  • Before calibration the model could not separate winners from losers at all (information coefficient ≈ 0.03). Momentum was the only component with real predictive power, so it carries the most weight; RSI and MACD were cut to 10 and 5 points because their standalone IC was near zero.
  • The "close to the 52-week high" bonus was shrunk after it showed negative correlation with forward excess return, while pullbacks inside an uptrend showed positive.
  • Out-of-sample check: on the 2017–2022 period the calibration never saw, the calibrated model still beat the pre-calibration version (IC 0.036 vs 0.006; top-quintile excess return +5.8% vs +3.9%).
  • Year-by-year: IC positive in 7 of 9 years. The weak years were 2018 and 2021 — signals issued ahead of a bear market, the well-known failure mode of momentum. No catastrophic year (worst top-quintile excess return −1.0%).
  • Parameter sensitivity: moving the momentum and 52-week-high thresholds ±30% keeps IC in a 0.038–0.050 band, so the result is not a knife-edge fit.
  • Candlestick patterns are detected and reported but deliberately excluded from the score — in a 10-year test only bullish engulfing beat the baseline meaningfully (+4.1% / 63 days vs +2.1%), and the rest carried no information.

What the backtest does not cover. Only the technical component can be tested historically — Yahoo publishes no archive of past fundamentals or headlines, so the fundamental (45%) and news (15%) weights are reasoned, not backtested. The test universe is today's constituent list, so it carries survivorship bias that free data cannot fully remove (no point-in-time universe). Transaction costs and T+1 execution lag are not modelled. And the edge is concentrated in the 6-month horizon; the 12-month out-of-sample IC was ≈ 0.

So this validates relative ranking over ~6 months, not absolute return. It is evidence that the ordering carries information — not a promise about any future period.


Typical uses

  • Weekly shortlist. Scan the S&P 500 with minScore: 70, get back only what clears the bar, ranked.
  • Watchlist triage. Feed your own 30 tickers and see which ones the model still likes and, more usefully, which signals broke.
  • Agent tool. Small input schema, stable signalCodes, one verdict field — cheap for an LLM agent to call and reason over without parsing 80 raw metrics.
  • Insider confirmation. Run the shortlist again with includeInsiderData to see whether insiders were buying alongside the score.
  • Dashboards and sheets. Export to JSON, CSV or Excel, or pull the dataset over the Apify API.

Limitations — read these

  • Data comes from Yahoo Finance and SEC EDGAR. Yahoo's summary fundamentals are occasionally stale or missing; a missing metric lowers its weight instead of penalising the company, and a company with no fundamental data at all scores a neutral 50.
  • Needs about a year of price history (220 sessions). Recent IPOs are skipped and reported in the run summary.
  • News sentiment is keyword-based, not a language model. The Yahoo feed mixes in loosely related market stories, which is exactly why news is only 15% of the score.
  • Insider (Form 4) data lags ~2 days; 13F data lags up to 45 days and only covers the 19 tracked managers, not every holder.
  • The insider layer is reported next to the score, never folded into it, because the backtest that set the weights did not include SEC data.
  • Yahoo rate-limits datacenter IP ranges. Use the proxy option and keep concurrency moderate on large universes.

Disclaimer

This Actor is an automated screening tool. It is not investment advice, not a recommendation to buy or sell any security, and not a guarantee of any outcome. Backtested results do not predict future performance. Do your own research and consider your own circumstances before making any investment decision.

Notes

  • Data sources: Yahoo Finance (prices, fundamentals, headlines), SEC EDGAR (Form 4, 13F-HR), Wikipedia (index constituent lists).
  • The SEC requires a contact address in the User-Agent of every request. Set the SEC_CONTACT_EMAIL environment variable if you run this Actor as your own copy.
  • Found a bug or want another market or metric? Open an issue on the Actor's Issues tab.