Oversold Scan
Assets in oversold conditions with per-asset historical context
Finds assets where RSI is in oversold or deep_oversold territory. Each result includes historical behavioral context for that specific asset — how long oversold streaks typically last, how rare the current conditions are, and whether the broader sector agrees.
Strategy
Mean reversion / bounce. Pre-computed, cached, completes in 1 API call.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
asset_class | string | all | stock, crypto, etf, or all |
sector | string | none | Filter by sector (case-insensitive). Returns a dedicated top-50 for that sector. Values: Technology, Healthcare, Financial Services, Consumer Cyclical, Industrials, Consumer Defensive, Energy, Utilities, Real Estate, Communication Services, Basic Materials, Crypto, ETF |
market_cap_tier | string | none | Filter by market cap tier: nano, micro, small, mid, large, mega, ultra_mega |
min_severity | string | oversold | oversold or deep_oversold |
sort_by | string | severity | severity, days_oversold, or condition_percentile |
limit | integer | 20 | Max results. Max: 100 |
timeframe | string | daily | daily or weekly |
date | string | latest | Historical snapshot. Plus+ |
Response Fields
Free Tier Free
Compact subset — enough to discover and rank opportunities:
| Field | Type | Description |
|---|---|---|
ticker | string | Asset symbol |
asset_class | string | stock, crypto, or etf |
rsi_zone | string | oversold or deep_oversold |
condition_rarity | string | How rare the current conditions are: extremely_rare, very_rare, rare, uncommon, occasional, or common |
sector | string | Sector or category |
market_cap_tier | string | Market cap tier: nano to ultra_mega |
valuation_zone | string | Stocks only. Fundamental valuation band |
Plus Plus
All free fields plus:
| Field | Type | Description |
|---|---|---|
stochastic_zone | string | Confirms or diverges from RSI |
days_in_oversold | integer | Consecutive days in oversold |
oversold_streaks_count | integer | Total oversold streaks in history |
volume_context | string | spike, above_average, normal, or below_average |
volume_ratio_band | string | Today's volume vs. 50-day average |
trend_context | string | Broader trend direction |
nearest_support_distance | string | Proximity to nearest support level |
sector_rsi_zone | string | Sector's aggregate RSI zone |
earnings_proximity | string | Stocks only. Next earnings timing |
growth_zone | string | Stocks only. YoY revenue/EPS growth trend |
analyst_consensus | string | Stocks only. Aggregate analyst recommendation |
rsi_zone_stability | string | Band stability: fresh, holding, established, or volatile |
rsi_zone_flips_recent | integer | Number of recent RSI zone flips |
Pro Only Pro
All Plus fields plus:
| Field | Type | Description |
|---|---|---|
accumulation_state | string | Accumulation/distribution state — institutional flow signal |
historical_median_oversold_days | float | Median oversold streak for this asset |
historical_max_oversold_days | integer | Longest oversold streak for this asset |
sector_agreement | boolean | Is asset's condition consistent with sector? |
sector_oversold_count | integer | Sector peers currently oversold |
sector_total_count | integer | Total sector peers |
Envelope
| Field | Type | Description |
|---|---|---|
matches | array | Array of match objects |
total_scanned | integer | Total assets scanned |
match_count | integer | Total matches (before limit) |
data_status | string | "eod" |
Example
GET /v1/scan/oversold?asset_class=stock&limit=1
{
"matches": [{
"ticker": "INTC",
"asset_class": "stock",
"rsi_zone": "deep_oversold",
"stochastic_zone": "deep_oversold",
"days_in_oversold": 8,
"historical_median_oversold_days": 4,
"historical_max_oversold_days": 14,
"condition_rarity": "very_rare",
"condition_percentile": 2.1,
"volume_context": "spike",
"volume_ratio_band": "extremely_high",
"trend_context": "downtrend",
"nearest_support_distance": "at_level",
"accumulation_state": "distribution",
"sector": "Semiconductors",
"sector_rsi_zone": "neutral",
"sector_agreement": false,
"sector_oversold_count": 1,
"sector_total_count": 18,
"valuation_zone": "deep_value",
"earnings_proximity": "next_month",
"growth_zone": "slowing",
"analyst_consensus": "hold",
"rsi_zone_stability": "fresh",
"rsi_zone_flips_recent": 2
}],
"total_scanned": 648,
"match_count": 7,
"data_status": "eod"
}