# LOPJLB. Quantitative Stock Research & Screener > Independent quantitative research desk covering 12,000+ U.S.-listed symbols, stocks, ETFs, REITs, BDCs, CEFs, preferred, QDI, crypto & more. Every ticker is ranked daily with per-ticker backtests, profit factors, Sharpe ratios, and market regime context. No hand-waving. formulas, parameters, and evidence disclosed for every signal. --- ## Platform Overview LOPJLB is a quantitative research platform for U.S. equities and ETFs. It combines multiple proprietary and public signal families into a unified screener, charting tool, and research workflow. The platform is designed for active traders, fund managers, RIAs, and quantitatively-minded investors. Key capabilities: - **Daily signal generation** for 12,000+ tickers (stocks, ETFs, REITs, BDCs, CEFs, preferred, QDI, crypto & more) - **Multi-factor screener** with 40+ columns covering signals, fundamentals, technicals, and risk - **Interactive charting** with regime overlays, signal annotations, and ATR/FLIP/exhaustion markers - **Fundamental scoring**. value, growth, GARP, and composite quality scores per ticker - **ETF analysis**. holdings, changes, expense ratios, and ETF-specific quality scoring - **Market regime classification**. Hidden Markov Model classifying the macro environment as Bull, Recovery, Ranging, Bear, or Crisis - **Earnings calendar** with signal context - **FOMC Policy Desk**. next Fed decision date, market-implied rate odds, yield curve, financial conditions, and macro docket (https://www.lopjlb.com/fomc · markdown: https://www.lopjlb.com/fomc.md) - **SD50 portfolio**. a live strategy built on the Performance Score signal Guided walkthrough (nightly pipeline → signals → daily screen/watchlist/alert loop): https://www.lopjlb.com/how-it-works (markdown mirror: https://www.lopjlb.com/how-it-works.md) --- ## Screener presets (indexable) Named quantitative screens. Each URL opens the live screener on that preset. - [LoP Quality Yield Harvest](https://www.lopjlb.com/screener/lop-quality-yield-harvest): High-quality dividend payers at reasonable valuations · FUND ≥ 80, Yield ≥ 3%, P/E FWD ≤ 20 - [PJLB Bull-Regime Flips](https://www.lopjlb.com/screener/pjlb-bull-regime-flips): Fresh BUY flips in BULL/RECOVERY · liquid (avg vol ≥1M) · FUND≥60, PERF≥50, 52W≥30 · curated - [MULTI-SIGNAL CONVICTION](https://www.lopjlb.com/screener/multi-signal-conviction): 3+ presets overlap · top 10 by PERF + FUND + YIELD · OOS Sharpe 1.70, α +15% · grid May 2026 - [MOMENTUM PULLBACK](https://www.lopjlb.com/screener/momentum-pullback): BUY + ≥10% off ATH + bull% ≥60 + 52W≥50 · OOS Sharpe 2.30, α +17% · grid May 2026 (3-filter match) - [DEEP VALUE](https://www.lopjlb.com/screener/deep-value): Value ≥60 + Value/Recovery · fundamentals screen (not filter-grid validated) - [PULLBACK LEADERS](https://www.lopjlb.com/screener/pullback-leaders): BUY + 52W≥70 + ≥20% off ATH · OOS Sharpe 3.04, α +63% · grid May 2026 - [OVERSOLD TREND REBOUND](https://www.lopjlb.com/screener/oversold-trend-rebound): BUY + ATR long + Stoch<25 (+ATH/52W in UI) · OOS Sharpe 2.33, α +46% · grid May 2026 (2-filter core) - [DIVIDEND SAFETY](https://www.lopjlb.com/screener/dividend-safety): Quality ≥55 + Yield ≥2% + Dividend Compounder · fundamentals screen (not filter-grid validated) - [FRESH BUY SIGNALS](https://www.lopjlb.com/screener/fresh-buys): BUY ≤5d + bull%≥60 · OOS Sharpe 2.69, α +53% · grid May 2026 (≤20d off-ATH proxy) - [HIGH PF MOMENTUM](https://www.lopjlb.com/screener/high-pf-momentum): BUY + PF ≥ 2 + 30+ trades · core backtested edge across all tier-S plays - [CONTRARIAN RALLY](https://www.lopjlb.com/screener/contrarian-rally): BUY + ≥20% off ATH + topping<2 · OOS Sharpe 3.15, α +85% · grid May 2026 Tier S #1 - [BULL REGIME DIPS](https://www.lopjlb.com/screener/bull-regime-dips): BUY + HMM=BULL + ≥20% off ATH · OOS Sharpe 2.85, α +45% · grid May 2026 Tier S #5 - [MOMENTUM RESISTANCE](https://www.lopjlb.com/screener/momentum-resistance): BUY + bull%≥60 + ATR flip RESIST · OOS Sharpe 2.86, α +34%, DD -15% · grid May 2026 Tier S - [EXHAUSTION REVERSALS](https://www.lopjlb.com/screener/exhaustion-reversals): Triple exhaustion + |MACD-Z|>1.5 · play logic (not in filter grid search) - [DEEP RECOVERY PULLBACK](https://www.lopjlb.com/screener/deep-recovery-pullback): BUY + Recovery + ≥40% off ATH + Stoch<25 · not grid-validated · marginal edge - Markdown mirrors: https://www.lopjlb.com/screener/{slug}.md ## Screener scopes (indexable) Universe, asset-type, and sector scopes. Each URL opens the live screener pre-scoped to that universe; filters and views apply on top. - [S&P 500](https://www.lopjlb.com/screener/sp-500): S&P 500 constituents by signals, regime, fundamentals, and quality - [US Stocks](https://www.lopjlb.com/screener/stocks): Common stocks only (excludes ETFs, crypto, BDCs, REITs, CEFs) - [ETFs](https://www.lopjlb.com/screener/etfs): Exchange-traded funds by signals, regime, and momentum - [Crypto](https://www.lopjlb.com/screener/crypto): Spot cryptocurrencies (USD pairs) by regime, momentum, and signals - [Indices](https://www.lopjlb.com/screener/indices): Market indices, volatility, rates, and sector benchmarks - [Commodities](https://www.lopjlb.com/screener/commodities): Metals, energy, and agriculture by regime and signals - [BDCs](https://www.lopjlb.com/screener/bdcs): Business Development Companies by yield, quality, and signals - [REITs](https://www.lopjlb.com/screener/reits): Real Estate Investment Trusts by yield, quality, and signals - [Closed-End Funds](https://www.lopjlb.com/screener/closed-end-funds): CEFs by yield, quality, and signals - [Preferred Shares (QDI)](https://www.lopjlb.com/screener/preferred-shares): Qualified preferred shares by after-tax yield via QDI treatment - [Sector SPDR ETFs](https://www.lopjlb.com/screener/sector-spdr-etfs): XLK, XLE, XLF, XLV, XLY, XLP, XLI, XLB, XLU, XLC, XLRE + SPY - [Macro Cross-Asset](https://www.lopjlb.com/screener/macro): Cross-asset pulse — indices, bonds, commodities, volatility, crypto - [Weekly Options](https://www.lopjlb.com/screener/weekly-options): CBOE-listed weekly options names with options liquidity - [Technology Stocks](https://www.lopjlb.com/screener/technology): Technology sector · signals, regime, fundamentals, quality - [Financial Services Stocks](https://www.lopjlb.com/screener/financial-services): Financial Services sector · signals, regime, fundamentals, quality - [Healthcare Stocks](https://www.lopjlb.com/screener/healthcare): Healthcare sector · signals, regime, fundamentals, quality - [Consumer Discretionary Stocks](https://www.lopjlb.com/screener/consumer-discretionary): Consumer Discretionary sector · signals, regime, fundamentals, quality - [Industrials Stocks](https://www.lopjlb.com/screener/industrials): Industrials sector · signals, regime, fundamentals, quality - [Energy Stocks](https://www.lopjlb.com/screener/energy): Energy sector · signals, regime, fundamentals, quality - [Utilities Stocks](https://www.lopjlb.com/screener/utilities): Utilities sector · signals, regime, fundamentals, quality - [Real Estate Stocks](https://www.lopjlb.com/screener/real-estate): Real Estate sector · signals, regime, fundamentals, quality - [Communication Services Stocks](https://www.lopjlb.com/screener/communication-services): Communication Services sector · signals, regime, fundamentals, quality - [Basic Materials Stocks](https://www.lopjlb.com/screener/basic-materials): Basic Materials sector · signals, regime, fundamentals, quality - Markdown mirrors: https://www.lopjlb.com/screener/{slug}.md ## Signal Families ### 1. Directional Signal (DIR) A daily BUY/SELL classification computed independently for every ticker. Not a single indicator. it is a composite of 5 independent sub-signals: trend, flip detection, volatility compression, momentum persistence, and regime overlay. Every arrow carries a per-stock profit factor (gross winning trades / gross losing trades) computed over an 8-year out-of-sample window. ### 2. Performance Score (PERF, 0-100) A temporal composite of risk-adjusted quality measured across six rolling timeframes (1M, 3M, 6M, 1Y, 3Y, ALL). For each period, the optimizer computes quality from Sharpe, Sortino, Calmar, CAGR, and win-rate, then blends them using proprietary temporal momentum weights. Short-term windows are capped to reduce noise; intermediate windows carry the highest weight. ### 3. Fundamental Score (FUND, 0-100) An archetype-weighted blend of three sub-scores: - **Value Score (VAL)**. DCF-based, earnings yield, cash flow yield, book value - **Growth Score (GRO)**. revenue growth, gross margins, path to profitability, balance sheet - **GARP Score**. growth-at-a-reasonable-price, PEG ratio, earnings trajectory For ETFs, a dedicated ETF quality scoring algorithm evaluates yield, growth, total return, risk-adjusted performance (Sortino), stability (Ulcer index, max drawdown, beta), and cost (expense ratio, AUM). For alternative assets (BDCs, REITs, CEFs, Preferred Shares), specialized scoring engines evaluate income coverage, NAV discount/premium, payout sustainability, and sector-specific risk factors. ### 4. Market Regime (HMM) A Hidden Markov Model trained on broad market data that classifies the current macro environment into one of five states: Bull, Recovery, Ranging, Bear, or Crisis. The regime state is overlaid on all signals and charts to provide macro context for tactical decisions. ### 5. Public Overlays - **Triple Exhaustion**. a confluence indicator combining RSI extremes, Bollinger Band penetration, and volume climax to identify potential reversal zones - **ATR Trailing Stop**. an adaptive trailing stop based on Average True Range that adjusts to volatility regime - **60-Day HiLo Flip (FLIP)**. a trend-change detector based on 60-day high/low breakouts --- ## Screener The screener displays every ticker in the universe with sortable, filterable columns organized into groups: ### Core Signals - PERF (Performance Score, 0-100) - FUND (Fundamental Score, 0-100) - DIR (Directional Signal. BUY/SELL) - REGIME (Current market regime for the ticker) - ATR (ATR trailing stop state. LONG/SHORT) - FLIP (60-day HiLo Flip state) - EXHAUSTION (Triple Exhaustion indicator) ### Fundamentals - VAL (Value sub-score) - GRO (Growth sub-score) - GARP (Growth-at-reasonable-price sub-score) - Archetype (Value / Growth / Balanced / Income classification) - Yield, Market Cap, Volume, Sector ### Technicals & Risk - Volatility, Beta, Sharpe, Sortino, Calmar - Max Drawdown, CAGR, Alpha, Total Return - Q-Score (risk-adjusted quality) ### Signal Details - Profit Factor, Win Rate, Trade Count - Buy/Sell dates, regime at signal, ATR/FLIP state at signal Users can filter by any column, search by ticker or name, and sort by any metric. Column visibility is configurable. --- ## SD50 SD50 is the portfolio built on the Performance Score (PERF). one of several signal families powering the LOPJLB screener. It selects the top 50 stocks by PERF score and rebalances monthly. - **19.9% CAGR** over a 245-month backtest - 14 sub-signals combined into the composite score - Live since August 2025 - Monthly rebalancing with equal-weight allocation - Current allocation published at `/bff/api/sd50/allocation` (Pro) or public feed at `/bff/api/sd50/feed` --- ## Stock Detail Pages Every ticker has a dedicated page at `/stock/{SYMBOL}` with a tabbed quote hub: - **Overview** — live price, direction and HMM regime badges, interactive chart, a compact key-stats band (market cap, from ATH, avg volume, div yield, beta + trailing 1W/1M/3M/YTD returns), **earnings call intelligence** when a CallCard/rollup is cached (server-rendered one-liner + narrative for crawlers), company profile, analyst consensus, and peers - **Financials** — fundamental scores (Value, Growth, GARP, Quality, Archetype) and financial history charts (Revenue, Net Income, EPS, Free Cash Flow, Margins, Debt) - **Earnings** — earnings beat/miss history, call transcripts when available, **CallCard + temporal rollup** (tone, guidance, themes, grounded quotes), and recent directional signal-history flips - **Analyst** — Street consensus (bullish/neutral/bearish mix, target range) and recent firm grade actions - **News** — company headlines for the ticker, with links to `/news` (market feed + ticker search) and the per-symbol RSS feed - **Holders** — institutional ownership (13F) and ETF holdings / held-by graph Crawlable twin for call intel (no login): - Markdown: `https://www.lopjlb.com/stock/{SYMBOL}/earnings.md` - API rollup: `GET /bff/api/bigfive/earnings-intel/{SYMBOL}` (freemium) - CallCard: `GET /bff/api/bigfive/earnings-intel/{SYMBOL}?year=&quarter=` - Discovery index: `GET /bff/api/bigfive/earnings-intel-index` - RSS: `https://www.lopjlb.com/feeds/earnings-intel.xml` Public hook: daily direction + regime context. Pro unlocks the full interactive chart and expanded terminal data. Free users still get the full Overview quote page in HTML, including CallCard text when generated. --- ## Pricing ### Free Tier - Screener UI limited to SPY25 sample columns/rows - Thin public `signal-card` teaser (`depth=public`: direction, regime, price, sparkline, headline PF) - Freemium detail / earnings intel / fundamentals / 30-day charts (anon ticker budget 30/min · 500/day) - Public REST/CLI for single-name sample research (no login) - Basic charting (30 sessions) ### Pro ($289/month or $188/month annual, 7-day free trial) - Full screener access with all 40+ columns across 12k+ symbols - Full `signal-card` (`depth=full`: PF packs, composite, fund scores, best-combo) - Interactive charting with all overlays and long history - Screener UI CSV of filtered views; SD50 allocation downloads - Daily watchlist email alerts, peers, chat, saved views - Browser: WorkOS session + pro entitlement. Headless: Enterprise API key also unlocks Pro REST ### Enterprise ($1,599/month or $1,039/month annual) - Everything in Pro (keys unlock Pro REST such as full `/universe`) - Intraday research suite (live I·EXH scanner, 1D charts, layers) - REST API keys + HTTP MCP at `POST /bff/api/mcp` (mint in Settings after entitlement is active) - Slack and Discord webhooks - Bulk latest-signal export (CSV / Parquet) — distinct from Pro UI CSV - Priority support / onboarding ### Agent surfaces (REST · CLI · PyPI · MCP) Four peers over one BFF. Free CLI/PyPI need no browser. CLI calls REST only; MCP is a separate Enterprise host protocol (`POST /bff/api/mcp`). See `/developers`, `AGENTS.md`, and `uv tool install lopjlb`. ### Research chat (`/chat`) Browser research desk at https://www.lopjlb.com/chat. Ticker questions inject the same `assemble_ticker_context` CONTEXT pack used by scheduled blog posts (signal card, fundamentals, news, earnings CallCard/rollup, etc.). Non-ticker questions use shared MCP tool handlers. Model: OpenRouter Nemotron free (Groq fallback). Daily quotas (UTC): anon cookie **1** · logged-in free **3** · Pro **10** · Enterprise **unlimited**. API: `POST /bff/api/research/chat` (NDJSON stream) · `GET /bff/api/research/chat/quota`. Kill switch: `RESEARCH_CHAT_ENABLED`. The old Pro-only `POST /bff/api/bigfive/chat` fat-prompt path is not the product surface (screener footer AI stays off). --- ## API Endpoints All endpoints are served through the BFF at `https://www.lopjlb.com/bff/api/`. See [openapi.json](https://www.lopjlb.com/openapi.json) and [api/llms.txt](https://www.lopjlb.com/api/llms.txt) for the authoritative list. ### Public (no auth) | Endpoint | Method | Description | |---|---|---| | `/bff/api/bigfive/universe-preview` | GET | Subset of universe data for unauthenticated users | | `/bff/api/bigfive/search?q={query}` | GET | Ticker and company name search | | `/bff/api/hmm/latest` | GET | Current market regime classification | | `/bff/api/hmm/sparkline` | GET | Regime history sparkline data | | `/bff/api/hmm/history` | GET | Regime history JSON (public ~1y; full needs Pro/key) | | `/bff/api/universes/spy25` | GET | Point-in-time SPY25 membership (`?asof=YYYY-MM`) | | `/bff/api/universes/spy500` | GET | Point-in-time SP500 membership (`?asof=YYYY-MM`) | | `/bff/api/universes/{name}/months` | GET | Available months index | | `/bff/api/universes/maps` | GET | Ticker renames + delisted symbols | | `/bff/api/bigfive/signal-ledger` | GET | Published signal track-record ledger | | `/bff/api/bigfive/signal-history` | GET | Systematic signal-history aggregates | | `/bff/api/market-pulse` | GET | Market overview with breadth, regime, and sector stats | | `/bff/api/research/chat` | POST | Research chat NDJSON stream (anon OK; daily quota by tier) | | `/bff/api/research/chat/quota` | GET | Remaining research-chat messages for this identity | | `/bff/api/market/overview` | GET | Market indices summary | | `/bff/api/market/indices` | GET | Major index prices and changes | | `/bff/api/market/exchange-hours` | GET | Global exchange open/closed status | | `/bff/api/market/treasury-rates` | GET | US Treasury yield curve (1M–30Y) + 2s10s | | `/bff/api/congress/summary` | GET | Congress trades aggregates | | `/bff/api/congress/trades` | GET | Paginated STOCK Act disclosures | | `/bff/api/prediction-markets/summary` | GET | Kalshi + Polymarket finance/macro aggregates | | `/bff/api/prediction-markets/markets` | GET | Paginated prediction markets | | `/bff/api/sd50/feed` | GET | SD50 rebalance activity feed (public) | | `/bff/api/bigfive/signal-card/{symbol}` | GET | Thin teaser (`depth=public`); full pack with Pro/key | ```bash curl -s https://www.lopjlb.com/bff/api/hmm/latest curl -s 'https://www.lopjlb.com/bff/api/bigfive/search?q=MSFT' curl -s https://www.lopjlb.com/bff/api/bigfive/universe-preview curl -s https://www.lopjlb.com/bff/api/bigfive/signal-card/AAPL curl -s https://www.lopjlb.com/bff/api/market/treasury-rates curl -s https://www.lopjlb.com/bff/api/congress/summary curl -s https://www.lopjlb.com/bff/api/prediction-markets/summary ``` ### Freemium (anonymous OK) | Endpoint | Method | Description | |---|---|---| | `/bff/api/bigfive/detail/{symbol}` | GET | Ticker detail (anon freemium ticker budget 30/min · 500/day) | | `/bff/api/bigfive/fundamentals-history/{symbol}` | GET | Multi-year financial statement history | | `/bff/api/bigfive/etf-holdings/{symbol}` | GET | ETF constituent holdings | | `/bff/api/bigfive/live-quotes` | POST | Real-time quote batch | | `/bff/api/bigfive/sparkline/{symbol}` | GET | Price sparkline (days clamped for free users) | ### Pro (WorkOS session + pro entitlement) | Endpoint | Method | Description | |---|---|---| | `/bff/api/bigfive/universe` | GET | Full screener dataset with all signals and scores | | `/bff/api/bigfive/peers/{symbol}` | GET | Peer comparison data | | `/bff/api/bigfive/etf-holdings-changes/{symbol}` | GET | Holdings changes over time | | `/bff/api/bigfive/chat` | POST | Legacy fat-prompt chat (not product; use `/chat` / research/chat) | | `/bff/api/discovered-plays` | GET | Recently discovered grid-search trading setups | | `/bff/api/sd50/allocation` | GET | Current SD50 portfolio allocation | | `/bff/api/sd50/allocation.csv` | GET | SD50 allocation as CSV download | ### Enterprise (WorkOS `enterprise` or `X-LOPJLB-API-Key`) | Endpoint | Method | Description | |---|---|---| | `/bff/api/chart/intraday/{symbol}` | GET | Intraday chart bars + layers | | `/bff/api/screener/intraday-exhaustion` | GET | Live I·EXH universe snapshot | | `/bff/api/user/webhooks` | GET/POST | Slack/Discord webhook config | | `/bff/api/user/api-keys` | GET/POST | Create/list API keys | | `/bff/api/user/api-keys/{key_id}` | DELETE | Revoke a key | | `/bff/api/schema/metrics` | GET | Screener metric dictionary (ui_id ↔ api_key; public definitions) | | `/bff/api/schema/presets` | GET | Screener preset filter packs (public) | | `/bff/api/schema/scopes` | GET | Screener scope vocabulary (public) | | `/bff/api/mcp` | POST | HTTP MCP JSON-RPC — multi-asset `screen_universe`, metrics schema, I·EXH, SD50 allocation, peers, regime, intel; see `/.well-known/mcp/server-card.json` v1.4 | | `/bff/api/export/signals.csv` | GET | Thin latest-signal CSV (≠ full screener book; use Pro universe / `lopjlb screen`) | | `/bff/api/export/signals.parquet` | GET | Latest signal snapshot Parquet | | `/bff/api/export/archives` | GET | List historical pack months (`?source=sd50\|backtest`) | | `/bff/api/export/archives/{source}/{month}` | GET | List files in a month | | `/bff/api/export/archives/{source}/{month}/{filename}` | GET | Download one archive file | Create API keys in Settings after Enterprise checkout. Header: `X-LOPJLB-API-Key: lopjlb_live_…`. ### Browser WebMCP (page tools) Distinct from Enterprise HTTP MCP. In Chrome with WebMCP enabled, pages register tools via `document.modelContext`: | Tool | Description | |---|---| | `search_tickers` | Search universe by symbol/name | | `get_market_regime` | Latest HMM regime | | `get_market_pulse` | Market breadth and sectors | | `open_ticker` | Navigate to `/stock/{SYMBOL}` | Declarative form tools annotate ticker search and news filter forms where present. --- ## Technical Stack - **Frontend**: Next.js (App Router), React, TypeScript, deployed on Vercel - **Backend**: FastAPI (Python) on dedicated infrastructure, proxied via BFF - **Authentication**: WorkOS AuthKit (session cookie); Pro/Enterprise via Stripe entitlements; Enterprise API keys. Agent Registration: https://www.lopjlb.com/auth.md (AuthKit claim UI; skill `npx skills add lopjlb/lopjlb-skill`; `lopjlb auth claim`). Agent Bearer ≠ MCP. - **Payments**: Stripe (monthly and annual billing) - **Analytics**: Vercel Analytics, Google Analytics - **Data Providers**: FMP (Financial Modeling Prep), yfinance - **Signal Engine**: Custom Python pipeline. optimizer, profit engine, HMM regime classifier, income scoring - **Data Pipeline**: Nightly batch jobs for fundamentals refresh, signal generation, grid search, ETF holdings, income scoring, bulk data refresh --- ## Contact - Website: https://www.lopjlb.com - Twitter/X: https://x.com/lopjlb - Email: contact@lopjlb.com --- ## Legal - [Terms of Service](https://www.lopjlb.com/terms) - [Privacy Policy](https://www.lopjlb.com/privacy) **Disclaimer**: LOPJLB provides quantitative research tools and algorithmic signals for informational and educational purposes only. Nothing on the platform constitutes personalized investment advice, a recommendation to buy or sell any security, or a solicitation of any transaction. Past performance does not guarantee future results. All investments involve risk, including the possible loss of principal.