Markets & Screener
Last updated on 2026-05-31
The markets module provides four screens for discovering and analyzing market opportunities. It includes a configurable stock screener, real-time scanner signals, a visual sector heatmap, and a combined economic and earnings calendar. All screens are in the (app) route group.
Stock Screener
Route: /markets/screener
A powerful stock screening tool with configurable filters and a sortable data table.
- Filter panel --
ScreenerFilterscomponent with configurable criteria:- Market cap range -- slider or preset (Mega Cap, Large Cap, Mid Cap, Small Cap, Micro Cap)
- Price range -- min/max price inputs
- Volume -- minimum average volume threshold
- Sector -- multi-select dropdown for sector filtering
- Exchange -- multi-select for NYSE, NASDAQ, AMEX
- P/E ratio -- range filter for valuation screening
- Dividend yield -- minimum yield percentage
- 52-week position -- percent from 52-week high or low
- Technical -- RSI range, SMA crossover filters
- Screener presets -- saved filter configurations (e.g., "High Dividend", "Growth Stocks", "Oversold", "Blue Chips") that load predefined filter combinations
- Results table --
ScreenerTableshowing filtered stocks with columns for ticker, company name, price, change %, volume, market cap, P/E ratio, EPS, dividend yield, 52-week range, and sector badge - Sort -- click any column header to sort ascending/descending
- Row click -- clicking a row navigates to the stock detail page
import { ScreenerFilters } from "@/components/markets/screener-filters"
import { ScreenerTable } from "@/components/markets/screener-table"
Screener Layout
┌───────────────────────────────────────────┐
│ Screener Filters │
│ [Sector ▾] [Exchange ▾] [Market Cap ▾] │
│ [P/E Range] [Div Yield] [Volume] │
├───────────────────────────────────────────┤
│ Results (245 stocks) │
│ Ticker Name Price Chg% Vol Cap │
│ AAPL Apple $192 +1.2% 45M 3.0T│
│ MSFT Microsoft $420 +0.8% 22M 3.1T│
│ GOOGL Alphabet $175 +1.5% 18M 2.1T│
│ ... │
└───────────────────────────────────────────┘
Available Screener Metrics
| Metric | Description |
|---|---|
| Price | Current stock price |
| Change % | Daily percentage change |
| Volume | Trading volume |
| Market Cap | Total market capitalization |
| P/E Ratio | Price-to-earnings ratio |
| EPS | Earnings per share |
| Dividend Yield | Annual dividend yield % |
| Beta | Volatility relative to market |
| 52W High % | Distance from 52-week high |
| RSI | Relative Strength Index |
| SMA 20/50/200 | Simple moving averages |
Data Sources
| Data | Source | Location |
|---|---|---|
| Screener stocks | screenerStocks |
data/seed.ts |
| Sector list | Derived from positions | types/index.ts |
Market Scanner
Route: /markets/scanner
Real-time market scanner displaying technical signals and trading patterns.
- Signal cards -- grid of
SignalCardcomponents, each showing:- Signal type badge -- color-coded badge (Breakout = teal, Golden Cross = green, Volume Spike = amber, Gap Up = blue, Oversold = purple, New High = indigo)
- Ticker and name -- stock identifier and company name
- Signal strength -- indicator bar showing weak, moderate, or strong signal
- Price and change -- current price with change amount and percentage
- Volume -- current volume with comparison to average
- Triggered time -- relative timestamp of when the signal fired
- Signal type filter -- pill-style tabs to filter by signal type (All, Breakout, Golden Cross, Volume Spike, Gap, Oversold/Overbought, New High/Low)
- Sector filter -- dropdown to filter signals by sector
import { SignalCard } from "@/components/markets/signal-card"
Signal Types
| Signal | Color | Description |
|---|---|---|
| Breakout | teal | Price breaks above resistance level |
| Breakdown | red | Price breaks below support level |
| Golden Cross | green | 50-day SMA crosses above 200-day SMA |
| Death Cross | red | 50-day SMA crosses below 200-day SMA |
| Volume Spike | amber | Volume exceeds 2x average volume |
| Gap Up | blue | Opening price significantly above prior close |
| Gap Down | red | Opening price significantly below prior close |
| New High | indigo | New 52-week high |
| New Low | gray | New 52-week low |
| Oversold | purple | RSI below 30 |
| Overbought | orange | RSI above 70 |
Data Sources
| Data | Source | Location |
|---|---|---|
| Scanner signals | scannerSignals |
data/seed.ts |
Sector Heatmap
Route: /markets/heatmap
A visual heatmap showing sector and stock performance at a glance.
- Heatmap grid --
HeatmapGridcomponent displaying stocks as sized rectangles grouped by sector; each cell is colored by daily change percentage (green gradient for gains, red gradient for losses); cell size represents relative market cap - Sector table --
SectorTableshowing performance data for each sector with columns for sector name, change percentage, market cap, number of advancers vs decliners, top gainer, and top loser - Color scale -- gradient legend from deep red (-5%+) through neutral gray (0%) to deep green (+5%+)
- Hover tooltip -- hovering over a heatmap cell shows the full stock name, exact change percentage, price, and volume
import { HeatmapGrid } from "@/components/markets/heatmap-grid"
import { SectorTable } from "@/components/markets/sector-table"
Heatmap Color Scale
| Range | Color |
|---|---|
| < -3% | Deep red |
| -3% to -1% | Medium red |
| -1% to 0% | Light red |
| 0% | Gray |
| 0% to +1% | Light green |
| +1% to +3% | Medium green |
| > +3% | Deep green |
Economic & Earnings Calendar
Route: /markets/calendar
A combined calendar showing upcoming economic events, earnings reports, and IPOs.
- Tab navigation -- three tabs for Earnings, Economic Events, and IPOs
- Earnings table --
EarningsTableshowing upcoming and recent earnings with columns for date, ticker, company name, estimated EPS, consensus EPS, report timing (Before Market/After Market), and earnings surprise (for reported results) - Economic events table --
EconomicTableshowing macroeconomic releases with columns for date, time, event name, country flag, impact level badge (High = red, Medium = amber, Low = green), previous value, forecast, and actual - IPO cards --
IpoCardsgrid showing upcoming IPOs with company name, ticker, expected date, price range, exchange, sector, and status badge (Upcoming, Priced, Trading, Postponed)
import { EarningsTable } from "@/components/markets/earnings-table"
import { EconomicTable } from "@/components/markets/economic-table"
import { IpoCards } from "@/components/markets/ipo-cards"
Economic Event Impact Levels
| Impact | Badge Color | Example Events |
|---|---|---|
| High | red | FOMC Rate Decision, Non-Farm Payrolls, CPI |
| Medium | amber | Retail Sales, Housing Starts, ISM PMI |
| Low | green | Consumer Sentiment, Factory Orders |
Earnings Report Timing
| Timing | Description |
|---|---|
| Before Market (BMO) | Reported before market open |
| After Market (AMC) | Reported after market close |
| During Market | Reported during trading hours |
Data Sources
| Data | Source | Location |
|---|---|---|
| Earnings events | earningsEvents |
data/seed.ts |
| Economic events | economicEvents |
data/seed.ts |
| IPO events | ipoEvents |
data/seed.ts |
| Sector data | sectorData |
data/seed.ts |
| Heatmap data | heatmapStocks |
data/seed.ts |
Next Steps
- Research & Analysis -- stock detail, fundamentals, analyst ratings, and technicals
- Trading & Orders -- order entry and order book
- Dashboard & Watchlist -- dashboard overview and watchlist