NL/Screen snapshot · October 29, 2026 close · 100 large US stocks Code on GitHub
Static demo Output of the Rails app for five example screens, on real daily prices (Yahoo chart API). The live app streams results as they're found; run it with bin/dev.

Here's what I understood

RSI under 40, price above the 200-day moving average
Show spec (the contract shared with EquityScout)
{
  "version": 1,
  "observation": "RSI under 40, price above the 200-day moving average",
  "universe": {},
  "conditions": [
    {
      "field": "rsi14",
      "op": "<",
      "value": 40
    },
    {
      "field": "close",
      "op": ">",
      "ref": "sma200"
    }
  ],
  "rank": [
    {
      "field": "rsi14",
      "direction": "asc",
      "weight": 1
    },
    {
      "field": "pct_vs_sma200",
      "direction": "desc",
      "weight": 1
    }
  ],
  "top_n": 5,
  "unmapped": [],
  "notes": ""
}
Parsed by rules v2; raw proposal before validation
{
  "conditions": [
    {
      "field": "rsi14",
      "op": "<",
      "value": 40
    },
    {
      "field": "close",
      "op": ">",
      "ref": "sma200"
    }
  ],
  "unmapped": [],
  "rank": [],
  "universe": {},
  "top_n": null
}
Matches 0
Scanned 100 / 100
Status Done

Funnel

Step In Passed Failed No data
100 stocks with prices 100 100 0 0
Daily RSI (14) under 40 100 11 89 0
Price above its 200-day average 11 0 11 0

Ranked results

Ranked by RSI (14-day) (lowest first) and Price vs 200-day average (highest first). Score = weighted mean of percentile ranks among the matches (0 to 1); ties go to the more liquid name. Top 5 highlighted.

# Ticker Score RSI (14-day) Price 200-day average Price vs 200-day average Why it matched

← All example screens