JCN Financial Wiki
Complete reference for the JCN Financial Investment Dashboard โ architecture, metrics, data, and methodology.
Overview
What is JCN Financial?
JCN Financial is a production-grade investment dashboard that provides real-time portfolio tracking, deep fundamental stock analysis, and institutional-quality data infrastructure. Built for serious investors who need survivorship-bias-free data, point-in-time accuracy, and comprehensive fundamental screening across an ~3,000-stock investable universe, with full JCN factor scores computed for the ~1,600-stock CORE universe (S&P 500 / MidCap 400 / SmallCap 600 / NASDAQ 100).
The platform manages three distinct investment portfolios (Persistent Value, Olivia Growth, Pure Alpha), each with unique strategies, and offers a full Stock Analysis screener with 10 analytical modules covering price performance, per-share data, quality metrics, financial statements, growth rates, valuation, and composite quality scoring.
Technology Stack
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Next.js 14, React 18, Tailwind CSS | SSR, routing, responsive UI |
| Charts | ECharts 6.0, Recharts | Interactive charts, radar, line graphs |
| UI Kit | Tremor v3, Radix UI | Dashboard components, accessible primitives |
| Backend | FastAPI (Python) | Serverless API on Vercel |
| Database | MotherDuck (DuckDB cloud) | Analytical warehouse โ prices, fundamentals, scores |
| Data | EODHD API | EOD prices, fundamentals, bulk downloads |
| Hosting | Vercel Pro | Serverless deploy, 300s function timeout |
| Caching | SWR, localStorage, /tmp | Multi-layer: browser โ serverless โ DB |
Architecture
The application follows a serverless architecture deployed on Vercel. The Next.js frontend communicates with Python FastAPI serverless functions via /api/* routes. All market data lives in MotherDuck (cloud DuckDB), organized into production tables under thePROD_EODHD database.
Browser (React)
โโ Next.js SSR / Client
โโ /api/* routes (Vercel Serverless)
โโ FastAPI (Python)
โโ Cache: /tmp (Vercel ephemeral)
โโ MotherDuck (DuckDB Cloud)
โโ PROD_EODHD (production)
โโ DEV_EODHD_DATA (staging)Dashboard Pages
Dashboard (Heatmap + Charts)
The main dashboard page features a full-width TradingView stock market heatmap showing real-time sector and stock performance with color-coded daily percentage changes. Above the heatmap, three equally spaced TradingView Advanced Chart widgets display daily candle charts for SPY (S&P 500), QQQ (Nasdaq 100), and ACWI (All Country World Index) โ providing instant macro context. Charts use white backgrounds with volume bars hidden for a clean presentation.
Persistent Value Portfolio
A 21-holding portfolio focused on high-quality, durable compounders with strong competitive moats, consistent free cash flow generation, and long-term capital appreciation. Holdings include ASML, COST, AVGO, MA, FICO, SPGI, V, AAPL, NFLX, and others. Uses SPMO as the benchmark ETF.
Features: real-time performance table with YTD/1Y/3Y/5Y returns, market-cap-weighted allocation pie chart, SPY benchmark comparison with alpha calculation, historical price charts, JCN 5-factor score grid, and quality radar charts. All data loads from MotherDuck with 4-layer cache.
Olivia Growth Portfolio
A 20-holding growth-oriented portfolio emphasizing high-momentum technology and infrastructure names. Holdings include GOOG, AMZN, META, NVDA, AMD, CRWD, PLTR, SHOP, and others. Uses QGRW as the benchmark ETF. Identical architecture to Persistent Value.
Pure Alpha Portfolio
A concentrated 10-holding high-conviction portfolio designed for maximum alpha generation. Holdings: GEV, GOOG, NVDA, TSLA, PWR, AXON, LRCX, MELI, MU, NFLX. Benchmarked directly against SPY.
Stock Analysis Screener
Deep single-stock fundamental analysis page with 10 analytical modules. Any tracked stock can be viewed; full JCN factor scores are only computed for the ~1,600-stock CORE universe (S&P 500 / MidCap 400 / SmallCap 600 / NASDAQ 100) โ non-CORE names show fundamentals without scores. Features smart search with autocomplete, recent search history pills (localStorage, max 10), and animated progress bar.
Default symbol: NVDA (loaded automatically). All modules always visible. Data fetched in a single API call and cached 30 minutes in both browser and server.
| # | Module | Description |
|---|---|---|
| 1 | Stock Info Header | Company name, sector, P/E, Forward P/E, Div Yield, Beta, ROE, Analyst Target |
| 2 | Price vs SPY | 5-year chart indexed to 100. Stock (blue) vs SPY (gray) |
| 3 | Per Share Data | 14 metrics over 10+ years: Revenue/Share, EPS, FCF/Share, Book Value, Yields |
| 4 | Quality Metrics | 17 ratios: Margins, Returns, Leverage, Efficiency |
| 5 | Income Statement | Hierarchical P&L with expandable parent-child rows |
| 6 | Balance Sheet | Assets, Liabilities, Equity with 3-level hierarchy |
| 7 | Cash Flows | Operating, Investing, Financing sub-items. Free Cash Flow. |
| 8 | Growth Rates | YoY growth, 12 metrics, heatmap coloring |
| 9 | Valuation Ratios | 9 valuation metrics + analyst consensus bar |
| 10 | JCN Scores | 5-factor composite scoring (0-100) with 5-axis radar chart |
Stock Screener
A FinViz-style stock screener that filters the ~3,000 stock investable universe using preset dropdown filters โ no manual value input required. Organized into 7 filter tabs: Descriptive (market cap, sector), JCN Scores (5 factor composites + 8 blend composites), Valuation (P/E, PEG, P/B, P/S, EV/EBITDA, dividend yield), Growth (revenue and earnings growth), Profitability (margins, ROE, ROA), Momentum (daily/YTD/YoY changes, beta, and all AF/FIP/System momentum sub-components), and Fundamentals (debt/equity, current ratio, interest coverage).
Results display in a TanStack Table v8 with full sorting on any column, a column picker to show/hide fields, and CSV export. Right-clicking any cell opens a context menu with three options: Analysis (opens the stock in Stock Analysis in a new tab), Add to Watchlist (saves to localStorage), and Grok (placeholder for future AI analysis). Filter and table state are persisted in sessionStorage so navigating away and back preserves the screener exactly as the user left it.
The screener API (POST /api/screener) uses a dynamic SQL query builder with a whitelisted field map to prevent SQL injection. It JOINs across 8 MotherDuck tables using inline subqueries (not CTEs, which fail on MotherDuck). Results are cached in /tmp with a 5-minute TTL. The API is 100% read-only and never writes to any production table.
Watchlist
A personal watchlist page where users can track stocks of interest. Symbols can be added manually via a ticker input field or from the Screener context menu. The watchlist is stored in localStorage (no database writes required) and syncs across components via a custom watchlist-change event.
The watchlist table displays enriched data fetched from the screener API: company name, sector, market cap, price, daily/YTD/YoY percentage changes, and five JCN factor scores (Value, Quality, Growth, Momentum, JCN Full Composite). Users can sort by any column, remove individual symbols, clear all with a confirmation dialog, export to CSV, or open any symbol in Stock Analysis via a new-tab link. An empty state guides new users to add symbols from the input field or the Screener page.
Data Sync Pipeline
A 4-stage automated data pipeline that ingests daily EOD prices from EODHD, validates data quality, promotes to production, and rebuilds composite scores. Each stage is idempotent and safe to re-run. See the Sync Pipeline section for details.
Market Analysis
A deep-dive into the full investable universe. Shows every CORE stock (~1,600 names โ S&P 500 / MidCap 400 / SmallCap 600 / NASDAQ 100) with all JCN factor scores side-by-side in a single searchable, sortable table. Use this page to screen across the entire market simultaneously โ no individual stock lookups needed. See the Sector Analysis Module Guide section for a full breakdown of all the analytical tables on the related Sector Analysis page.
Sector Analysis
The top-down macro analysis hub. Contains 9 modules covering every dimension of sector rotation analysis: fundamental score history over 8 quarters, price momentum via ETF heatmaps and Relative Rotation Graphs, convergence signals that pair fundamental trends with price leadership, and granular breakdowns by GICS industry group. See the Sector Analysis Module Guide section below for a plain-English explanation of every module.
Investor Profiles
What Are Investor Profiles?
Investor Profiles are curated analytical frameworks distilled from legendary investors, quantitative researchers, and institutional strategies. Each profile is a complete lens for evaluating stocks โ with specific screening criteria, scoring algorithms, and qualitative checklists that go beyond the core JCN factor scores.
Where profiles appear:
- Screener Tab โ dedicated filter tab with preset values and auto-sorted results
- Pearl.ai Chat โ "analyze AAPL through the LongEq lens" triggers full gate-by-gate evaluation
- Encyclopedia (Part XII) โ deep methodology reference in
JCN_Intelligence/Investor_Profiles/ - PROD_LONGEQ_SCORES โ pre-computed monthly scores for the full 3,000-stock universe
Current profiles (6): LongEq ยท NDR DFR ยท Fundsmith ยท Quality Growth (Polen/Contrafund) ยท GuruFocus ยท 100 Baggers (Mayer) โ all live, April 2026. Planned: Olivia GQM, Deep Value / Graham-Dodd, Macro-Aware Bridgewater.
LongEq โ Core Philosophy
Source: 67 articles from subscribe.longeq.com (65,757 words total), distilled for JCN integration April 2026. Synthesizes the frameworks of Terry Smith (Fundsmith), Chuck Akre (Akre Capital Management), and Dev Kantesaria (Valley Forge Capital).
One-sentence thesis: Find capital-efficient businesses with durable competitive advantages, buy them at reasonable prices relative to their growth, and hold them as they compound โ indefinitely.
The core belief is that companies generating high, sustained returns on capital will produce exponential share price growth over decades. The market eventually reflects the underlying compounding of the business. The investor's job is to identify that compounding before the market fully prices it in โ and then get out of the way.
What this strategy is NOT: It is not value investing (buying cheap), not momentum investing (buying what's rising), not growth investing (buying high-growth unprofitable companies). It sits at the intersection of quality, growth, and patience. The holding period is measured in years to decades, not months.
5-Filter Screening Framework
LongEq applies 5 sequential filters. A company must pass all 5 to be considered. The order matters โ eliminate poor economics first, before any valuation work.
Filter 1 โ Quality Screen
Eliminate poor economics before anything else. "The single most important definition of a good company is return on capital above 15%." โ Terry Smith
| Metric | Threshold | Rationale |
|---|---|---|
| ROC (Return on Capital) | > 15% sustained 5yr avg | Capital efficiency โ the master metric |
| ROC Trend | Stable or rising | Declining ROC = eroding moat |
| FCF Margin | Positive and growing | Cash generation beats reported earnings |
| Debt/Equity | Reasonable for sector | Avoid leveraged growth illusions |
Auto-exclude: Airlines, banks, insurers, mining/resources, utilities, real estate, early-stage speculative tech, companies needing fresh equity to grow.
Filter 2 โ Share Price Linearity
The market proves consistency. LongEq regression-tests every candidate's share price against an exponential curve. High Rยฒ = the market has consistently rewarded compounding โ not a one-time rerating.
Rยฒ of log(weekly_adjusted_close) vs time > 0.80 over 5-10 years
Share price CAGR > 10% (5yr)
ORLY: Rยฒ=0.96 COST: Rยฒ=0.92 AAPL: Rยฒ=0.82 โ elite compounders
ADBE: Rยฒ=0.19 โ recent underperformance breaks linearity
META: Rยฒ=0.53 โ volatile path despite underlying business qualityFilter 3 โ Sector Exclusions
Structurally poor economics regardless of company quality. Exclude permanently: Banks & insurers (leveraged, regulated, cyclical) ยท Airlines (commodity service, capital-destructive) ยท Mining & resources (depleting assets, capex-heavy) ยท Utilities (regulated returns, rate-sensitive) ยท Real estate (capital-intensive, interest-rate sensitive).
Filter 4 โ Competitive Advantage (Moat)
Four pricing power questions:
- Is the product a significant cost for the customer? (Mission-critical โ lower price sensitivity)
- Are there better or cheaper alternatives? (If no โ strong pricing power)
- Are there switching costs? (If yes โ locked-in customers)
- Are there barriers to entry? (If yes โ competitors can't erode margins)
Moat types favored: Installed base ยท Repeat/predictable transactions ยท Strong brands ยท Franchise models (use others' capital) ยท Network effects ยท Regulatory moats.
Filter 5 โ Valuation Discipline
"A wonderful business at a fair price is better than a fair business at a wonderful price." Use FCF yield as the anchor, not P/E.
FCF Yield = Free Cash Flow / Market Cap
Expected Return = FCF Growth Rate + FCF Yield
Example: 15% FCF grower with 3% yield โ 18% expected return
Ideal range: FCF Yield 2-5% with high growth backing itKey Metrics & Red Flags
Primary metrics (quantitative scoring):
| Metric | What It Measures | Ideal Threshold |
|---|---|---|
| ROC (Return on Capital) | Capital efficiency โ master metric | > 20%, stable 5yr+ |
| ROIC | Return on all invested capital | > 15% |
| FCF/Share Growth | Core cash compounding | > 15% CAGR 5yr |
| Revenue Growth | Top-line expansion | > 10% CAGR 5yr |
| FCF Yield | Current cash return to shareholders | 2โ5% (with high growth) |
| Share Price Rยฒ (weekly) | Consistency of compounding | > 0.80 over 5yr |
| SBC % of OCF | Shareholder dilution risk | < 30% (our gate threshold) |
| CAPEX % of OCF | Capital intensity | < 20% = capital-light |
| Gross Margin | Pricing power proxy | > 50% |
| Debt/FCF | Leverage risk | < 3x |
Red flags โ immediate disqualifiers:
- SBC > 10% of revenue โ excessive dilution eating compounding
- ROC declining 3+ consecutive years โ moat erosion underway
- Customer concentration > 40% single customer โ dependency risk
- FCF consistently below net income โ earnings quality problem (accruals)
- Share count growing > 2%/yr โ dilution destroying per-share compounding
- CAPEX > 20% of OCF for 5+ years โ capital-heavy, not a compounder
4 Company Archetypes
LongEq categorizes every holding into one of four archetypes. The archetype determines how you assess the moat and what metrics matter most.
1. Capital-Light Compounders
The Donut
Reinvest a small amount of capital to generate outsized returns. Low capex, high margins, reinvestment drives exponential growth.
- CAPEX < 5% of revenue
- ROC > 25%
- Software, data/analytics, IP-licensing
- Revenue is recurring (subscriptions, licenses)
Examples: Cadence Design Systems, MSCI, ATOSS Software, FICO, TechnologyOne
2. Infrastructure Roll-Ups
The Snowball
Acquire small businesses in fragmented industries, apply operational excellence, compound through M&A + organic growth.
- Proven M&A integration track record
- Revenue is essential services (not discretionary)
- Installed base creates switching costs
- FCF funds the acquisition pipeline
Examples: Comfort Systems USA, Parker Hannifin, Broadridge Financial
3. Mission-Critical Niches
Hidden Oligopolies
Dominate tiny, essential markets where customers can't switch and competitors can't enter.
- Market share > 40% in niche
- Customer faces operational failure without product
- R&D creates technical moat
- Small TAM discourages large competitors
Examples: Disco Corp, Badger Meter, KLA Corp, Namsys
4. Exchange/Infrastructure Monopolies
Regulatory Moat
Financial market infrastructure with regulatory moats and compounding network effects.
- Government/regulatory mandate creates barriers
- Network effects compound with market growth
- 50%+ operating margins
- Nearly impossible to displace
Examples: MSCI (indexes), CME Group, Broadridge, CDSL (India)
Smith ยท Akre ยท Kantesaria โ Three Lenses
LongEq synthesizes three legendary investors. Each adds a different dimension to stock evaluation. When all three lenses agree, conviction is highest.
Terry Smith โ Fundsmith Equity Fund
"I like to bet on companies that have already won."
Chuck Akre โ Akre Capital Management
The "three-legged stool" framework
Dev Kantesaria โ Valley Forge Capital
"Asymmetric compounding" โ top 0.1% of global businesses only
Using the three lenses together: Before adding any position, ask: (1) Would Terry Smith hold this at this valuation? (FCF yield acceptable vs bond yields?) (2) Does Akre's three-legged stool hold? (Business + Management + Reinvestment opportunities?) (3) Would Kantesaria hold this forever? (Terminal value certain? Competitive position unassailable?) If all three say yes, highest conviction. If two of three, proceed cautiously.
7-Point Gate System (JCN Implementation)
JCN translates LongEq's methodology into a binary 7-point scoring system computed monthly for all 3,000 investable universe stocks. Stored in PROD_EODHD.main.PROD_LONGEQ_SCORES.
| Gate | Threshold | Data Source | Pass Rate |
|---|---|---|---|
| 1 โ Growth | FCF/share 5yr CAGR > 15% | PROD_OBQ_Growth_Scores.fcf_ps_cagr_5y | ~35% |
| 2 โ ROC | Cash ROC > 20% | PROD_OBQ_Quality_Scores.roic | ~45% |
| 3 โ Margins | FCF Margin > 20% | PROD_OBQ_Quality_Scores.fcf_margin | ~40% |
| 4 โ CapEx | CAPEX < 20% OCF AND PA/TA < 40% | PROD_LONGEQ_SCORES computed fields | ~70% (NULL PP&E = auto-pass) |
| 5 โ SBC | SBC < 30% OCF | cf_stockBasedCompensation / cf_totalCashFromOperatingActivities | ~80% |
| 6 โ Buybacks | Share count change < +5% (5yr) | shares_outstanding history | ~75% |
| 7 โ Interest | Interest < 20% op profit (or no debt) | is_interestExpense / is_operatingIncome | ~85% |
Score distribution (March 2026, 3,000-stock universe):
Score 7 โ Elite: 26 stocks (~0.9%) All 7 gates pass
Score 6 โ Strong: 109 stocks (~3.6%)
Score 5 โ Good: 291 stocks (~9.7%)
Score โค4: 2574 stocks (~85.8%) Majority don't qualify
LQ Rank: HIGHER NUMBER = BETTER (matches LongEq.com convention)
Rank 2,744 = best | Rank 1 = weakest
Top compounders: FICO(~1253), FTNT(~1252), KLAC, LRCX, MA, V
Price Linearity (Rยฒ):
Rยฒ of log(weekly adjusted_close) vs time, 5yr window
Weekly resampled from daily adjusted_close (splits + dividends)
Strictly โค month_date โ zero look-ahead bias
ORLY: 0.96 COST: 0.92 AAPL: 0.82 NVDA: 0.87 ADBE: 0.20Point-in-time accuracy: All fundamental gates use TRY_CAST(filing_date AS DATE) <= month_date โ only data that was actually available at the scoring date. Zero look-ahead bias. The universe filter uses effective_start <= month_date AND effective_end >= month_date from PROD_OBQ_Investable_Universe โ includes companies that were later delisted (no survivorship bias). OBQ score tables are never modified by the LongEq script.
Custom Scan Specification
Complete technical specification for how the LongEq scan is computed in scripts/longeq_score_recalculation.py. Run this script after all OBQ score scripts complete (always last in the chain).
EXECUTION ORDER (mandatory):
1. score_recalculation.py --score all --resume
2. momentum_score_recalculation.py --resume
3. composite_score_recalculation.py --resume
4. longeq_score_recalculation.py --resume โ always last
UNIVERSE: PROD_OBQ_Investable_Universe
WHERE effective_start <= month_date AND effective_end >= month_date
Top-3,000 US equities by market cap, annually reconstituted in May
Includes delisted companies โ no survivorship bias
PRICE LINEARITY ALGORITHM:
1. Pull adjusted_close from PROD_EOD_survivorship
WHERE date <= month_date (strictly โ no look-ahead)
2. Resample to weekly: last trading day of each ISO week
3. Take last 5 years = ~260 weekly observations (min 150 required)
4. Fit: log(price) = slope ร time + intercept (scipy.stats.linregress)
5. r_value_5yr = signed correlation (negative = falling trend)
6. price_rsq_5yr = r_valueยฒ (0-1, always positive)
7. price_cagr_5yr = exp(slope ร 52) - 1 (weekly slope โ annualized)
FUNDAMENTAL GATES ALGORITHM:
Filing date gate: TRY_CAST(filing_date AS DATE) <= month_date
Staleness gate: filing_date >= month_date - 548 days
Bad date safety: TRY_CAST silently drops '0000-00-00' rows (119k exist)
Latest filing: QUALIFY ROW_NUMBER() OVER (PARTITION BY symbol
ORDER BY TRY_CAST(filing_date AS DATE) DESC) = 1
Gate 1 (Growth): fcf_ps_cagr_5y > 0.15 (from PROD_OBQ_Growth_Scores)
Gate 2 (ROC): roic > 0.20 (from PROD_OBQ_Quality_Scores)
Gate 3 (Margins): fcf_margin > 0.20 (from PROD_OBQ_Quality_Scores)
Gate 4 (CapEx): capex_pct_ocf < 0.20 capex/ocf from cf_ columns
AND pata_ratio < 0.40 ppe/total_assets
NULL pata = 0.0 (asset-light, auto-passes)
Gate 5 (SBC): sbc_pct_ocf < 0.30 sbc/ocf from cf_ columns
Gate 6 (Buybacks): sharecount_chg_5yr < 0.05 (5yr share change)
Gate 7 (Interest): interest_pct_op < 0.20 OR NULL (no debt = auto-pass)
ltd_ta_ratio < 0.05 โ auto-pass if negligible debt
RANK DIRECTION:
Higher longeq_rank = BETTER (matches LongEq.com convention)
Rank assigned by: sort ascending by (longeq_score, price_rsq_5yr)
then assign 1..N so best stocks get highest rank numbers
PROGRESS TRACKING:
Table: PROD_EODHD.main.SCORE_CALC_PROGRESS
Key: 'longeq'
Idempotent: DELETE + INSERT per month_date (safe to re-run)
RUNTIME: ~27 seconds per month (3,000 symbols ร weekly regression)Data sources used (read-only):
PROD_EOD_survivorshipโ adjusted_close for price Rยฒ regressionPROD_OBQ_Quality_Scoresโ roic, fcf_margin (gates 2 + 3)PROD_OBQ_Growth_Scoresโ fcf_ps_cagr_5y (gate 1)PROD_EOD_Fundamentalsโ cf_capitalExpenditures, cf_totalCashFromOperatingActivities, cf_stockBasedCompensation, bs_propertyPlantEquipment, bs_totalAssets, is_interestExpense, is_operatingIncome, shares_outstanding, bs_longTermDebt, cf_freeCashFlow, market_capPROD_OBQ_Investable_Universeโ universe filter (effective_start/end)
Written to (exclusively): PROD_EODHD.main.PROD_LONGEQ_SCORES โ 31 columns, PRIMARY KEY (symbol, month_date).
Using LongEq in the Screener
The LongEq tab in the Stock Screener (/screener) provides a pre-configured interface for the quality compounder universe.
Auto-behavior when LongEq tab is clicked:
- Pre-loads LQ Score โฅ 5 filter (strong quality compounders only โ ~291 of 3,000)
- Sorts by LQ Rank descending โ highest rank (= best compounder) at top
- Reorders columns: LQ Rank โ LQ Score โ FCF CAGR 5yr โ Cash ROC โ FCF Margin โ CAPEX/OCF โ SBC/OCF โ Share Chg 5yr โ Interest/Op โ Price Rยฒ โ Price CAGR
- Shows actual metric values not binary 1/0 โ so you can compare within passing stocks
Available filters on LongEq tab:
| Filter | Options |
|---|---|
| LQ Score (0โ7) | Any / 7 Elite / 6+ Excellent / 5+ Strong / 4+ Good / 3 or below |
| Price Linearity Rยฒ (5yr) | Any / โฅ0.90 Very linear / โฅ0.80 Linear / โฅ0.70 / โฅ0.60 / <0.50 Erratic |
| Price CAGR (5yr) | Any / >30% / >20% / >15% / >10% / <0% declining |
| Growth Gate | Any / Pass (FCF CAGR>15%) / Fail |
| ROC Gate | Any / Pass (ROC>20%) / Fail |
| Margins Gate | Any / Pass (FCF margin>20%) / Fail |
| CapEx Gate | Any / Pass (capital-light) / Fail |
| SBC Gate | Any / Pass (SBC<30% OCF) / Fail |
| Buybacks Gate | Any / Pass (no dilution) / Fail |
| Interest Gate | Any / Pass (<20% op income) / Fail |
Screener universe: Exactly 3,000 stocks (top-3,000 US equities by market cap, annually reconstituted). The old 76,774-stock display was micro-cap/OTC noise โ the database was not corrupted. Scores are only available for the 3,000-stock investable universe; the broader survivorship table exists for backtesting only.
Alignment with Persistent Value Strategy
LongEq represents the direction JCN Persistent Value should evolve toward. The strategy assessment (April 2026) revealed PV has drifted far from its stated "value" mandate โ the portfolio's value score has fallen from 63 (2016) to 12 (2026). LongEq provides a rigorous, externally-validated framework to replace the loose quality-growth mandate with concrete, auditable criteria.
Current PV holdings vs LongEq gates (March 2026):
| Symbol | LQ Score | LQ Rank | Assessment |
|---|---|---|---|
| LRCX | 7 | 2732 | โ Elite โ perfect compounder alignment |
| KLAC | 7 | 2742 | โ Elite โ capital-light semiconductor equipment |
| ISRG | 5 | ~1200 | โ Strong โ surgical robotics monopoly |
| MSCI | 6 | ~1200 | โ Strong โ index/data infrastructure monopoly |
| MA | 6 | ~1200 | โ Strong โ payments network effect |
| V | 7 | 2737 | โ Elite โ pure network effect compounder |
| COST | 3 | ~750 | โ ๏ธ Low LQ score โ CAPEX heavy, margins below 20% |
| SPMO | N/A | N/A | โ ETF โ not evaluated by LongEq methodology |
| TSLA | 2 | ~400 | โ Low score โ capital-intensive, inconsistent FCF |
Recommended use: Before adding any new position to PV, run it through all 5 LongEq filters. Require LQ Score โฅ 5 for new entries. Use the LongEq screener tab to find candidates that meet criteria. This gives PV a consistent, defensible stock selection process aligned with the best-in-class quality compounder methodology.
NDR โ Core Philosophy
Source: Ned Davis Research (NDR) โ Being Right or Making Money (2014) and the NDR Factor Descriptions: Interactive Stock Screener. NDR is one of the most rigorous evidence-based quantitative research firms in institutional finance, founded in 1980. Their methodology is built on a single governing principle:
โDon't fight the tape, don't fight the Fed, beware of the crowd at extremes.โ
โ Ned Davis Research core maxim
NDR is fundamentally a weight-of-the-evidence shop. No single indicator is ever decisive. Instead, they build composite models โ diffusion indexes, multi-factor rankings, and regime classifiers โ that synthesize dozens of signals into a single, auditable score. Their approach is explicitly adaptive: what factors matter most depends on the current market regime.
This stands in deliberate contrast to LongEq, which is static: the 7 quality gates never change regardless of market environment. NDR's DFR dynamically re-weights its four factor pillars based on which factors are currently being rewarded by the market. In a momentum-driven bull market, technicals get overweighted. In a risk-off environment, the risk quality pillar dominates.
| NDR Model | Scope | Description | JCN Implementation |
|---|---|---|---|
| Big Mo | Market-level | Diffusion index: % of 96 BMES subindustry indices with bullish trend + momentum. Score 0โ100. >79 = bull, <56 = bear. | Not implemented (requires subindustry data) |
| Little Mo | Stock-level daily | Same logic as Big Mo but built from individual stocks. More tactical. | Not implemented |
| The Fab Five | Market timing | 5-component model (Tapeร2 + Sentiment + Monetary + Combo). Score โ5 to +5. | Not implemented (needs macro data) |
| Dynamic Focus Rank | Individual stocks | 5-sub-rank composite: Technical, Profitability, Valuation, Risk, Analyst Estimates. Dynamically weighted. | โ Implemented as JCN DFR (4/5 sub-ranks โ no analyst estimates data) |
Dynamic Focus Rank (DFR)
The Dynamic Focus Rank is NDR's primary individual stock selection tool. It ranks every stock in their Multi-Cap Universe on a cross-sectional percentile basis (0โ100, higher = better) using a composite of five sub-ranks. The โdynamicโ part refers to the factor weights shifting based on what regime the market is in โ not a static equal-weight blend.
The JCN implementation builds 4 of the 5 sub-ranks. The missing sub-rank is Analyst Estimate Rank (earnings revisions + earnings surprise), which requires sell-side estimate data not currently in our PROD database. The four implemented sub-ranks cover the core quantitative backbone of the methodology.
DFR Composite Formula
DFR Score = wtech ร Technical + wprof ร Profitability + wval ร Valuation + wrisk ร Risk
Where weights w are regime-conditional (see Regime section). All sub-ranks are cross-sectional percentiles 0โ100 within the JCN 3,000-stock investable universe.
The DFR composite score is stored monthly in DFR_COMPOSITE_SCORES alongside the regime used and its exact weights โ giving a full audit trail of every monthly score and the market environment it was computed under.
4 Sub-Rank Components
Each sub-rank is a cross-sectional percentile computed monthly within the JCN investable universe. All data is point-in-time: prices use only dates โค month-end; fundamentals use only filing_date โค month-end (no look-ahead bias).
1. Technical Rank
Weight: 20โ40%Table: DFR_TECHNICAL_SCORES
- 12M Momentum: Price return over 12 months (adjusted_close, point-in-time)
- 6M Momentum: Price return over 6 months
- 3M Momentum: Price return over 3 months
- Trend Deviation: % deviation of current price from 200-day SMA
dfr_technical_rank = 0.6 ร percentile(0.4รr12m + 0.3รr6m + 0.3รr3m) + 0.4 ร percentile(trend_deviation)
Higher deviation above trend = stronger uptrend = higher rank. Composite momentum uses standard skip-last-month convention.
2. Profitability Rank
Weight: 25โ35%Table: DFR_PROFITABILITY_SCORES
- Return on Assets (ROA): Net income / average total assets (TTM, from PROD_EOD_Fundamentals)
- Return on Equity (ROE): Net income / average shareholders' equity (TTM)
dfr_profitability_rank = 0.5 ร percentile(ROA) + 0.5 ร percentile(ROE)
Both metrics use filing_date for point-in-time compliance. Higher ROA/ROE = better capital efficiency = higher rank.
3. Valuation Rank
Weight: 20โ40%Table: DFR_VALUATION_SCORES
- Earnings Yield: 1 / PE ratio (where PE > 0). Higher = cheaper on earnings basis.
- FCF/EV Yield: Free cash flow / enterprise value. Capital-structure neutral.
- Sales/EV Ratio: Revenue TTM / enterprise value. Useful when earnings are negative.
- OCF Yield: Operating cash flow / market cap. Cash-based valuation.
dfr_valuation_rank = equal-weight average of 4 individual yield percentile ranks
Higher yield = cheaper = higher rank. Using 4 complementary metrics reduces sensitivity to any single accounting treatment.
4. Risk Rank
Weight: 15โ35%Table: DFR_RISK_SCORES
- Realized Volatility: Annualized std dev of 63 daily log returns of adjusted_close
- Accruals Ratio: (Net income โ OCF) / total assets. Lower = higher earnings quality.
- Mean Reversion Score: Z-score of current price vs 252-day mean. Higher = more stretched.
dfr_risk_rank = equal-weight average of 3 INVERTED percentile ranks (100 = lowest risk)
All three metrics are inverted: lower vol, lower accruals, and less price stretch all yield higher rank. A score of 100 means lowest-risk stock in the universe.
Regime-Conditional Weights
The defining feature of NDR's DFR โ and what distinguishes it from all static factor models โ is that factor weights shift monthly based on the detected market regime. When momentum stocks are being rewarded, the Technical sub-rank gets more weight. When investors are fleeing to safety, Risk rank dominates.
JCN detects regime by reading the median composite scores of the existing OBQ factor tables (read-only โ no writes to OBQ tables). This reuses the same signals already computed by the OBQ pipeline, adding zero new data dependencies.
| Regime | Trigger Condition | Technical | Profitability | Valuation | Risk |
|---|---|---|---|---|---|
| MOMENTUM | Median momentum score > 65 | 40% | 25% | 20% | 15% |
| DEFENSIVE | Median quality score > 65 | 20% | 35% | 25% | 20% |
| VALUE | Median value score > 65 | 20% | 25% | 40% | 15% |
| RISK_OFF | Median momentum score < 35 | 15% | 25% | 25% | 35% |
| NEUTRAL | None of the above | 25% | 25% | 25% | 25% |
Every month's regime call is logged to DFR_REGIME_LOG with the exact weights used and the OBQ median scores that drove the decision. This creates a full audit trail: you can always look back and understand exactly why a stock ranked where it did in any historical month.
โ Database Safety
Regime detection reads from PROD_OBQ_Momentum_Scores, PROD_OBQ_Quality_Scores, and PROD_OBQ_Value_Scores but never writes to them. All DFR output is isolated in the DFR_* table namespace. OBQ scores always run first; DFR runs last.
NDR DFR Scan Specification
The JCN NDR DFR scan covers the full 3,000-stock investable universe, scored monthly in sync with the OBQ pipeline. All 6 output tables are in PROD_EODHD.main.
| Table | Rows / Month | Description |
|---|---|---|
| DFR_TECHNICAL_SCORES | ~3,000 | Momentum + trend deviation sub-rank per stock |
| DFR_PROFITABILITY_SCORES | ~3,000 | ROA / ROE sub-rank per stock |
| DFR_VALUATION_SCORES | ~3,000 | 4-metric yield sub-rank per stock |
| DFR_RISK_SCORES | ~3,000 | Vol + accruals + mean-reversion sub-rank (inverted) |
| DFR_REGIME_LOG | 1 | Regime detected + weights used for the month |
| DFR_COMPOSITE_SCORES | ~3,000 | Final regime-weighted DFR score + rank per stock |
Execution order (enforced by run_investor_profiles.py):
# After OBQ monthly scores complete: python scripts/run_investor_profiles.py --resume # This runs in order: # 1. longeq_score_recalculation.py โ PROD_LONGEQ_SCORES # 2. ndr_score_recalculation.py โ DFR_* tables (6 tables) # Or run NDR alone: python scripts/ndr_score_recalculation.py --resume
Screener access: Open the Screener tab โ click NDR DFR. The tab auto-applies a DFR Score โฅ 75 filter scoped to NYSE + NASDAQ listed stocks only and sorts by dfr_composite_rank ascending (rank 1 = highest composite score). A Listed On dropdown lets you expand to OTC/Pink Sheets if desired. All 4 sub-ranks, the regime label, exchange, and individual metrics are available as columns.
Freshness monitoring: Stage 3 of the sync pipeline (sync_stage3.py) monitors both PROD_LONGEQ_SCORES and DFR_COMPOSITE_SCORESfor staleness. If either falls more than 45 days behind the latest EOD data, the sync report flags it with the exact script to run.
NDR DFR vs. LongEq โ When to Use Each
Both profiles cover the same 3,000-stock investable universe and update on the same monthly schedule. They answer fundamentally different questions:
| Dimension | LongEq Quality Compounder | NDR Dynamic Focus Rank |
|---|---|---|
| Philosophy | Absolute quality gates โ pass/fail on 7 criteria | Relative cross-sectional ranking โ percentile vs universe |
| Factor weights | Static โ always equal (1 point per gate) | Dynamic โ shift monthly based on market regime |
| Time horizon | Long-term compounder (3โ10 yr hold) | Medium-term adaptive (1โ12 month regime-aware) |
| Sector coverage | Excludes Financials, Utilities, Energy, REITs, Materials | All sectors included |
| Key question | Is this a durable compounding business? | Is this stock the best relative opportunity right now? |
| Score scale | 0โ7 binary gates | 0โ100 continuous composite |
| Best used for | PV portfolio candidate vetting, long-term adds | Tactical ideas, relative value within sector, rotation |
| Miss risk | May miss cyclicals that are excellent value near trough | May rank operationally weaker stocks highly during momentum regimes |
Power combination: Stocks that score highly on both profiles are the most compelling โ durable businesses (LongEq โฅ 5) that are also currently ranking in the top quartile on DFR (โฅ 75). This intersection typically yields 30โ80 stocks and represents the highest-conviction list: quality that the market is currently rewarding. Filter for it in the screener by combining both tab's filters simultaneously.
Fundsmith โ Core Philosophy
Source: Terry Smith, Investing for Growth (2020) โ a decade of annual shareholder letters and Financial Times columns. Fundsmith Equity Fund launched November 2010. As of 2024: ยฃ27B AUM, one of the best long-term track records in global equity.
โBuy good companies. Don't overpay. Do nothing.โ
โ Terry Smith, Three Steps to Heaven (2015)
Smith's north star is Return on Capital Employed (ROCE) โ not FCF margin, not EPS growth, not revenue growth. He wants businesses that earn significantly more on their capital than it costs to deploy that capital. His second filter is gross margin as a proxy for pricing power and intangible moats. Third: cash conversion โ profits must become cash. He explicitly rejects financial leverage as a driver of returns.
What Terry Smith avoids (stated explicitly in his book): Banks and financials (โcan't understand the balance sheetโ), airlines and utilities (structural capital destroyers), commodity businesses (price-takers), and acquisition-driven compounders (โlet the management deploy capital โ if they invest in acquisitions, watch carefullyโ).
Typical holdings: MSFT, META, IDEXX Laboratories, Philip Morris, L'Orรฉal, Novo Nordisk, Visa, Automatic Data Processing. 20โ30 positions, very low turnover.
Fundsmith 6-Gate System (JCN)
JCN implements Terry Smith's methodology as a 6-gate binary scoring system (0โ6). Each gate reflects a specific criterion from his published methodology. Score stored in PROD_FUNDSMITH_SCORES.
| Gate | Threshold | Metric | Rationale |
|---|---|---|---|
| ROCE | > 15% | Operating income / (Total assets โ Current liabilities) | Primary quality filter โ capital efficiency above cost of capital |
| Gross Margin | > 50% | Gross profit / Revenue TTM | Pricing power proxy โ intangible moat indicator |
| Cash Conversion | > 80% | Operating cash flow / Net income | Profits must become cash โ 'cash is fact, profit is opinion' |
| Debt / EBIT | < 2ร (or net cash) | Net debt / Operating income | Avoids leverage-dependent businesses |
| Revenue Growth | > 3% / yr (3yr) | 3yr revenue CAGR | Organic growth โ not acquisition-driven |
| FCF Yield | > 2.5% | Free cash flow / Market cap | Valuation gate โ 'don't overpay' |
Excluded sectors (flagged, still scored): Financials, Energy, Materials, Utilities. Screener: Click Fundsmith tab โ auto-applies Score โฅ 4, NYSE/NASDAQ only, sorts by score descending.
Quality Growth โ Polen Capital / Fidelity Contrafund
A combined profile inspired by two funds that occupy the same investment space from different angles:
Polen Capital (Focus Growth)
- โข Pure earnings compounder philosophy โ buys businesses with consistent double-digit EPS growth
- โข Highly concentrated: 20โ25 positions held for 3โ5+ years
- โข Revenue growth > 10%/yr, EPS growth > 10%/yr, ROE > 20%
- โข Net cash preferred โ debt is a risk multiplier, not a tool
- โข Will pay 25โ35ร earnings for a business growing at 15%+
- โข Avoids cyclicals, commodities, capital-intensive businesses
Fidelity Contrafund (Will Danoff)
- โข GARP โ Growth At a Reasonable Price. PEG < 2 preferred
- โข Large, diversified (300+ positions) but top 10 = ~35% of fund
- โข Revenue growth > 15%/yr for core positions
- โข Strong forward EPS revision trend โ upward estimate revisions matter
- โข Tech-heavy: NVDA, AMZN, META, MSFT consistently top holdings
- โข More valuation-aware than Polen โ won't pay any price for growth
Quality Growth 5-Gate System (JCN)
JCN combines both methodologies into a 5-gate system targeting consistent earnings compounders with high ROE at a reasonable valuation. Score stored in PROD_QUALITYGROWTH_SCORES.
| Gate | Threshold | Metric | Rationale |
|---|---|---|---|
| Revenue Growth | > 10% / yr (3yr) | 3yr revenue CAGR | Minimum growth threshold โ both Polen and Danoff require double-digits |
| EPS Growth | > 10% / yr (3yr) | 3yr net income CAGR | Earnings must grow consistently โ not just revenue |
| ROE | > 20% | Return on equity TTM | Polen's primary capital efficiency filter |
| Debt | Net D/E < 1.0 | Net debt / Shareholder equity | Growth should be self-funded โ not levered |
| Not Expensive | PEG < 3.0 | Forward PE / Revenue growth (as %) | Contrafund's GARP filter โ won't pay any price |
Excluded sectors (flagged): Energy, Utilities, Materials. Screener: Click Quality Growth tab โ auto-applies Score โฅ 3, NYSE/NASDAQ only, sorts by score descending.
GuruFocus โ Buffett/Munger Predictability + Margin of Safety
Sources: Charlie Tian, Invest Like a Guru (2017); GuruFocus.com Manual of Stocks; Warren Buffett's annual letters and Berkshire shareholder meetings.
GuruFocus is the most conservative and valuation-conscious of all five profiles. Where Terry Smith pays any price for quality and Polen pays 35ร for growth, GuruFocus enforces a hard valuation gate: you must buy at or near historical median multiples. This is pure Buffett/Munger: โIt's far better to buy a wonderful company at a fair price than a fair company at a wonderful price.โ
The unique concept is Business Predictability โ not just current quality, but 10-year consistency of revenue and earnings. A business that grew revenue every year for 10 years is more predictable than one that grew faster but with gaps. GuruFocus rates predictability 1โ5 stars based on this consistency. JCN approximates this with 5-year consistency checks.
The Piotroski F-Score is also computed and displayed โ a 9-point financial health composite (ROA, cash flow, leverage, liquidity, efficiency trends). While not a gate, it provides a quick financial health check alongside the main 7 gates.
GuruFocus 7-Gate System (JCN)
JCN implements the GuruFocus methodology as a 7-gate system. The key distinction: it is the only profile with a hard valuation gate โ stocks must trade at or near their historical PE median. Score stored in PROD_GURUFOCUS_SCORES.
| Gate | Threshold | Metric | Rationale |
|---|---|---|---|
| Revenue Consistency | > 5% / yr (5yr) | 5yr revenue CAGR | Predictability โ consistent growth over full cycle |
| EPS Consistency | > 5% / yr (5yr) | 5yr net income CAGR | Predictable earnings โ Buffett's owner earnings concept |
| ROE | > 12% avg (5yr) | Average ROE over 5yr filings | Munger: businesses that earn 12%+ ROE for decades create wealth |
| Debt | D/E < 0.5 | Total liabilities / Shareholder equity | Munger's low-debt rule โ avoid leverage-dependent businesses |
| Operating Margin | > 15% | Operating margin TTM | Durable profitability โ competitive advantage signal |
| FCF Consistency | โฅ 4 of last 5 yrs positive | Years with positive free cash flow | Owner earnings must be real cash, not accounting artifacts |
| Valuation | PE < 130% of historical median | Current PE / Median historical PE | The hard valuation gate โ only GuruFocus enforces this |
Excluded sectors (flagged): Financials (banks โ earnings unpredictable). Screener: Click GuruFocus tab โ auto-applies Score โฅ 4, NYSE/NASDAQ only, sorts by score descending.
All 5 Investor Profiles Compared
Each profile captures a different dimension of investment quality. Understanding what each one does not measure is as important as what it does.
| Dimension | LongEq | Fundsmith | Quality Growth | GuruFocus | NDR DFR |
|---|---|---|---|---|---|
| Primary filter | FCF margin + ROC > 20% | ROCE > 15% | EPS growth > 10%/yr | 10yr earnings consistency | Cross-sectional rank (regime-weighted) |
| Valuation gate? | Soft (FCF yield) | Soft (FCF yield) | Soft (PEG < 3) | Hard (PE vs. historical) | None |
| Growth req. | FCF CAGR > 15% | Revenue > 3%/yr | Revenue + EPS > 10%/yr | Revenue + EPS > 5%/yr | Momentum-based |
| Debt stance | Interest < 20% op income | Net debt < 2ร EBIT | Net D/E < 1.0 | D/E < 0.5 (strict) | Accruals ratio |
| Capital quality | FCF margin + buybacks | ROCE + gross margin | ROE > 20% | ROE > 12% avg | Profitability rank |
| Sectors avoided | Banks/utilities/energy | Banks/airlines/energy | Energy/utilities/materials | Financials (flagged) | None excluded |
| Valuation tol. | None | High | Medium | Low (needs MOS) | None |
| Time horizon | Long (FCF compounders) | Very long (do nothing) | Medium-long (growth hold) | Long (predictable biz) | Medium (regime-aware) |
| Score scale | 0โ7 | 0โ6 | 0โ5 | 0โ7 | 0โ100 continuous |
| Typical names | LRCX, ISRG, COST | MSFT, IDEXX, PM | NVDA, META, AMZN | JNJ, WM, KO | Top cross-sect. rankers |
Highest-conviction intersection: A stock passing LongEq โฅ 5 AND Fundsmith โฅ 4 AND GuruFocus โฅ 5 simultaneously is an extremely rare, durable compounder trading at reasonable valuation. This intersection typically yields fewer than 20 stocks globally โ but historically contains the best long-term performers.
100 Baggers โ Christopher W. Mayer Methodology
Source: Christopher W. Mayer, 100 Baggers: Stocks That Return 100-to-1 and How To Find Them (2015). Mayer studied 365 stocks that turned $1 into $100+ between 1962 and 2014 โ an average 26-year journey (median). The fastest took ~5 years.
โThe most essential ingredient is a business that can earn a high return on capital for a long time and has the ability to reinvest those earnings at high rates.โ
โ Christopher W. Mayer, 100 Baggers
Unlike the other investor profiles which are primarily quality screens, 100 Baggers is a growth + size + time framework. The key insight is mathematical: a stock returning 20% annually becomes a 100-bagger in ~25 years. But if earnings AND multiples both expand simultaneously (โtwin enginesโ), the timeline compresses dramatically.
The Math
- โข 20% annual return = 100x in 26 years
- โข 25% annual return = 100x in 19 years
- โข 30% annual return = 100x in 16 years
- โข Twin engines (earnings + multiple) = fastest path
- โข Starting small matters โ less distance to cover
The Business
- โข High ROE โฅ 20% consistently (not from leverage)
- โข Ability to reinvest at those high rates for years
- โข Economic moat: brand, switching costs, network effects, low-cost producer
- โข High gross margins = moat signal
- โข Sales growth โฅ 10% top-line (Mayer minimum)
The Mindset
- โข Coffee-can: buy and hold 10+ years
- โข Median starting market cap: $500M
- โข Owner-operators preferred (skin in the game)
- โข PEG < 1.0 = major plus
- โข Be a reluctant seller โ almost never sell
Key differentiator vs other profiles: This is the only profile focused on potential magnitude rather than current quality. A Fundsmith stock is already great today. A 100-bagger candidate is great and small and growing fast โ it needs room to multiply. That's why market cap at time of purchase is as important as quality metrics.
100 Baggers 5-Scan System (JCN)
JCN implements Mayer's methodology as 5 preset scans on the 100 Baggers screener tab. No new scoring table โ all data comes from existing PROD fundamentals and OBQ scores. Each scan targets a different angle of the 100-bagger hunt.
1. Classic Hunt
ROE > 20% + Revenue growth > 10% + Market cap < $2B + D/E < 0.5
Sorted by ROE descending
Mayer's core formula. High return on capital + room to grow + conservative leverage. The most faithful replication of his quantitative criteria.
2. Small Cap Compounders
Market cap $100Mโ$1B + ROE > 20% + Earnings growth > 15%
Sorted by earnings growth descending
The median 100-bagger started at $500M market cap. This scan finds stocks before institutional discovery โ small enough to multiply, already proving profitability.
3. Twin Engines
Revenue growth > 15% AND Earnings growth > 15% + PEG < 1.5
Sorted by earnings growth descending
Mayer's "explosive returns come from rising earnings AND a higher multiple." Both engines firing simultaneously โ the fastest path to 100x. PEG gate ensures not wildly overvalued.
4. Coffee-Can
ROE > 20% + Gross margin > 50% + D/E < 0.3 + Revenue growth > 8%
Sorted by gross margin descending
Mayer's coffee-can philosophy: buy high-moat businesses and hold 10+ years. Gross margin > 50% signals durable competitive advantage. Low debt ensures survival through any cycle.
5. Quality at Small Size
OBQ Quality Score โฅ 75 + Market cap $200Mโ$5B + ROE > 15%
Sorted by quality score descending
Undiscovered quality: high OBQ composite score but still small enough to multiply meaningfully. Uses the full OBQ factor model as the quality gate โ the most sophisticated of the 5 scans.
What the 100 Baggers tab shows: Market cap, ROE, Revenue growth, Earnings growth, Gross margin, Debt/Equity, PEG ratio โ the 7 columns Mayer cares about most, shown first when the tab is active. All scans default to NYSE/NASDAQ only (no OTC/Pink Sheets).
Honest caveat: Mayer explicitly says there is โno magic formula or easy way to screenโ for 100-baggers. These scans identify the starting conditions he found common among 100-baggers โ not a guarantee. The other critical ingredients (owner-operators, correct identification of the moat, willingness to hold for 10+ years) are human judgments the screener cannot replace.
Factor Screener โ 20 Built-In Presets
The JCN Screener includes 20 pre-configured factor presets drawn from Morningstar Factor Profile Methodology and NDR Interactive Stock Screener Factor Descriptions. Each preset is a single dropdown selection that sets the optimal filter for that factor โ no manual configuration needed.
| # | Preset Name | Tab | Key Filter | Academic Source |
|---|---|---|---|---|
| 1 | Size Factor Premium | Descriptive | Market cap tiers: Mega/Large/SMID/Small/Micro | Fama-French (1993), Banz (1981) |
| 2 | Deep Value (Graham) | Valuation | P/E < 10โ15 | Graham, Morningstar Style Box |
| 3 | GARP (Peter Lynch) | Valuation | PEG < 1.0โ2.0 | Lynch, Morningstar Style Score |
| 4 | EV Screen | Valuation | EV/EBITDA < 6โ15ร | NDR Valuation: EBIT/EV, FCF/EV |
| 5 | Shareholder Yield | Valuation | Dividend yield tiers (2%โ6%+) | Morningstar Total Yield Factor |
| 6 | Accelerating Growth | Growth | Revenue growth > 10โ30% | NDR Standardized Unexpected Revenue |
| 7 | Consistent Compounders | Growth | Earnings growth 8โ20% | NDR EPS Stability, Sales Stability |
| 8 | Earnings Momentum | Growth | % below 52W high < 5โ20% | NDR Standardized Unexpected EPS |
| 9 | R&D Reinvestors | Growth | OBQ Growth Score โฅ 65โ85 | NDR R&D/Assets, L-T EPS Growth |
| 10 | ROCE Elite | Profitability | ROE > 20โ30% | Morningstar Quality Factor (Asness 2019) |
| 11 | Efficient Operators | Profitability | Gross margin > 50โ70% | NDR Gross Profit/Assets, Asset Turnover |
| 12 | Quality Minus Junk | Profitability | OBQ Quality Score โฅ 60โ85 | AQR QMJ (Asness, Frazzini, Pedersen 2019) |
| 13 | Profitability Improvement | Profitability | Operating margin > 15โ30% | NDR ROE - 5yr Average, Pretax Margin |
| 14 | Classic Momentum | Momentum | YoY return > 10โ50% | Jegadeesh-Titman (1993), Carhart (1997) |
| 15 | Trend Following | Momentum | OBQ Momentum Score โฅ 65โ85 | NDR Trend: 13W/52W deviation, % above MA |
| 16 | Momentum + Quality Combo | Momentum | JCN Quality Momentum blend โฅ 65โ85 | Morningstar 2-factor Sharpe optimization |
| 17 | Low Volatility Premium | Momentum | Beta < 0.5โ1.0 | Ang, Hodrick, Xing & Zhang (2006) |
| 18 | Fortress Balance Sheet | Fundamentals | Current ratio > 1.5โ3.0ร | NDR Quick Ratio, Cash Position, Interest Coverage |
| 19 | Dividend Aristocrats | Fundamentals | Dividend yield 1%โ4% tiers | Morningstar Yield Factor, NDR Dividend Integrity Index |
| 20 | Financial Health Score | Fundamentals | Piotroski F-Score โฅ 6โ8 | Piotroski (1996), NDR Modified F-Score |
All 20 presets use data already computed in the JCN PROD database โ no new scoring scripts required. Each preset is implemented as a dropdown option on the relevant tab. Options are tiered so you can select aggressive, moderate, or conservative thresholds for the same factor.
Liquidity & Size โ Can You Actually Trade It?
Until recently the screener had no volume data at all, which meant a screen could hand you a name that looks superb on every factor but that you cannot buy or exit at a sensible price. Two new filters close that gap.
Liquidity uses 30-day average dollar volume (average daily price ร volume), the standard institutional measure of tradability. The tiers are Tradable ($1M+/day), Moderately liquid ($5M+), Liquid ($20M+ โ a common institutional floor), Very liquid ($50M+), and Mega-liquid ($100M+).
Market-Cap Tier (Mega โฅ$200B, Large $10โ200B, Mid $2โ10B, Small $300Mโ2B, Micro <$300M) is offered as a separate control on purpose. Size and liquidity are different things: a $10B company can still trade thinly, and dollar volume โ not market cap โ is what determines whether you can build or exit a position without moving the price.
The New Factor Library
A nightly precompute now stores, for every symbol, each of 347 factors as three values: the raw number, its percentile against the CORE universe, and its decile bucket. Because the work is done overnight, screening on these factors is effectively instant.
These factors come from four families we compute but previously had no way to screen on: growth vectors (revenue/earnings/FCF/EBITDA growth over 1, 3, 5, 10 and 15 years), trend quality (how steady that growth has been, not just how fast), consistency & acceleration (z-scores, variability, positive-quarter rates, whether growth is speeding up or slowing), and risk (beta, idiosyncratic and realised volatility, drawdown, Sharpe and Sortino).
One rule makes the whole library readable: 100 is always best, 0 is always worst.
For metrics where a lower raw number is better โ beta, volatility, drawdown โ the percentile is inverted before it is stored. So a stock in the 90th percentile for โMax Drawdownโ has had a shallow drawdown, not a severe one. You never have to remember which direction a given factor runs in.
Fifteen headline factors are exposed as dropdowns on the New Factors tab, each filterable by percentile band (top decile, top quintile, top third, above median, and so on). The remaining factors are already computed and published through the screener's factor registry, ready to be surfaced as the interface expands.
ValueCon โ Marc Gerstein's 4-Step Value Connection
Source: Marc H. Gerstein, The Value Connection: A Four-Step Market Screening Method to Match Good Companies with Good Stocks (Wiley Trading, 2003). Gerstein was a senior analyst at Multex.com (later Reuters) and developed this methodology as a systematic framework for finding quality companies trading at reasonable prices โ bridging pure value investing and growth at a reasonable price.
โThe goal is not just to find cheap stocks, and it is not just to find quality companies. The goal is to find quality companies whose stocks are also cheap โ that is the Value Connection.โ
โ Marc H. Gerstein, The Value Connection (2003)
The 4-step method is sequential โ each step narrows the universe further. A stock must pass all four steps to qualify as a โfull connection.โ The power of the method is that it prevents the two classic investor mistakes: buying quality at any price (growth trap) or buying cheap stocks that are cheap for a reason (value trap).
Screen for businesses with durable competitive advantages. Key signals: ROE โฅ 15%, operating margin โฅ 12%, consistent revenue growth. These metrics identify companies earning above their cost of capital.
- โ Return on Equity โฅ 15%
- โ Operating Margin โฅ 12%
- โ Revenue growth positive
- โ Earnings quality (not just reported)
Among quality companies, find those priced attractively. Key signals: PE < 20, EV/EBITDA < 14, P/B < 3. Gerstein emphasizes EV/EBITDA as the superior valuation metric because it's capital-structure neutral.
- โ PE ratio < 20
- โ EV/EBITDA < 14 (preferred)
- โ Price/Book < 3
- โ PEG ratio < 1.5 for growth
Avoid value traps by requiring price confirmation. A quality, cheap stock that the market is also recognizing (price momentum) reduces the risk of catching a falling knife. Gerstein called this 'the market's vote.'
- โ Positive 12-month price momentum
- โ OBQ Momentum Score โฅ 50
- โ Not in confirmed downtrend
- โ JCN Value Momentum blend
Normalize valuation by sector. A PE of 15 is expensive for Utilities but cheap for Technology. Gerstein's final step evaluates the stock relative to its sector peers โ our JCN composite scores are already cross-sectionally normalized.
- โ OBQ Quality Score โฅ 50 (sector-relative)
- โ JCN full composite โฅ 60
- โ Value score above sector median
- โ No sector-specific red flags
ValueCon 5-Scan System (JCN)
JCN implements Gerstein's methodology as 5 preset scans on the ValueCon tab, covering different combinations and emphasis points of his 4-step framework:
| Preset | Steps Applied | Key Filters | Sort By |
|---|---|---|---|
| Full Connection | All 4 Steps | ROE โฅ 15% + EV/EBITDA < 14 + Rev Growth โฅ 5% + Momentum โฅ 50 | JCN Value Momentum |
| Quality + Value | Steps 1 & 2 | ROE โฅ 15% + Op Margin โฅ 12% + PE < 20 + P/B < 3 | Value Score |
| GARP | Steps 1, 2, 4 | Rev Growth โฅ 10% + EPS Growth โฅ 8% + PEG < 1.5 + Op Margin โฅ 12% | JCN GARP Blend |
| Deep Value | Step 2 + Quality Gate | EV/EBITDA < 10 + P/B < 2 + Quality Score โฅ 50 (no trap filter) | Value Score |
| Value Momentum | Steps 2 & 3 | JCN Value Momentum blend โฅ 70 (cheap + confirmed) | JCN Value Momentum |
Academic grounding: The quality-value combination is supported by Asness, Frazzini & Pedersen โQuality Minus Junkโ (AQR, 2019) which shows quality stocks are persistently underpriced. The value-momentum combination is supported by Asness, Moskowitz & Pedersen โValue and Momentum Everywhereโ (Journal of Finance, 2013) โ combining value and momentum is more powerful than either factor alone. GARP methodology is validated by O'Shaughnessy's What Works on Wall Street (4th ed., 2011) โ PEG < 1 combined with earnings growth is one of the strongest long-term factor combinations.
No new PROD tables required
ValueCon uses only existing FIELD_MAP fields: ROE, EV/EBITDA, operating margin, PE, P/B, PEG, revenue growth, earnings growth, momentum score, JCN blended composites. All data is already in PROD_EOD_Fundamentals and PROD_JCN_Composite_Scores โ no scoring script needed.
SectorSpec โ Sector-Specific Screening Philosophy
Cross-sector screens apply the same metrics to all companies โ but the most predictive factors differ dramatically by sector. A PE ratio of 30 is cheap for a hypergrowth software company and expensive for a utility. EV/EBITDA is the standard for Energy but meaningless for Banks. SectorSpec applies the academically validated factors that work best within each GICS sector.
The research foundation: Tortoriello (2009) showed that gross margin was the #1 single factor in Technology but nearly irrelevant in Utilities. O'Shaughnessy (2011) showed dividend yield dominated in Staples and REITs. Fama-French (1992) showed book-to-market was strongest in Financials and Real Estate. Sector context changes everything.
Primary sources:
- O'Shaughnessy (2011) โ What Works on Wall Street, 4th ed.(Largest historical backtesting study: 40+ years, 50+ factors, all sectors analyzed separately)
- Tortoriello (2009) โ Quantitative Strategies for Achieving Alpha (McGraw-Hill)(McGraw-Hill; tested 140+ fundamental and technical factors by GICS sector 1987โ2008)
- Fama & French (1992, 1993, 2015) โ Three-Factor and Five-Factor Models(Cross-sectional factor research showing sector-varying factor premiums)
- iMarketSignals (2015โ2020) โ Sector ETF studies: XLK, XLV, XLP, XLI, XLB, XLU(Practical top-5 stock selection within S&P 500 sector ETFs using momentum + fundamentals)
- AQR (Asness et al., 2019) โ Quality Minus Junk(Profitability factors work across all sectors but with different magnitudes)
SectorSpec โ 11-Sector Screening System (JCN)
Each sector preset locks in gics_sector + applies the empirically strongest 2โ3 additional filters for that sector. Sort and priority columns are also sector-optimized.
| Sector | Key Filters | Why These Factors? | Sort |
|---|---|---|---|
| Technology | Gross Margin โฅ 40% + Rev Growth โฅ 8% + Quality โฅ 55 | Gross margin = software moat signal (Tortoriello 2009: #1 factor in Tech). Revenue growth = TAM capture. Platform compounders have both. | JCN Quality Momentum |
| Health Care | Op Margin โฅ 10% + Rev Growth โฅ 6% + D/E โค 1.0 | Op margin separates commercial-stage from burn-rate biotech. Low debt = optionality for R&D and acquisitions. (Fama-French 2015: profitability factor strongest in HC) | JCN GARP |
| Consumer Staples | Op Margin โฅ 8% + Div Yield โฅ 1.5% + Beta โค 0.9 | O'Shaughnessy (2011): dividend yield #1 single factor in Staples. Low beta = defensive premium. Op margin = brand pricing power. | JCN QARP |
| Industrials | ROE โฅ 12% + Rev Growth โฅ 5% + D/E โค 1.5 | ROE = capital allocation quality (asset-heavy sector). D/E cap protects through economic cycle. (Tortoriello 2009: ROE + capex efficiency #1-2 in Industrials) | JCN Full Composite |
| Materials | EV/EBITDA โค 14 + ROA โฅ 6% + Momentum โฅ 50 | EV/EBITDA best commodity-cycle valuation. Momentum extremely effective in commodity sectors (Tortoriello 2009: price momentum #1 factor in Materials). (Fama-French 1993: value especially strong in Materials) | Momentum Score |
| Utilities | Div Yield โฅ 2.5% + Beta โค 0.85 + Fin Strength โฅ 50 | Yield IS the return in regulated utilities (O'Shaughnessy 2011). Low beta = defensive premium investors pay. Financial strength avoids leverage blowups. (Tortoriello 2009: fin strength #1 in Utilities) | JCN QARP |
| Energy | EV/EBITDA โค 8 + Op Margin โฅ 10% + Fin Strength โฅ 45 | EV/EBITDA strips away volatile reported earnings (O'Shaughnessy 2011: strongest valuation factor in Energy). Low-cost producers survive commodity downturns. (Fama-French 2015: profitability + investment factors strong in Energy) | Value Score |
| Financials | ROE โฅ 10% + P/B โค 2.0 + Quality โฅ 50 | ROE = THE metric for banking (how well is depositor capital deployed?). P/B is standard bank valuation anchor. (O'Shaughnessy 2011: ROE + P/B combination strongest in Financials; Fama-French 1992: book-to-market especially powerful in Financials) | JCN QARP |
| Consumer Discretionary | Rev Growth โฅ 7% + EPS Growth โฅ 8% + Gross Margin โฅ 30% | Consumption cycles drive operating leverage โ revenue growth โ large EPS expansion for asset-light brands. Gross margin = brand moat durability. (Tortoriello 2009: earnings growth + revenue growth #1-2 in CD) | Growth Score |
| Communication Services | Op Margin โฅ 12% + Rev Growth โฅ 5% + Quality โฅ 50 | Scale businesses โ massive fixed costs mean margin expansion flows almost entirely to equity. Quality screen differentiates platform compounders from legacy telecom in secular decline. (Fama-French 2015: profitability factor dominant in platform businesses) | JCN Quality Momentum |
| Real Estate (REITs) | Div Yield โฅ 3.0% + P/B โค 2.5 + Fin Strength โฅ 45 | REITs must distribute โฅ90% of taxable income โ yield IS the thesis. P/B approximates NAV discount/premium. Fin strength avoids leverage blowups (highly levered by nature). (O'Shaughnessy 2011: dividend yield dominant; Fama-French 1992: book-to-market strong in RE) | Dividend Yield |
Design principle: Each sector screen uses only existing FIELD_MAP fields โ no new PROD tables required. The gics_sector field comes from PROD_DASHBOARD_SNAPSHOT which already contains GICS classifications from EODHD. All filter thresholds are set conservatively to return a meaningful number of stocks (typically 20โ80 per sector) rather than an overly restrictive screen that returns 3.
GICS Sector Values in Database
Exact sector strings used: "Information Technology" ยท "Health Care" ยท "Consumer Staples" ยท "Industrials" ยท "Materials" ยท "Utilities" ยท "Energy" ยท "Financials" ยท "Consumer Discretionary" ยท "Communication Services" ยท "Real Estate"
Moat Score โ Morningstar 5-Source Competitive Moat Framework
Source: Pat Dorsey, The Little Book That Builds Wealth (Wiley, 2008); Morningstar Economic Moat Methodology (Morningstar, Inc.). An economic moat is a structural competitive advantage that allows a firm to earn above-average returns on invested capital for a sustained period โ preventing competitors from eroding those returns.
โWide moat companies have structural advantages so durable that they are likely to fend off competition and earn excess returns for at least 20 years. Narrow moat companies have advantages expected to last at least 10 years. No-moat companies face significant competitive threats.โ
โ Morningstar Economic Moat Methodology
Morningstar identifies five sources of competitive moat. JCN proxies each source using financial metrics available in the PROD_EOD_Fundamentals database, calibrated against the actual distribution of 9,707 stocks in the investable universe:
Brands, patents, regulatory licenses that let companies charge premium prices. Coca-Cola is sugar water โ but consumers pay a premium.
Brand & patent pricing power shows up entirely in gross margin. Commodity businesses can't sustain high gross margins.
When switching is too costly/disruptive for customers. Oracle's integrated databases would cause massive disruption to change.
Sticky customers = pricing power = sustained operating margin even as competitors try to undercut.
Product becomes more valuable as more people use it. CME Group's clearinghouse keeps volume captive through liquidity.
Network effect companies invest heavily in platform development. R&D intensity signals this intent โ not perfect, but directional.
Structural cost structure advantages that competitors can't replicate. UPS's ground network has low marginal costs and high returns.
Companies with real cost advantages generate more free cash from each dollar of revenue than competitors can.
Market niche served by one or a few companies โ new entrants can't earn adequate returns. Kinder Morgan's pipelines.
Persistent ROE above cost of capital (โฅ21%) only occurs when something prevents competition from eroding returns.
Moat Score 0โ10 Methodology (JCN)
Each of the 5 moat sources scores 0, 1, or 2 points. The total (0โ10) maps to Morningstar's three moat tiers. Thresholds are calibrated from the actual distribution of 9,707 universe stocks.
| Moat Source | Metric | 2 pts (top quartile) | 1 pt (above median) | 0 pts |
|---|---|---|---|---|
| Intangible Assets | Gross Margin | โฅ 65% (p75) | โฅ 44% (p50) | < 44% |
| Switching Costs | Operating Margin | โฅ 28% (p75) | โฅ 16% (p50) | < 16% |
| Network Effect | R&D / Revenue | โฅ 19% (p75 of R&D spenders) | > 0% (any R&D) | 0% or NULL |
| Cost Advantage | FCF Margin | โฅ 24% (p75) | โฅ 10% | < 10% or NULL |
| Efficient Scale | Return on Equity | โฅ 21% (p75 โ above CoC) | โฅ 12% (p50 โ earning CoC) | < 12% or NULL |
All 5 sources showing strength. Durable competitive advantage expected to last 20+ years. Examples: Microsoft, Apple, Visa, LVMH.
Some competitive advantages present but not across all 5 sources. Competitive position expected to hold 10+ years.
Limited structural advantages. Excess returns likely to erode quickly as competition enters or conditions change.
Important caveats
- โข R&D proxy is sector-biased โ Tech/Biotech score 2 automatically; Retail/Utilities score 0 even with real cost/scale moats
- โข This is a quantitative proxy โ not Morningstar's analyst-assigned moat rating (which requires qualitative judgment)
- โข Financials ROE is inflated by leverage โ interpret moat_score for Banks/Insurance with extra caution
- โข Requires โฅ 2 non-null metrics to produce a score; companies with sparse data return NULL
Rule Breaker โ David Gardner's 6-Sign Framework
Source: David Gardner & Tom Gardner, The Motley Fool Investment Guide(Simon & Schuster, updated ed.). Chapter 20: โ6 Signs of a Rule Breaker.โ David Gardner co-founded The Motley Fool in 1993 and has managed the Rule Breakers newsletter service since 2004, generating ~97% average return per pick vs. ~56% for the S&P 500 over ~300 recommendations (through 2017, per the book).
โInvesting in great companies early in their high-growth stages, then holding them for the long term, will provide the highest possible returns. Period. We call such companies Rule Breakers.โ
โ David Gardner, The Motley Fool Investment Guide, Ch. 20
Rule Breakers are companies that disrupt their industries rather than playing by the rules. Gardner identified 6 signs that distinguish true Rule Breakers from โRule Fakersโ โ companies that merely look like disruptors. Historical Rule Breakers from the book include Amazon, Netflix, Baidu, Salesforce, and Google โ all of which were called โovervaluedโ when Gardner first recommended them (Sign 6 is a positive indicator).
Dominant market share in an important, emerging industry. The company doesn't just participate โ it leads. Must be in a growth sector (Tech, Healthcare, Consumer Discretionary, or Communication Services).
Moat via business momentum, patents, visionary leadership, or inept competition. The company can fend off inevitable competitors.
Contrary to buy-low conventional wisdom โ a rising stock is Newton law in the market. Winners keep winning. The best growth stocks sustain extended runs.
Visionary leaders with long-term focus. Backed by proven venture investors. Management track record matters more than any single quarter.
Products and reputations that consumers love. A brand that saves customers time and lets the company charge a premium. You cannot screen for brand strength โ that is the edge.
The most iconoclastic sign. Being called overvalued by financial media is POSITIVE โ it means other investors are on the sidelines. Amazon, Netflix, and Google were all called overvalued when Gardner first recommended them.
Rule Breaker Score 0โ10 (JCN)
JCN normalizes the 6-sign score to 0โ10. Each sign contributes 0โ2 points (except Sign 6 which is binary 0 or 2). The raw sum is scaled by the number of non-null signs available, so stocks with missing data are not penalized unfairly.
| Sign | Metric | 2 pts | 1 pt | 0 pts |
|---|---|---|---|---|
| Sign 1: Top Dog | Sector + Rev Growth + Age | Growth sector + Growth โฅ15% + Age โค15yr | Growth sector + Growth โฅ8%, OR Growth โฅ15% + Age โค20yr | Otherwise |
| Sign 2: Advantage | Gross Margin + Quality Score | GM โฅ 50% AND Quality โฅ 60 | GM โฅ 40% OR Quality โฅ 55 | Otherwise |
| Sign 3: Momentum | 12m Price Return | Return โฅ 25% | Return โฅ 10% | < 10% or NULL |
| Sign 4: Management | SBC % OCF + Cash ROC | SBC < 15% AND ROC > 20% | SBC < 30% OR ROC > 15% | Otherwise / NULL |
| Sign 5: Brand | Gross Margin + Rev Growth | GM โฅ 50% AND Growth โฅ 10% | GM โฅ 40% OR (GM โฅ 35% + Growth โฅ 8%) | Otherwise |
| Sign 6: Overvalued โจ | P/S + Forward PE | P/S โฅ 8 OR Fwd PE โฅ 35 (POSITIVE!) | โ | Neither met |
Scoring formula: rulebreaker_score = ROUND( (sum_of_signs / (2 ร non_null_signs)) ร 10 ) โ requires โฅ 3 of 6 signs to produce a score. Sign 4 (management) is excluded from the denominator if LongEq data is not available for a stock, preventing low scores for stocks that simply don't have LongEq coverage.
Scores on most of the 6 signs. Growth sector, momentum, high margins, and the market is calling it expensive. Classic David Gardner buy.
Showing several Rule Breaker characteristics. May be missing momentum (Sign 3) or the overvalued signal (Sign 6) hasn't triggered yet.
Limited Rule Breaker characteristics. May be in a non-growth sector, showing weak momentum, or not yet reaching the 'overvalued' stage.
โ ๏ธ Sign 6 Reminder โ Contrarian Logic
A high P/S โฅ 8 or forward PE โฅ 35 scores +2 points in this system โ not a penalty. Gardner's argument: stocks that are being called โovervaluedโ by financial media still have investors sitting on the sidelines. As the company keeps performing, those skeptics become believers and drive the stock higher. Amazon, Netflix, and Google all had sky-high valuations when first recommended and went on to multiply many times over.
Sector Analysis โ Module Guide
The Sector Analysis page is designed around one core question: where are the best risk-adjusted opportunities in the market right now? Each module answers a different dimension of that question. Together they give you a complete top-down view โ from broad market health, to which sectors have the best fundamentals, to which sectors have the strongest price momentum, to where fundamentals and price are moving in the same direction.
1. Market Overview Cards
Eight headline numbers summarising the scored universe at a glance. Since the Sept 2026 CORE migration these score-based stats are computed over the CORE universe (~1,600 names: S&P 500 / MidCap 400 / SmallCap 600 / NASDAQ-100), not the full investable universe โ and not just the stocks in your portfolio.
- Total Stocks โ how many stocks are currently in the investable universe.
- Sectors โ number of distinct GICS sectors represented.
- Median Composite โ the midpoint JCN composite score across the whole universe. 50 = exactly average. Above 50 = above-average universe quality.
- Median Quality / Momentum / Growth โ same median concept per factor.
- Median YTD% โ the midpoint year-to-date return across all stocks. Positive = more than half the universe is up for the year.
- % Near 52-Week High โ what fraction of stocks are within 10% of their 52-week high. A high reading signals broad market strength.
2. Sector Fundamental Score History โ 8 Quarters
Shows how the median JCN scores for each sector have changed over the past two years, broken into calendar quarters. This is the single most important table for identifying whether a sector's fundamentals are getting better or worse over time โ not just where they stand today.
How to read it: Each row is a sector. Each column is a quarter (Q2โ24 through Q1โ26). The cell shows the median score for that quarter. Green cells = strong scores. Red cells = weak scores. Use the score selector buttons at the top right to switch between Composite, Quality, Growth, Momentum, Value, and Financial Strength.
- Trend arrow โ computed from a linear regression across all 8 quarters. โโ means the score is rising consistently, โโ means consistently falling, โ means flat. The number next to it (e.g. +0.4/Q) is how many points the score is moving per quarter on average.
- 8Q Delta โ simple difference between today's score and the score from 8 quarters ago. A large positive number means the sector has meaningfully improved over two years.
- Click to expand โ clicking any row opens an ECharts line chart showing all 6 factor scores for that sector across all 8 quarters. This lets you see which specific factors are driving the trend.
What to look for: Sectors showing consistently rising composite scores (โ or โโ) with improving quality and growth are accumulating fundamental strength. Sectors showing โโ trends, especially in quality or financial strength, are deteriorating fundamentally regardless of where the stock prices are.
3. Fundamental + Price Momentum Convergence Matrix
This is the highest-value analytical table on the page. It takes the 8-quarter fundamental trend from the history table and pairs it with the price momentum signal from the Relative Rotation Graph (RRG) to generate a single sector-level signal. The idea: the best opportunities come when both fundamentals and price are moving in the same direction.
The four signals:
- CONFIRM โ Fundamentals improving AND price is in the Leading or Improving RRG quadrant. Both signals agree. This is the highest-conviction setup โ the sector has the wind at its back from both a business quality and market momentum perspective.
- EARLY โ Fundamentals improving but price momentum is still lagging or weakening. The business is getting better but the market has not yet priced it in. This is a potential early entry signal โ watch for the RRG quadrant to start improving.
- DIVERGE โ Fundamentals are deteriorating but price is still strong (Leading or Weakening RRG). The stock prices are running ahead of the business reality. This is a late-cycle risk warning. The price strength may not be sustainable if fundamentals continue to weaken.
- AVOID โ Both fundamentals and price momentum are negative. No edge. The sector is in a confirmed downtrend on both dimensions โ either reduce exposure or avoid entirely.
The vs Prior Q column shows whether the latest composite score improved or deteriorated vs the previous quarter โ useful for spotting turning points in real time. The RS-Ratio column (from the RRG) shows how far above or below 100 the sector is โ above 100 = outperforming SPY, below 100 = underperforming SPY.
4. Sector Score Summary
A snapshot of today's median JCN scores for all 11 GICS sectors plus a MARKET row showing the universe median. Each score is a percentile rank from 0โ100 against the ~1,600-stock CORE universe (S&P 500 / MidCap 400 / SmallCap 600 / NASDAQ 100). A score of 75 means the median stock in that sector is in the 75th percentile of the CORE universe for that factor. The MARKET row is always pinned at the bottom regardless of sort order.
Click any column header to sort sectors by that score. The table shows: Composite (overall), QARP (Quality at a Reasonable Price), GARP (Growth at a Reasonable Price), QualityรMomentum, Fortress (balance sheet strength), plus the five individual factor scores.
5. Quintile Distribution
Goes deeper than the median by showing the full spread of scores within each sector. A sector might have a high median but also have extremely wide dispersion โ meaning some stocks are exceptional while others are very weak. This table shows Q1 (bottom 20%), Q2, Median, Q4, Q5 (top 80%), Mean, and Standard Deviation.
Why this matters: A tight spread (low Std Dev) means most stocks in the sector score similarly โ the sector is homogeneous and a sector-level call is reliable. A wide spread means there is high stock-picking opportunity within the sector โ the sector average does not tell the full story.
Use the Metric selector dropdown to switch the table between Composite, Quality, Momentum, Growth, Value, Financial Strength, ROIC, Gross Margin, Net Debt/EBITDA, QualityรMomentum, and Fortress.
6. Sector Momentum Dashboard
A detailed breakdown of price momentum strength per sector, going well beyond a simple YTD return. Each column measures a different dimension of how prices are trending.
- Momentum Score โ the JCN composite momentum score (percentile vs universe).
- AF Composite โ Absolute/FIP momentum composite. Measures raw return strength across multiple lookback periods (3M, 6M, 9M, 12M).
- FIP 12M โ Frog-in-the-Pan score. Measures the quality of the price path, not just the end return. A high FIP means returns were earned smoothly in small increments (strong trend). A low FIP means gains came in a few large jumps (weaker trend quality).
- System Score โ trend linearity. How straight and consistent the price trend has been over 5 years.
- % Pos YTD โ what fraction of stocks in the sector are up year-to-date. Above 50% = broad sector advance, not just a few large caps pulling up the average.
- % Above 50% Range โ what fraction of stocks are in the upper half of their 52-week trading range.
- % Near 52-Week High โ what fraction of stocks are within 10% of their 52-week high. A high reading = sector is broadly strong.
- Median YTD% / Median 1Yr% โ actual return figures for context.
7. Industry Group Tables
Three tables mirroring the sector Score Summary, Quintile Distribution, and Momentum Dashboard โ but broken down to the GICS industry group level rather than the broader sector. Industries with fewer than 5 stocks are excluded. This is useful for identifying pockets of strength or weakness within a sector. For example, within Financials: Banks may be Leading while Insurance is Lagging.
All three tables have a Sector column so you can quickly see which parent sector each industry belongs to, and sort across the full industry universe by any score or momentum metric.
8. ETF Rotation Heatmaps
Three side-by-side heatmap tables showing actual ETF price returns for sector, industry, and factor ETFs. Unlike the JCN scores which measure fundamental quality, these tables measure what the market is doing with its money right now. Columns are return periods: 1W, 1M, 3M, 6M, YTD, 1Y, 3Y, 5Y.
Color coding: Deep green = strong positive return. Deep red = strong negative return. The intensity of the color scales with the magnitude โ you can immediately see at a glance which sectors and time periods are hot or cold.
Absolute vs vs SPY toggle: Switch between viewing raw returns (e.g. XLK up +12% YTD) and relative returns vs the S&P 500 (e.g. XLK up +5% vs SPY YTD). The vs SPY view shows you which sectors are actually beating the benchmark โ important because in a rising market everything looks green.
Acceleration/Deceleration badge: Each ETF row shows either โ Accel or โ Decel. This compares the average of short-term returns (1W + 1M) against the average of long-term returns (3M + 6M). If recent returns are faster than the longer-term average, momentum is accelerating. If recent returns are slower, momentum is decelerating. The number next to the badge (e.g. +3.9pp) shows by how much in percentage points.
- Sector ETF Rotation โ the 11 SPDR XL sector ETFs (XLK, XLV, XLF, XLY, XLP, XLE, XLI, XLB, XLU, XLRE, XLC) plus SPY, QQQ, and IWM benchmarks pinned at the bottom.
- Industry ETF Deep Dive โ 35 sub-sector ETFs including SOXX (Semiconductors), IBB (Biotech), KBE (Banks), OIH (Oil Services), GLD (Gold), JETS (Airlines), and many more, each tagged with its parent sector.
- Factor ETF Rotation โ 30 ETFs grouped by factor style: Momentum (MTUM, QMOM), Quality (QUAL, SPHQ), Value (VLUE, IWD, VTV), Growth (IWF, VUG), Low Volatility (USMV, SPLV), Dividend (SCHD, VYM, HDV), Small Cap (IWM, IJR, VBR), Multi-Factor (GSLC, JPUS). This table tells you which investment style the market is currently rewarding.
RS Rank โ each ETF is ranked 1 (strongest) to last within its group by YTD return. In vs SPY mode the rank switches to SPY-relative YTD. The top 3 ranks are highlighted in green.
9. Relative Rotation Graph (RRG)
Created by Julius de Kempenaer, the RRG is a scatter plot that shows all 11 GICS sector ETFs in a single view, making sector rotation immediately visible. Each dot represents a sector. The dot's position tells you two things at once: how it's performing relative to SPY (x-axis) and whether that relative performance is getting stronger or weaker (y-axis). The trail behind each dot shows the path it traveled over the selected time period.
The two axes:
- X-axis โ RS-Ratio: Is this sector beating SPY right now? Above 100 = outperforming SPY. Below 100 = underperforming. The further right, the stronger the outperformance.
- Y-axis โ RS-Momentum: Is the outperformance getting bigger or smaller? Above 100 = the relative performance is accelerating. Below 100 = it's fading. The further up, the stronger the acceleration.
The four quadrants:
- Leading (top-right, green) โ beating SPY and the outperformance is still accelerating. This is where you want to be overweight. The sector has both a strong trend AND strong momentum behind that trend.
- Weakening (bottom-right, yellow) โ still beating SPY but the outperformance is starting to fade. The trend is intact but momentum is turning. Watch closely โ it may rotate to Lagging soon.
- Lagging (bottom-left, red) โ underperforming SPY and the gap is getting worse. Avoid or underweight. Unless you have a specific contrarian thesis, there is no edge here.
- Improving (top-left, blue) โ still underperforming SPY but momentum is turning positive. This is the early recovery signal. The sector is still in a relative downtrend but the rate of deterioration is slowing and reversing. Watch for a cross into Leading.
The clockwise rotation: Sectors naturally move through quadrants in a clockwise direction over a full cycle: Leading โ Weakening โ Lagging โ Improving โ Leading. The trail length shows how far a sector has traveled. A long trail = high velocity (the sector is rotating quickly). A short trail = low velocity (stable position).
Trail length toggle: 3M (13 weekly points), 6M (26 points), or 1Y (52 points). All three are pre-loaded โ switching is instant with no additional data fetch. The 6M view is usually the most useful for identifying current rotation trends without too much noise.
How it's calculated: Uses weekly adjusted-close prices for all 11 XL sector ETFs vs SPY. RS-Ratio is computed as the normalized ratio of a 10-week EMA to a 40-week EMA of the price-relative (ETF/SPY). RS-Momentum is the rate of change of RS-Ratio over 4 weeks, also normalized. Both axes are scaled so that 100 = exactly in line with SPY and the standard deviation is approximately 10 points, making sectors comparable on the same scale.
Using RRG with the Convergence Matrix: The RRG quadrant is one of the two inputs to the Convergence Matrix signal. When you see a sector moving from Improving into Leading on the RRG while the Fundamental History table shows a rising composite score trend, the Convergence Matrix will generate a CONFIRM signal โ both dimensions aligned.
Portfolio Metrics
Performance Table
Each portfolio page displays a performance table showing every holding with current price, daily change, and period returns. Prices come from EODHD real-time API (15-min delayed) or MotherDuck historical data.
| Metric | Formula | Description |
|---|---|---|
| Current Price | EODHD real-time or latest adjusted_close | Most recent price, 15-min delayed max |
| Daily Change % | (close_today - close_yesterday) / close_yesterday * 100 | Percentage move from prior close |
| YTD Return | (price_now - price_jan1) / price_jan1 * 100 | Year-to-date total return |
| 1Y Return | (price_now - price_1yr_ago) / price_1yr_ago * 100 | Trailing 12-month return |
| 3Y Return | (price_now - price_3yr_ago) / price_3yr_ago * 100 | Trailing 3-year cumulative return |
| 5Y Return | (price_now - price_5yr_ago) / price_5yr_ago * 100 | Trailing 5-year cumulative return |
Allocation
Portfolio allocation is displayed as a pie chart, categorized by market cap tier: Mega Cap (above $200B), Large Cap ($10B-$200B), Mid Cap ($2B-$10B), Small Cap (below $2B), and ETF. Allocation weights are equal-weight by default.
Benchmarks and Alpha
Each portfolio is benchmarked against SPY (S&P 500 ETF) and a portfolio-specific ETF. Alpha is calculated as the excess return of the portfolio over SPY for each time period.
Alpha Calculation
Alpha = Portfolio Return - SPY Return
Calculated for YTD, 1Y, 3Y, and 5Y periods. Positive alpha indicates outperformance.
JCN Factor Scores
Each stock in a portfolio receives five composite factor scores (0-100), computed monthly from fundamental data and stored in dedicated score tables in MotherDuck. These scores power the radar charts and fundamentals grid on each portfolio page.
| Score | DB Column | Methodology |
|---|---|---|
| Value Score | value_score_composite | Ranks stocks by valuation attractiveness. Combines P/E, P/B, P/S, EV/EBITDA, and FCF yield relative to sector peers. Lower valuations score higher. |
| Quality Score | quality_score_composite | Measures business quality via gross margin stability, ROE consistency, earnings quality (accruals), and balance sheet strength. |
| Growth Score | growth_score_composite | Evaluates revenue growth, earnings growth, and forward estimates. Combines trailing 3Y CAGR with analyst consensus forward growth. |
| Financial Strength | finstr_score_composite | Assesses balance sheet health: current ratio, debt-to-equity, interest coverage, Altman Z-score components, and cash flow adequacy. |
| Momentum Score | momentum_score_composite | Price momentum signal based on 12-1 month return (skip most recent month). Captures intermediate-term trend persistence. |
Score Normalization
score = round((clamped_value - low) / (high - low) * 100)
Each raw metric is clamped to [low, high] bounds, then linearly scaled to 0-100. A score of 50 indicates median performance.
Stock Analysis Metrics
Every metric displayed in the Stock Analysis screener is computed server-side from PROD_EOD_Fundamentals quarterly data, aggregated into annual figures. P&L and Cash Flow items are summed across quarters; Balance Sheet items use the latest quarter in each calendar year.
Per Share Data (Module 3)
Annual per-share metrics calculated by dividing aggregate financials by shares outstanding. Shares use bs_commonStockSharesOutstanding (quarterly historical), falling back to shares_outstanding (snapshot) if unavailable.
| Metric | Formula | Description |
|---|---|---|
| Revenue/Share | is_totalRevenue / shares | Total annual revenue divided by shares outstanding |
| EPS | is_netIncome / shares | Earnings per share โ net income allocated to each share |
| FCF/Share | cf_freeCashFlow / shares | Free cash flow per share โ cash available after capex |
| EBITDA/Share | is_ebitda / shares | Earnings before interest, taxes, depreciation, amortization per share |
| Book Value/Share | bs_totalStockholderEquity / shares | Net asset value per share (equity / shares) |
| Operating CF/Share | cf_totalCashFromOperatingActivities / shares | Cash from operations per share |
| Dividend/Share | -cf_dividendsPaid / shares | Annual dividend paid per share (dividends are negative in cash flow) |
| Buyback Yield | -cf_salePurchaseOfStock / market_cap | Share repurchases as a percentage of market cap |
| Dividend Yield | -cf_dividendsPaid / market_cap | Annual dividends as a percentage of market cap |
| Total Return Yield | (-dividends + -buybacks) / market_cap | Combined shareholder yield from dividends and buybacks |
| Shares Outstanding | bs_commonStockSharesOutstanding / 1M | Total shares outstanding in millions |
| Revenue ($M) | is_totalRevenue / 1M | Total annual revenue in millions |
| Net Income ($M) | is_netIncome / 1M | Total annual net income in millions |
| Free Cash Flow ($M) | cf_freeCashFlow / 1M | Annual free cash flow in millions |
Quality Metrics (Module 4)
Annual quality ratios measuring profitability, returns on capital, leverage, and operational efficiency. All computed from aggregated annual data.
| Metric | Formula | Description |
|---|---|---|
| Gross Margin | is_grossProfit / is_totalRevenue | Revenue retained after cost of goods sold. Higher = stronger pricing power. |
| Operating Margin | is_operatingIncome / is_totalRevenue | Profitability from core operations after operating expenses. |
| Net Margin | is_netIncome / is_totalRevenue | Bottom-line profitability after all expenses, interest, and taxes. |
| EBITDA Margin | is_ebitda / is_totalRevenue | Cash earnings margin before non-cash charges and financing. |
| FCF Margin | cf_freeCashFlow / is_totalRevenue | Free cash flow as percentage of revenue. Measures cash conversion. |
| ROIC | is_netIncome / (equity + longTermDebt) | Return on invested capital. Measures efficiency of capital allocation. |
| ROE | is_netIncome / bs_totalStockholderEquity | Return on equity. Profit generated per dollar of shareholder equity. |
| ROA | is_netIncome / bs_totalAssets | Return on assets. Profit generated per dollar of total assets. |
| ROCE | is_operatingIncome / (equity + longTermDebt) | Return on capital employed. Operating profit on invested capital. |
| Debt/Equity | bs_totalLiab / bs_totalStockholderEquity | Total leverage ratio. Higher = more leveraged balance sheet. |
| LT Debt/Equity | bs_longTermDebt / bs_totalStockholderEquity | Long-term debt leverage. Excludes short-term obligations. |
| Current Ratio | bs_totalCurrentAssets / bs_totalCurrentLiabilities | Short-term liquidity. Above 1.0 = can cover near-term obligations. |
| Interest Coverage | is_operatingIncome / is_interestExpense | Ability to service debt. Higher = more comfortable debt burden. |
| Asset Turnover | is_totalRevenue / bs_totalAssets | Revenue generated per dollar of assets. Measures asset efficiency. |
| CapEx/Revenue | abs(cf_capitalExpenditures) / is_totalRevenue | Capital intensity. How much revenue is reinvested in fixed assets. |
| FCF Conversion | cf_freeCashFlow / is_netIncome | How much net income converts to free cash flow. Above 1.0 = high quality. |
| Cash Conversion | cf_operatingCashFlow / is_netIncome | Operating cash flow relative to reported earnings. Earnings quality check. |
Financial Statements (Modules 5-7)
Income Statement, Balance Sheet, and Cash Flows are displayed as hierarchical tables with expandable parent-child rows. All values are shown in millions ($M). Quarterly data is aggregated into annual: P&L and Cash Flow items are summed, Balance Sheet items use the latest quarter.
Revenue
โ Cost of Revenue
Gross Profit
Operating Expenses
โ R&D
โ SG&A
โ D&A
Operating Income
Interest Expense
Income Before Tax
Income Tax
EBITDA
Net IncomeTotal Assets
โ Current Assets
โ โ Cash & Equivalents
โ โ Short-Term Investments
โ โ Net Receivables
โ โ Inventory
โ Non-Current Assets
โ PP&E
โ Goodwill
โ Intangibles
โ Long-Term Investments
Total Liabilities
โ Current Liabilities
โ โ Accounts Payable
โ โ Short-Term Debt
โ Non-Current Liabilities
โ Long-Term Debt
Stockholder Equity
โ Common Stock
โ Retained Earnings
โ Treasury Stock
Net Debt
Shares OutstandingOperating Cash Flow
โ Net Income
โ D&A
โ Stock-Based Comp
โ Working Capital Changes
Investing Cash Flow
โ Capital Expenditures
โ Investments
Financing Cash Flow
โ Dividends Paid
โ Share Buybacks/Issuance
โ Net Borrowings
Free Cash Flow
Net Change in CashGrowth Rates (Module 8)
Year-over-year growth rates for 12 key financial metrics. Computed as percentage change from the prior year. Displayed with heatmap coloring: deep green for high growth, red for contraction, gray for null.
YoY Growth Rate
growth_pct = (current_year - prior_year) / abs(prior_year) * 100
Null if either year is missing or prior year is zero. Absolute value in denominator handles negative base values.
Tracked metrics: Revenue, Gross Profit, Operating Income, EBITDA, Net Income, EPS, Free Cash Flow, Operating Cash Flow, Total Assets, Stockholder Equity, Long-Term Debt, Dividends Paid.
Valuation Ratios (Module 9)
Current snapshot valuation multiples from EODHD. These are point-in-time values (not historical per quarter) and represent the latest available data for each stock.
| Metric | Formula | Description |
|---|---|---|
| P/E Ratio | price / EPS (trailing) | Price relative to trailing 12-month earnings |
| Forward P/E | price / forward EPS estimate | Price relative to consensus forward earnings estimate |
| PEG Ratio | P/E / earnings growth rate | P/E adjusted for growth. Below 1.0 suggests undervaluation relative to growth. |
| Price/Book | price / book value per share | Market price relative to net asset value. Below 1.0 = trading below book. |
| Price/Sales | market_cap / revenue_ttm | Market cap relative to trailing revenue. Lower = cheaper on revenue basis. |
| EV/EBITDA | enterprise_value / ebitda | Enterprise value per unit of operating cash earnings. Standard M&A metric. |
| EV/Revenue | enterprise_value / revenue_ttm | Enterprise value per unit of revenue. Capital-structure-neutral valuation. |
| Trailing P/E | price / trailing EPS | Price to trailing earnings (may differ from standard P/E by data source). |
| Dividend Yield | annual_dividend / price | Annual dividend as percentage of current share price. |
JCN Factor Scores (Module 10)
Five precomputed composite factor scores fetched from PROD score tables (computed monthly). Each score is 0-100. The JCN Composite is the simple average of all five factor scores. Displayed as score cards and a 5-axis radar chart.
| Score | Source Table | What it Measures |
|---|---|---|
| Value | PROD_OBQ_Value_Scores | Ranks stocks by valuation attractiveness (P/E, P/B, EV/EBITDA, etc.) |
| Quality | PROD_OBQ_Quality_Scores | Business quality via margins, ROE, earnings stability |
| Financial Strength | PROD_OBQ_FinStr_Scores | Balance sheet health, debt coverage, liquidity |
| Growth | PROD_OBQ_Growth_Scores | Revenue growth, earnings growth, forward estimates |
| Momentum | PROD_OBQ_Momentum_Scores | Price momentum signal based on relative strength |
| JCN Composite | Average of all 5 | Overall factor score = (V + Q + FS + G + M) / 5 |
JCN Composite Score
jcn_composite = (value + quality + financial_strength + growth + momentum) / 5
Each factor score is precomputed monthly from fundamental data and stored in PROD score tables (PROD_OBQ_*_Scores). The JCN Composite is the simple average of all five.
JCN Score Methodology
The JCN scoring system evaluates every stock in the investable universe across five fundamental dimensions: Value, Quality, Growth, Financial Strength, and Momentum. Each factor is computed monthly using a proprietary 3-way scoring system that combines cross-sectional, sector-relative, and historical self-relative rankings. The five individual scores are then blended into eight composite presets for different investment strategies.
CORE Scoring Universe
As of the September 2026 CORE migration, JCN factor scores are computed only for stocks in the CORE universe โ the point-in-time constituents of the S&P 500, S&P MidCap 400, S&P SmallCap 600, and NASDAQ 100 (~1,600 names), excluding foreign companies and limiting ADRs. Membership is tracked historically via index constituents (jcn_index_membership), so the scoring population is survivorship-free. This replaced the former top-3,000 by-market-cap investable universe (which is retained as a broader research set but no longer carries JCN scores).
| Parameter | Value |
|---|---|
| Universe Size | ~1,600 (CORE-4 index members, point-in-time) |
| Rank Day | Last trading day of May each year |
| Effective Period | July 1 through June 30 of the following year |
| DQ Filters | Market cap $10M - $5T, adjusted close $0.01 - $500K |
| Pre-2003 Handling | All available stocks scored (no universe filter) |
| Table | PROD_OBQ_Investable_Universe (67,528 rows, 2003-2025) |
3-Way Scoring System
Each of the five factor scores uses three independent scoring dimensions, combined into a single composite. This multi-lens approach prevents a stock from scoring well simply because its entire sector is cheap or because it happens to be in a historically low-quality industry.
Composite Formula
composite = Universe Score (40%) + Sector Score (40%) + History Score (20%)
All three dimensions use PERCENT_RANK() to produce 0-100 scores. The composite is a weighted average of the three.
| Dimension | Weight | Description |
|---|---|---|
| Universe | 40% | Cross-sectional percentile rank vs. all ~1,600 CORE-universe stocks in the same month. A stock scoring 90 is in the top 10% of the CORE universe (S&P 500 / MidCap 400 / SmallCap 600 / NASDAQ 100). |
| Sector | 40% | Same percentile rank but within GICS sector peers only (minimum 3 peers). Captures relative standing within an industry โ is this tech stock cheap vs. other tech stocks? |
| History | 20% | Percentile rank against the stock's own 8+ quarter history (rolling window). Is this stock cheap relative to its own historical norms? |
Fallback rules: if a sector has fewer than 3 peers, weights shift to Universe 60% + History 40%. If historical data has fewer than 8 quarters, weights shift to Universe 50% + Sector 50%.
Value Score
Measures how attractively priced a stock is relative to its fundamentals. Lower valuation ratios produce higher scores (inverted ranking). Six metrics, equal-weighted (1/6 each) in the live CORE-universe scoring โ no single ratio dominates the composite.
| Metric | Weight | Direction | Description |
|---|---|---|---|
| EV/EBITDA (TTM) | 16.7% | Lower is better | Enterprise value to operating earnings. Capital-structure-neutral. Standard M&A metric. |
| P/FCF (TTM) | 16.7% | Lower is better | Price to Free Cash Flow. Cash yield to shareholders โ hardest metric to manipulate. |
| P/S (TTM) | 16.7% | Lower is better | Price to sales. Useful for pre-profit or cyclically depressed companies. |
| P/B (MRQ) | 16.7% | Lower is better | Price to book value. Asset-based valuation floor, most relevant for financials and industrials. |
| P/E (TTM) | 16.7% | Lower is better | Price to trailing earnings. The classic valuation metric, included for universality. |
| FCF Yield (TTM) | 16.7% | Higher is better | Free cash flow / market cap. The inverse framing of P/FCF โ cash return per dollar of price. |
All six metrics carry equal weight in the live CORE-universe scoring (no single ratio dominates). EV/EBITDA is capital-structure-neutral, allowing fair comparison between levered and unlevered firms โ the standard metric in M&A valuation. P/FCF and FCF Yield both key off free cash flow โ the hardest line item to inflate through accounting choices โ from complementary angles (price-to-cash-flow vs. cash-yield). The value factor draws directly from the HML (High Minus Low) factor identified by Fama & French (1992).
Quality Score
Measures business quality through profitability, capital efficiency, and earnings reliability. Higher values indicate better quality. Six metrics, equal-weighted (1/6 each) in the live CORE-universe scoring.
| Metric | Weight | Description |
|---|---|---|
| ROIC | 16.7% | Return on Invested Capital. Net Income / (Equity + Long-Term Debt). Measures how efficiently management allocates capital. |
| ROA | 16.7% | Return on Assets. Asset-level profitability, independent of capital structure. |
| ROCE | 16.7% | Return on Capital Employed. Operating-earnings efficiency independent of capital structure and tax treatment. |
| FCF Margin | 16.7% | Free Cash Flow / Revenue. How much revenue converts to actual cash available to shareholders. |
| Gross Margin | 16.7% | Pricing power and cost structure durability. |
| Earnings Quality | 16.7% | (Operating CF - Net Income) / Total Assets. Detects accrual manipulation โ companies where reported earnings exceed actual cash flows score lower. |
The Earnings Quality metric is a Sloan (1996) accruals-based signal: companies where cash flow consistently trails reported earnings tend to have lower future returns, as the accrual component eventually reverses. All six metrics are equal-weighted in the live CORE scoring โ no single measure of profitability or capital efficiency dominates the composite.
Growth Score
Measures multi-period earnings, revenue, and cash flow growth using blended compound annual growth rates (CAGRs). Equal-weighted across four per-share growth metrics, each blending three lookback periods to balance recent acceleration with durable compounding.
| Metric | Weight | Description |
|---|---|---|
| Revenue/Share Growth | 25% | Top-line growth on a per-share basis. Adjusts for dilution from share issuance. |
| EPS Growth | 25% | Earnings per share growth. Bottom-line compounding. |
| FCF/Share Growth | 25% | Free cash flow per share growth. Cash-based confirmation of earnings growth. |
| Equity/Share Growth | 25% | Book value per share growth. Equity compounding, a proxy for intrinsic value accumulation. |
Period Blending
Blended = 1Y CAGR (40%) + 3Y CAGR (35%) + 5Y CAGR (25%)
Emphasizes recent acceleration while rewarding durable multi-year compounders. Growth rates are winsorized at +/-200% to prevent outliers from distorting rankings.
All growth metrics are computed on a per-share basis to penalize companies that grow revenue by diluting shareholders through stock issuance. The per-share normalization ensures that only genuine organic growth (or efficient capital deployment) is rewarded.
Financial Strength Score
Measures balance sheet health, debt serviceability, and liquidity. Equal-weighted across five metrics covering both stock measures (balance sheet ratios) and flow measures (coverage ratios). Draws from Altman Z-score principles (Altman, 1968) and Piotroski F-score methodology (Piotroski, 2000).
| Metric | Weight | Direction | Description |
|---|---|---|---|
| Interest Coverage | 20% | Higher is better | Operating Income / Interest Expense. Can the company comfortably service its debt? |
| FCF / Debt | 20% | Higher is better | Free Cash Flow / Total Debt. How quickly could the company repay all debt from cash flow? |
| Net Debt / EBITDA | 20% | Lower is better | Net leverage ratio. Years to repay net debt from operating earnings. Below 2x is healthy. |
| Debt / Assets | 20% | Lower is better | Total leverage ratio. What fraction of total assets is financed by debt? |
| Cash / Assets | 20% | Higher is better | Liquidity buffer as a fraction of total assets. |
Equal weighting (20% each, 5 metrics) ensures no single dimension (leverage, liquidity, or coverage) dominates the score. The mix captures both point-in-time balance sheet health and ongoing cash flow adequacy. Companies with zero debt naturally score high on debt-related metrics but still need strong liquidity to score well overall.
Momentum Score
Measures price trend strength and persistence from weekly return data. Unlike the other four factor scores which use monthly fundamental data, Momentum is computed weekly from adjusted closing prices.
| Component | Weight | Description |
|---|---|---|
| Price Nearness to 52-Week High | ~33.3% | Percentile rank of the 1-month average distance from the 52-week high. Captures the "nearness" premium โ stocks trading near their highs tend to keep outperforming. |
| AF Momentum | ~33.3% | Average of 3-month, 6-month, and 12-month cumulative returns. Captures intermediate-term trend persistence. Based on the classic Jegadeesh & Titman (1993) momentum factor. |
| SystemScore | ~33.3% | 5-year avg annual return multiplied by R-cubed (cube of R-squared to 5-year trend line). Rewards strong AND consistent long-term trends. The R-cubed term aggressively penalizes high-return stocks with erratic paths. |
SystemScore
SystemScore = (5yr_avg_annual_return) * (R_squared ^ 3)
R-squared measures how well the stock's price fits a linear trend. Cubing it means a stock with Rยฒ=0.5 retains only 12.5% of its return contribution, while Rยฒ=0.9 retains 72.9%. This heavily rewards smooth, consistent uptrends.
The live CORE-universe methodology is an equal-weighted mean of these three components (FIP Score has been dropped from the composite). Weights are conditional: if a component is unavailable for a stock (e.g., less than 5 years of data for SystemScore), remaining component weights are re-normalized. The momentum score also uses the 3-way scoring system (Universe 40% + Sector 40% + History 20%) for the final composite.
Composite Blends
Eight pre-configured factor blend presets are stored in PROD_JCN_Composite_Scores. Each is a weighted average of the five individual factor composite scores. When a factor is unavailable for a given stock, the remaining factor weights are re-normalized so they still sum to 100%.
Re-normalization
blend_score = SUM(weight_i * factor_i) / SUM(weight_i for non-null factors)
If a stock has 4 of 5 factors, the weights of the available factors are scaled up proportionally.
| Preset | Column | Formula | Use Case |
|---|---|---|---|
| Full OBQ Composite | jcn_full_composite | V:20 + Q:20 + G:20 + M:20 + FS:20 | Balanced all-factor exposure. No single factor dominates. |
| QARP | jcn_qarp | Q:40 + V:40 + M:20 | Quality at Reasonable Price. Buffett-style quality-value investing with trend confirmation. |
| GARP | jcn_garp | G:40 + V:40 + M:20 | Growth at Reasonable Price. Peter Lynch-style growth-value blend. |
| Quality + Momentum | jcn_quality_momentum | Q:50 + M:50 | High-quality businesses in uptrends. Avoids value traps by requiring momentum confirmation. |
| Value + Momentum | jcn_value_momentum | V:50 + M:50 | Deep value with trend confirmation. Avoids catching falling knives. |
| Growth + Quality + Momentum | jcn_growth_quality_momentum | G:34 + Q:33 + M:33 | Growth compounders with quality and momentum filter. Screens for the best growth stories. |
| Fortress | jcn_fortress | Q:40 + FS:40 + V:20 | Defensive. Strong balance sheet + high quality + reasonable price. Best for risk-off periods. |
| Alpha Trifecta | jcn_alpha_trifecta | V:34 + Q:33 + M:33 | The classic academic three-factor alpha blend: value + quality + momentum. |
References
The JCN scoring methodology draws from decades of peer-reviewed financial economics research. Key references:
Value Factor: Fama, E.F. & French, K.R. (1992). "The Cross-Section of Expected Stock Returns." Journal of Finance, 47(2), 427-465.
Quality / Profitability: Novy-Marx, R. (2013). "The Other Side of Value: The Gross Profitability Premium." Journal of Financial Economics, 108(1), 1-28.
Momentum: Jegadeesh, N. & Titman, S. (1993). "Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency." Journal of Finance, 48(1), 65-91.
Financial Distress: Altman, E.I. (1968). "Financial Ratios, Discriminant Analysis and the Prediction of Corporate Bankruptcy." Journal of Finance, 23(4), 589-609.
F-Score: Piotroski, J.D. (2000). "Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers." Journal of Accounting Research, 38, 1-41.
Accruals Anomaly: Sloan, R.G. (1996). "Do Stock Prices Fully Reflect Information in Accruals and Cash Flows About Future Earnings?" The Accounting Review, 71(3), 289-315.
Five-Factor Model: Fama, E.F. & French, K.R. (2015). "A Five-Factor Asset Pricing Model." Journal of Financial Economics, 116(1), 1-22.
Russell 3000 Methodology: FTSE Russell (2024). "Russell U.S. Equity Indexes: Construction and Methodology." ftserussell.com.
Database & Schema
MotherDuck
MotherDuck is a cloud-hosted DuckDB service that provides the analytical warehouse for all JCN data. Single-writer architecture (concurrent writes fail silently). Connection via MOTHERDUCK_TOKEN environment variable. All symbols stored in TICKER.US format (e.g., AAPL.US).
-- Connection pattern
conn = duckdb.connect(f'md:?motherduck_token={token}')
-- Database layout
PROD_EODHD.main.* -- Production tables (read by dashboard)
DEV_EODHD_DATA.main.* -- Staging tables (written by sync pipeline)PROD_EOD_survivorship
The primary price table. Contains daily OHLC + adjusted_close for all US common stocks and ADRs, including delisted symbols (survivorship-bias free). ~77.5 million rows (1962โpresent). Zone-map optimized by (date, symbol).
| Column | Type | Description |
|---|---|---|
| symbol | VARCHAR | Ticker in TICKER.US format (e.g., AAPL.US) |
| date | DATE | Trading date |
| open | DOUBLE | Opening price |
| high | DOUBLE | Intraday high |
| low | DOUBLE | Intraday low |
| close | DOUBLE | Raw closing price (NOT used for analysis) |
| adjusted_close | DOUBLE | Split/dividend-adjusted close (PRIMARY price field) |
| isin | VARCHAR | International Securities Identification Number |
| in_sp500 | BOOLEAN | Current S&P 500 membership |
| gics_sector | VARCHAR | GICS sector classification |
| industry | VARCHAR | Industry sub-classification |
| market_cap | DOUBLE | Latest market capitalization in USD |
| listing_date | DATE | IPO / listing date |
| delisting_date | DATE | Delisting date (NULL if still active) |
| is_active | BOOLEAN | TRUE if currently trading |
| instrument_type | VARCHAR | Common Stock, ADR, etc. |
PROD_EOD_ETFs
Daily OHLC + adjusted_close for ETFs. SPY.US is the primary benchmark. Same structure as survivorship but without survivorship metadata columns.
| Column | Type | Description |
|---|---|---|
| symbol | VARCHAR | ETF ticker in TICKER.US format (e.g., SPY.US) |
| date | DATE | Trading date |
| open | DOUBLE | Opening price |
| high | DOUBLE | Intraday high |
| low | DOUBLE | Intraday low |
| close | DOUBLE | Raw closing price |
| adjusted_close | DOUBLE | Adjusted close (PRIMARY) |
| isin | VARCHAR | ISIN identifier |
PROD_EOD_Fundamentals
Quarterly fundamental data for all US stocks. 196 columns covering income statement (is_*), balance sheet (bs_*), cash flow (cf_*), valuation snapshots, analyst estimates, and company metadata. Over 160 quarters of history for major stocks.
| Column Group | Prefix | Aggregation | Key Columns |
|---|---|---|---|
| Identity | symbol, date, filing_date | N/A | symbol (VARCHAR), date (quarter end), filing_date (SEC filing date) |
| Company Info | company_name, sector, industry | Latest | sector, industry, gic_sector, gic_industry, exchange |
| Income Statement | is_* | SUM across quarters | is_totalRevenue, is_grossProfit, is_operatingIncome, is_ebitda, is_netIncome |
| Balance Sheet | bs_* | Latest quarter in year | bs_totalAssets, bs_totalLiab, bs_totalStockholderEquity, bs_cash, bs_longTermDebt |
| Cash Flow | cf_* | SUM across quarters | cf_totalCashFromOperatingActivities, cf_capitalExpenditures, cf_freeCashFlow |
| Valuation (snapshot) | pe_ratio, forward_pe, ... | Latest (overwritten) | market_cap, pe_ratio, forward_pe, peg_ratio, enterprise_value, dividend_yield |
| Analyst | analyst_* | Latest (overwritten) | analyst_target_price, analyst_buy, analyst_hold, analyst_sell, analyst_rating |
| Shares | shares_outstanding, bs_common... | Latest / Historical | shares_outstanding (snapshot), bs_commonStockSharesOutstanding (per quarter) |
Important: Valuation fields (market_cap, pe_ratio, etc.) are SNAPSHOT values โ identical across all quarters for a given symbol. They represent the CURRENT latest value, not historical. Only financial statement columns (is_*, bs_*, cf_*) contain true historical quarterly data.
Score Tables
Five separate score tables, each containing monthly composite scores per symbol. Rebuilt during Stage 3 of the sync pipeline. Used by portfolio pages for the JCN 5-factor score grid and radar charts.
| Table | Score Column | Key Columns |
|---|---|---|
| PROD_OBQ_Value_Scores | value_score_composite | symbol, month_date, value_score_composite |
| PROD_OBQ_Quality_Scores | quality_score_composite | symbol, month_date, quality_score_composite |
| PROD_OBQ_Growth_Scores | growth_score_composite | symbol, month_date, growth_score_composite |
| PROD_OBQ_FinStr_Scores | finstr_score_composite | symbol, month_date, finstr_score_composite |
| PROD_OBQ_Momentum_Scores | momentum_score_composite | symbol, month_date, momentum_score_composite |
SYNC_STATE & SYNC_LOG
SYNC_STATE stores the current state of each sync stage (last run timestamp, status, cursor position for resumable operations). SYNC_LOG records every sync run with timing, row counts, and error details. Both tables enable the Prime Directive PD-08 (cursor persistence) and provide audit trail.
EODHD API
API Overview
EODHD (End of Day Historical Data) is the primary external data provider for JCN Financial. It supplies daily end-of-day prices, quarterly fundamentals, and company metadata for all US-listed securities including common stocks, ADRs, and ETFs. Data is point-in-time accurate using SEC filing dates.
Endpoints Used
| Endpoint | Used In | Purpose |
|---|---|---|
| /api/eod-bulk-last-day/US | Stage 1 (Ingest) | Bulk download of latest EOD prices for all US symbols in a single API call |
| /api/real-time/[symbol].US | Live Prices | 15-min delayed real-time quotes for portfolio current prices |
| /api/fundamentals/[symbol].US | Fundamentals Sync | Quarterly financial statements, valuation, analyst data |
Rate Limits
EODHD enforces rate limits of 1,000 API calls per minute and 100,000 calls per day. The sync pipeline uses bulk endpoints to minimize call count. Real-time price fetches for portfolios are throttled to one refresh per 15 minutes (client-side localStorage cache) and only trigger on manual refresh button click or TTL expiry.
Rate Limiter
delay = max(0.06s per call, 60ms between requests)
1,000 req/min and 100K req/day are EODHD's published limits, enforced via a per-call delay in the ingest scripts. API key stored as Vercel environment variable EODHD_API_KEY, never in source code.
Data Sync Pipeline
The sync pipeline is a 4-stage process that maintains the production database. Each stage is independently runnable, idempotent, and designed to operate within Vercel Pro 300-second function timeout (280s budget with 20s safety buffer).
Stage 0: Health Check (diagnostics)
โ
Stage 1: Ingest (EODHD โ DEV)
โ
Stage 2: Validate & Promote (DEV โ PROD)
โ
Stage 3: Score Rebuild (recompute composites)Stage 0: Health Check
Runs 8 diagnostic checks before any sync operation: (1) MotherDuck connectivity, (2) EODHD API key validation, (3) Required tables existence with estimated row counts, (4) Last sync timestamp from SYNC_STATE, (5) Symbol format consistency (PD-03 โ all must be TICKER.US), (6) Fundamentals coverage ratio, (7) Gap analysis (latest date vs today), (8) Duplicate detection in last 7 days. Uses sampled queries and LIMIT 1 patterns for speed. Results cached 5 minutes.
Stage 1: Ingest
Downloads daily EOD prices for all US symbols via EODHD bulk endpoint (/api/eod-bulk-last-day/US). Separates stocks from ETFs based on exchange code. Validates inline (filters out mutual funds, OTC, warrants per PD-06). Writes to DEV_EODHD_DATA staging tables. Idempotent โ skips dates already ingested. Tracks cursor in SYNC_STATE for resumability.
Stage 2: Validate & Promote
Four phases: (Phase 1) 6-point data quality audit on DEV โ NULL checks on critical columns, duplicate detection, row count validation, date continuity, price reasonableness, symbol format compliance. (Phase 2) DEV to PROD promotion via ANTI JOIN (only new rows inserted, never overwrites). (Phase 3) Incremental Weekly OHLC rebuild. (Phase 3.5) Dashboard snapshot rebuild. (Phase 4) Post-validation + SYNC_LOG entry.
1. NULL check on critical columns (symbol, date, adjusted_close)
2. Duplicate detection (same symbol+date in last 7 days)
3. Row count validation (โฅ95% of expected rows)
4. Date continuity (no gaps > 3 business days)
5. Price reasonableness (no negative prices, no > 1000% daily moves)
6. Symbol format compliance (all must end in .US)Stage 3: Score Rebuild
Recomputes all 5 JCN composite factor scores (Value, Quality, Growth, Financial Strength, Momentum) for 8 different presets. Reads from PROD tables, applies scoring algorithms, and writes results to the 5 PROD_OBQ_*_Scores tables. ~15 million score rows generated (post CORE-4 refactor; largest single table is PROD_OBQ_Momentum_Scores at ~1.12M rows).
Prime Directive v1.0
Eight immutable rules governing all data operations in the sync pipeline. These rules cannot be overridden and are enforced at every stage.
| ID | Rule |
|---|---|
| PD-01 | NEVER DELETE HISTORICAL DATA. Append-only. Deactivate via is_active=FALSE. |
| PD-02 | POINT-IN-TIME COMPLIANCE. Use filing_date, not quarter_date, for fundamental joins. |
| PD-03 | SYMBOL FORMAT CANONICAL. All tables use TICKER.US format. |
| PD-04 | NO PARTIAL WRITES TO PROD. All writes to DEV first. Gate: โฅ95% rows + zero nulls on critical columns. |
| PD-05 | ADJUSTED_CLOSE ONLY. Raw close never used for analysis. |
| PD-06 | SYMBOL CONTAMINATION ZERO TOLERANCE. Filter mutual funds, OTC, warrants at Stage 1. |
| PD-07 | IDEMPOTENT STAGES. Safe to re-run. UPSERT / ANTI JOIN patterns. |
| PD-08 | CURSOR PERSISTENCE. Long-running stages write progress to SYNC_STATE for resumability. |
Caching Architecture
4-Layer Cache
JCN uses a multi-layer caching strategy to minimize latency and API calls. Each layer has specific TTLs and invalidation rules.
| Layer | Location | Latency | TTL |
|---|---|---|---|
| L3 | Browser localStorage | 0ms | 24hr (perf data), 15min (live prices), 30min (analysis) |
| L2 | Vercel /tmp | 0ms (warm) | Date-based invalidation (new trading day) |
| L1 | PROD_DASHBOARD_SNAPSHOT | ~200ms | Rebuilt during Stage 2 sync |
| L0 | Legacy 5-CTE Query | 2-4s | Always available fallback (no cache) |
| L4 | EODHD Real-Time | ~500ms | 15min client-side throttle, manual refresh only |
TTL Strategy
Cache TTLs are designed around data freshness requirements. Portfolio performance data (24hr TTL) only needs daily refresh since it uses EOD prices. Live prices (15min TTL) balance freshness with API rate limits. Stock analysis data (30min TTL) represents quarterly fundamentals that change infrequently.
// Cache hierarchy โ check in order, return first hit:
1. localStorage (instant) โ if valid TTL, return
2. /tmp file cache (instant if warm) โ if same day, return
3. PROD_DASHBOARD_SNAPSHOT (~200ms) โ pre-computed row, return
4. Legacy 5-CTE query (2-4s) โ full DB query, return + cache
5. EODHD API (500ms) โ live prices only, on manual refreshRisk Management
The Global Portfolio Risk Assessment page (/risk-management) provides institutional-grade risk analytics for the JCN 57-position global portfolio. Data loads instantly from a nightly MotherDuck cache (PROD_RISK_SNAPSHOT).
Sections: Portfolio Composition (4 donut charts) ยท Concentration Health (HHI, Effective N, position bars, sector vs S&P 500) ยท Historical Crash Simulator (Hidden Levers-style: actual stock prices during 6 crises) ยท Market Sensitivity (beta gauge, interactive โ30/+30% shock calculator) ยท Drawdown Reality Check ยท Macro Sensitivity Map (7 pressure points with $ impact estimates).
Key metrics: Portfolio beta โ 1.15 ยท Effective N (true diversification) ยท HHI concentration score ยท Up/Down capture vs ACWI ยท CVaR 95/99 ยท Ulcer Index ยท Crisis scenarios: 2008 GFC, 2022 Rate Shock, 2001 Dot-Com, 2020 COVID, Q4 2018, Ukraine.
Cache: PROD_EODHD.main.PROD_RISK_SNAPSHOT โ rebuilt nightly via the /api/cron/morning orchestrator (6:30am UTC). Falls back to live compute (~15s) on first run. All computations use adjusted prices only (PD-05).
Model History
The Model Performance History page (/model-history) is a full institutional tearsheet for JCN's two strategies, built from actual rebalance-weighted holdings using GIPS 2020-compliant Time-Weighted Return methodology.
Strategies: Persistent Value (inception April 30, 2016 ยท CAGR 18.17% gross ยท Max DD โ34.81%) and Olivia Growth (inception October 1, 2018 ยท CAGR 20.95% gross ยท Max DD โ47.44%). Both verified against JCN GIPS audit files.
Tearsheet sections (all on one scrollable page): KPI strip ยท Growth of $100k (adj prices, dividends reinvested) ยท Drawdown underwater chart ยท GIPS Annual Return Table (Gross/Net/ACWI/SPY) ยท Complete 50+ metric table ยท Monthly heatmap (net monthly cells + Gross/Net annual columns) ยท Rolling Risk 2ร2 grid ยท Risk/Return scatter ยท Up/Down capture ยท Return distribution ยท Best/Worst periods ยท Underwater duration ยท Active returns ยท Rebalance timeline ยท Crisis analysis ยท Holdings file manager.
Holdings management: Upload new CSV after each rebalance. Every version is preserved in PROD_MODEL_HOLDINGS_LOG (never deleted). Download the current template from the page to edit for next rebalance. Format: Date, Symbol, Target Weight.
Accuracy notes: BKNG 25:1 split correction applied (factor 25.0625ร). Cash symbols (FDRXX) modeled as $1.00 flat-price instruments. All prices from PROD_EOD_survivorship adjusted_close (PD-05). Sharpe uses 2.5% risk-free rate. Net returns deduct 2.20%/yr advisory fee at 2.20%/252 per trading day.
Pearl (AI Analyst)
What Pearl Is
Pearl is the app's built-in AI financial analyst โ you ask questions in plain English ("what are the best JCN composite stocks right now?", "why is NVDA's score what it is?", "how has the QARP model performed?") and it answers using our own data and methodology, not generic internet knowledge.
The 5 Brain Layers
Think of Pearl's "brain" as five layers:
- General training โ Pearl (built on Claude) already understands finance, math, and language.
- Our house knowledge โ the JCN/CFA-level methodology encyclopedia (value vs. value-trap, quality, moat, momentum) so it answers in our voice.
- Live look-ups โ queries our database on demand (prices, factor scores, composites, screens, and now the deeper ~656-factor library and 14 backtested models) to ground every answer in current numbers.
- Outside context โ analyst ratings, insider activity, and news for the stocks we actually track (data is being ingested now; chat tools land next).
- Proactive smarts โ watching your portfolio for changes and learning what has worked (roadmap).
Prompt Caching โ Live
Plain version: every time you ask Pearl something, it has to "read" a big rulebook first โ its personality, our data rules, and the list of tools it can use (about 8,000 words). Re-reading that from scratch on every question is slow and expensive.
What we did: we let Pearl keep that rulebook open on the desk instead of re-reading it each time. The first question "writes it to memory"; every follow-up step reuses it. Why it matters: ~90% cheaper on the repeated part and noticeably faster โ with no change to the answers (measured: a 2-step question reused ~92% of its input instead of re-reading it).
We also added context editing: on long conversations, the server clears old tool-lookup results instead of letting the conversation grow unbounded โ keeps multi-turn chats fast and on-cost without losing the cached rulebook.
Tools Live Today โ
Pearl can look up, right now:
- Stock profiles โ price, the 5 JCN factor scores, fundamentals, analyst consensus, for any tracked stock (fast cache for the ~1,600-stock CORE universe, plus a dedicated fast lookup for any current/past-holding/watchlist name outside that).
- Deep factor detail โ the ~656-metric library we compute but had no chat tool for until now: Altman-Z bankruptcy risk, Beneish-M earnings-manipulation risk, Piotroski-F financial strength, Greenblatt valuation ratios, multi-year growth-CAGR trends, risk-adjusted returns (beta/vol/Sharpe/Sortino/drawdown), and 8-quarter earnings-surprise history.
- Backtested factor models โ "how has JCN Moat performed?", "what does QARP hold right now?" โ all 14 backtested JCN models (CAGR, Sharpe, drawdown, current holdings), the same data behind the Factor Models page.
- Portfolios โ holdings, prices, gains/losses, and scores for all three model portfolios.
- Screens โ filtered stock searches across the CORE-4 universe.
- Encyclopedia โ our methodology write-ups (QARP, FIP, Piotroski, ROIC/moat, GQM, capital cycles, and more), now reached by reasoning rather than keyword matching (see below).
- Analyst view โ Wall Street buy/hold/sell recommendation trends for any tracked stock.
- Insider activity โ who is buying or selling inside the company, plus an insider-sentiment reading.
- News โ recent headlines for tracked stocks.
- Earnings radar โ upcoming report dates and recent surprise history.
- Written reports โ ask Pearl to write and email a report in our standard format, either once or on a recurring schedule.
- Live web search โ real internet access (not just our own feeds) for macro backdrop, general company/sector news, and anything else our data doesn't cover, plus the ability to open a specific link in full.
- Grok (xAI) search โ a second, independent search engine with genuine live X/Twitter access our primary web search doesn't have, used specifically for market-sentiment/social-chatter questions or as a cross-check.
Reasoning Its Way Through the Encyclopedia โ Live
Pearl used to find methodology by matching your words against a fixed list of keywords. If you phrased a question in your own words, it could come back with nothing โ even when the encyclopedia covered the answer in detail.
Pearl now reads the encyclopedia's table of contents and reasons its way to the right section, the way a person would use the contents page of a textbook. A real example: asking "does JCN care whether a signal still works after it's published?" used to return nothing at all. Pearl now finds "Publication Effects: How Academic Discovery Reduces But Does Not Eliminate Premiums" and answers with the underlying research.
Notably, this needed no vector database and no embeddings โ our encyclopedia is already organised into parts, chapters and sections, so the contents page is essentially free to build and takes under a second to refresh whenever the methodology changes.
Always-On Watch โ Live
Every night we scan your holdings, your watchlist, and the top of the CORE-4 rankings for changes that would actually change a decision โ then you can simply ask Pearl "what changed in my book today?" or "anything breaking down?"
- Score breakdowns โ the composite or any factor family dropping a full quintile month-over-month.
- Momentum roll-overs โ a name whose momentum crosses down through the midpoint.
- Analyst downgrades โ the Wall Street consensus shifting against a name.
- Insider selling clusters โ several insiders selling on the open market in the same window.
- Insider-sentiment flips โ insider behaviour turning from net buying to net selling.
- New candidates โ a name entering the top of the rankings that wasn't there last month.
Two deliberate design choices. First, the detection is plain arithmetic, not AI โ thresholds in the database decide what counts as a change, and Pearl's only job is to explain what fired. That keeps it auditable and means it can never invent an alert. Second, we count only genuine open-market insider sales: shares withheld automatically to cover taxes, and routine option exercises, are excluded because they reflect no opinion about the company. Including them was flagging roughly a third of the universe as "insiders are bearish" โ which was simply not true.
Smarter Behavior ๐ Roadmap
- Deep-research write-ups โ for the most material overnight changes, Pearl researches the story behind the move and writes a short "what changed, why it matters, what we might do" note.
- Nightly briefing โ that digest delivered to you in-app and by email, material items only.
- Bull vs. Bear โ Pearl argues both the optimistic and skeptical case, then gives a balanced verdict.
- Score lineage & peers โ "why is this name a 72?" broken down contribution by contribution, and "what else looks like this?"
- Learns what works โ using our full history of what we bought and how it turned out, Pearl suggests what to overweight/trim/replace (suggestions only โ you always decide).
- Quality gate โ a second AI check confirms every answer is grounded in our real data before it's shown or emailed.
User Guide โ For the Team
Want a PDF copy of just this guide for your records?
Who This Is For
This section is for the team โ not required background in investment analysis. It's written for the person sitting across from a client who needs to pull up a stock, explain why we hold it, show a risk number in plain English, or find a better alternative โ fast, and correctly.
There are always two ways to get an answer in this app: click through the page yourself (this guide tells you where), or just ask Pearl in plain English in the chat and let it do the digging across scores, filings, news, and risk data for you. Most of this guide shows both โ the page to open, and the exact thing to type into Pearl instead if you'd rather skip the clicking.
Read it once top to bottom to see the full scope of what's possible, then use the Quick Reference table below as your day-to-day cheat sheet.
Quick Glossary โ Plain English
A few terms you'll see everywhere in this app. If a client asks about a term that isn't here, just ask Pearl โ e.g. "explain what a moat is in simple terms" โ and it will explain in plain English using our own methodology, not a generic definition.
- Market Cap โ the total value of a company's shares (share price ร shares outstanding). A quick sense of company size.
- P/E Ratio โ price divided by earnings per share. Roughly, "how many years of current profit would it take to pay back the stock price." Lower usually means cheaper, but not always better โ fast-growing companies often trade at higher P/E for good reason.
- ROE / ROIC โ Return on Equity / Return on Invested Capital. How efficiently a company turns the money invested in it into profit. Higher is generally better.
- Moat โ a durable competitive advantage (brand, network effect, switching costs, scale) that protects a company's profits from competitors long-term.
- JCN Factor Scores โ our own 0-100 percentile scores (100 = best vs. the universe) across five dimensions: Value (how cheap), Quality (how profitable/efficient), Growth (how fast expanding), Momentum (how strong the recent price trend is), and Financial Strength (balance-sheet health). The Composite blends all five.
- Percentile Rank โ where a stock ranks against every other stock we score. A score of 90 means it beats 90% of the universe on that measure.
- CAGR โ Compound Annual Growth Rate. The smoothed, year-over-year growth rate of something (revenue, earnings, an investment) over a period.
- Sharpe / Sortino Ratio โ return earned per unit of risk taken. Higher is better; Sortino only penalizes downside volatility (the kind clients actually worry about), Sharpe penalizes all volatility.
- Beta โ how much a stock (or portfolio) tends to move relative to the overall market. Beta of 1.5 means it moves roughly 50% more than the market, both up and down.
- Drawdown โ the peak-to-trough decline during a specific bad stretch. "Max drawdown of -35%" means the worst dip was 35% below its prior high.
- Volatility โ how much a price bounces around. Higher volatility = a bumpier ride, not necessarily a worse outcome.
- Sector Rotation โ money flowing from one sector (e.g. Technology) into another (e.g. Healthcare) as market conditions or expectations shift.
- Backtest โ simulating how a strategy would have performed historically, using real past data. Not a guarantee of future results.
- Benchmark โ the yardstick we compare performance against, almost always the S&P 500.
- Insider Activity โ company executives/directors buying or selling their own company's stock. Can be a useful signal, but routine tax-related sales are filtered out of our reads so you only see decisions that actually mean something.
- Analyst Consensus โ the aggregated Buy/Hold/Sell view of Wall Street analysts covering a stock.
Quick Reference โ What Do I Use For...?
Bookmark this table. It's the fastest path from a client question to an answer.
| Client asks / task | Best page | Or just ask Pearl |
|---|---|---|
| "Tell me about this stock" | Stock Analysis | "Give me a snapshot of AAPL โ scores, valuation, and profitability" |
| "Is there something better/cheaper?" | Screener | "Find similar-quality stocks to AAPL that are cheaper on value" |
| "Why do we own this?" | Persistent Value / Olivia Growth / Pure Alpha | "Why do we own NVDA in Persistent Value?" |
| "How risky is our portfolio?" | Risk Management | "How concentrated is our portfolio, and what happens in a 2008-style shock?" |
| "What's happening in the market/a sector today?" | Market Analysis / Sector Analysis | "What's happening in the Technology sector right now?" |
| "What's the macro backdrop?" | Macro Models | "What's the market breadth signal doing right now?" |
| "How has a strategy done historically?" | Factor Models | "How has the QARP model performed, and what does it hold now?" |
| "What's changed since I last checked?" | Pearl Chat (no page needed) | "What changed in my book today? Anything breaking down?" |
Dashboard
The homepage โ live charts (SPY, QQQ, ACWI) and a market heatmap. Nothing to configure; it's just a quick pulse-check. Good for opening a client call with "here's the market today" before diving into specifics.
Stock Analysis
This is the tool for "tell me about this stock." Search any ticker and you get 10 modules: per-share data, quality metrics, full financial statements, growth rates, valuation ratios, and the 5 JCN factor scores with a radar chart. Everything a client typically asks about a single company lives on this one page.
What to click: the search box at the top โ type a ticker or company name, hit enter, scroll through the modules in order.
Ask Pearl instead:
"Give me a full profile on MSFT โ scores, valuation, and any recent insider activity"
"What's driving AAPL's quality score?"
"Compare NVDA and AMD on growth and risk-adjusted return"Screener
This is the tool for "is there something better?" Filter the investable universe by any combination of factor scores, valuation, growth, profitability, momentum, liquidity, or market-cap size, then rank the results however matters most for the conversation.
What to click: pick a preset from the dropdown (20 built-in, covering named strategies like Deep Value, GARP, Quality Minus Junk) or build your own filter across the 7 tabs; use the Liquidity filter if tradability matters for the client's account size; sort by any column to rank the results.
Ask Pearl instead:
"Find high-quality, high-growth stocks trading cheap on value, liquid enough to trade $5M+/day"
"Show me alternatives to XOM with a better financial strength score"
"What does the JCN Moat Score screen currently favor?"Our Three Portfolios
Persistent Value, Olivia Growth, and Pure Alpha are our three model portfolios โ each page shows current holdings, live performance vs. the S&P 500, allocation, and the JCN factor scores for every position. This is where "why do we own this" conversations should start.
What to click: the Performance table for returns vs. benchmark, Allocation for sector/position weights, the Factor Score table for why each holding qualifies for that strategy.
Ask Pearl instead:
"Why do we own NVDA in Persistent Value?"
"How has Olivia Growth performed vs the S&P 500 this year?"
"What are the top and bottom contributors in Pure Alpha right now?"Market & Sector Analysis
Market Analysis is the full investable universe in one searchable, sortable table โ use it to screen across everything at once. Sector Analysis breaks the same universe down by GICS sector โ 9 modules including sector score summaries, quintile distributions, momentum dashboards, and rotation heatmaps. Use this when a client asks about a specific industry or wants to know which sectors are in favor right now.
Ask Pearl instead:
"What's happening in the Technology sector right now โ scores plus any relevant news?"
"Which sectors are showing the strongest momentum today?"Risk Management
This is where portfolio-level risk lives: concentration (how much sits in the top few names/sectors), beta (how much the book amplifies market moves), and modeled scenario shocks (2008 GFC, 2020 COVID, 2022 rate shock, and more) showing what our actual current holdings would have done in past crises. This is the page for explaining downside risk to a nervous client in concrete terms rather than abstract reassurance.
What to click: the concentration donut charts, the beta summary, and the scenario shock buttons.
Ask Pearl instead:
"How concentrated is our portfolio right now, and what happens under a 2008-style shock?"
"What's our portfolio beta, and which positions are driving it?"Macro Models
Home of the BPBP (Bull Power / Bear Pressure) indicator โ a market-wide breadth signal, independent of our own stock scores, that shows whether a rally is broad (healthy) or narrow (a handful of names carrying the whole market). Useful context before any "is the market about to turn" conversation.
Ask Pearl instead:
"What's the BPBP breadth signal doing, and is this rally broad or narrow?"Factor Models
All 14 backtested JCN factor models (QARP, GARP, Moat, Fortress, Alpha Trifecta, and more) โ each with its own performance chart, key stats (CAGR, Sharpe, max drawdown), and current holdings. Use this when a client asks how a particular strategy has actually performed over time, not just what it holds today.
Ask Pearl instead:
"How has the QARP model performed since inception, and what does it hold right now?"Watchlist
A simple running list of names you're tracking but don't currently own โ add from the Screener or Stock Analysis with one click. Pearl can see your watchlist too, so it's included automatically in questions like "what changed in my book today."
Pearl Chat โ Prompt Cookbook
Pearl is the fastest way to get any of the above without clicking through pages โ it has live access to everything: our scores, portfolios, screens, backtests, risk analytics, SEC filings, news, insider activity, analyst views, and general internet search. Be specific (ticker, portfolio name, timeframe) and Pearl will tell you plainly if something is outside what our data covers rather than guessing.
Fundamentals & comparisons
"Give me a quick snapshot on TSLA: scores, factor percentiles, and recent insider activity"
"Compare AMD vs NVDA on quality, growth, and risk-adjusted factors"
"What's this stock's Sharpe ratio and revenue growth percentile?"Our own portfolios & performance
"Why do we own META in Pure Alpha?"
"How has Persistent Value performed vs the S&P 500 this year?"
"What changed in my book today? Anything breaking down?"Risk & macro
"How concentrated is our portfolio, and what happens under a 2008-style shock?"
"What's the macro breadth signal doing, and what's our portfolio beta right now?"Digging deeper into a specific company
"Pull AAPL's most recent 10-K and summarize the risk factors section"
"What is X/Twitter sentiment saying about this stock today?"
"Search the web for the latest news on this company's sector"Methodology, in plain English
"Explain what a moat score is in simple terms"
"Why does JCN use a 5-factor scoring system instead of just P/E?"Worked Examples โ Client Conversations End to End
1. "Why do we own NVDA?"
Open Pearl and ask "why do we own NVDA in Persistent Value?" Pearl will pull the actual factor scores (typically elite Quality/Growth, expensive on Value) and explain the trade-off in the same voice used throughout this app. Present that directly โ it's already client-ready language, not raw numbers you have to translate yourself.
2. "I'm worried about this stock โ what else is out there?"
Ask Pearl "find alternatives to [ticker] with similar quality but better value", or open the Screener and filter for the same sector with a higher Financial Strength score and better liquidity. Follow up by asking Pearl to compare the two head-to-head.
3. "What happens to my money in a recession?"
Open Risk Management, or ask Pearl "what happens to our portfolio under a 2008-style shock?" โ you'll get a real, specific dollar number and the actual names driving it, not a vague "markets can be volatile" answer. Pearl will also flag data coverage caveats (e.g. some current holdings didn't exist as public companies in 2008) โ pass that caveat along honestly.
4. "What's going on in the market today?"
Glance at the Dashboard for the pulse, then ask Pearl "what's happening in the market today โ any sector standouts, and what's the macro backdrop?" for a synthesized answer that pulls sector scores, price action, and macro breadth together in one response.
Saving This Guide as a PDF
Click the Save as PDF button at the top of this section โ it hides the rest of the technical wiki and opens your browser's print dialog with just this guide. Choose Destination: Save as PDF (Chrome/Edge) and save. If you print from the browser's regular print/keyboard shortcut instead, you'll get the entire wiki, not just this section โ use the button above for a clean, guide-only copy.