JCN Financial

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 the top 1,500 US equities by market capitalization.

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

LayerTechnologyPurpose
FrontendNext.js 14, React 18, Tailwind CSSSSR, routing, responsive UI
ChartsECharts 6.0, RechartsInteractive charts, radar, line graphs
UI KitTremor v3, Radix UIDashboard components, accessible primitives
BackendFastAPI (Python)Serverless API on Vercel
DatabaseMotherDuck (DuckDB cloud)Analytical warehouse β€” prices, fundamentals, scores
DataEODHD APIEOD prices, fundamentals, bulk downloads
HostingVercel ProServerless deploy, 300s function timeout
CachingSWR, localStorage, /tmpMulti-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. Limited to the top 1,500 US stocks by current market capitalization. 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.

#ModuleDescription
1Stock Info HeaderCompany name, sector, P/E, Forward P/E, Div Yield, Beta, ROE, Analyst Target
2Price vs SPY5-year chart indexed to 100. Stock (blue) vs SPY (gray)
3Per Share Data14 metrics over 10+ years: Revenue/Share, EPS, FCF/Share, Book Value, Yields
4Quality Metrics17 ratios: Margins, Returns, Leverage, Efficiency
5Income StatementHierarchical P&L with expandable parent-child rows
6Balance SheetAssets, Liabilities, Equity with 3-level hierarchy
7Cash FlowsOperating, Investing, Financing sub-items. Free Cash Flow.
8Growth RatesYoY growth, 12 metrics, heatmap coloring
9Valuation Ratios9 valuation metrics + analyst consensus bar
10JCN Scores6-dimension composite scoring (0-100) with 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 stock in the top 1,500 by market cap 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.

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 entire investable universe at a glance. These are computed from all ~3,000 stocks in the JCN universe, not just the ones 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 full ~3,000 stock investable universe. A score of 75 means the median stock in that sector is in the 75th percentile of the 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.

MetricFormulaDescription
Current PriceEODHD real-time or latest adjusted_closeMost recent price, 15-min delayed max
Daily Change %(close_today - close_yesterday) / close_yesterday * 100Percentage move from prior close
YTD Return(price_now - price_jan1) / price_jan1 * 100Year-to-date total return
1Y Return(price_now - price_1yr_ago) / price_1yr_ago * 100Trailing 12-month return
3Y Return(price_now - price_3yr_ago) / price_3yr_ago * 100Trailing 3-year cumulative return
5Y Return(price_now - price_5yr_ago) / price_5yr_ago * 100Trailing 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.

ScoreDB ColumnMethodology
Value Scorevalue_score_compositeRanks 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 Scorequality_score_compositeMeasures business quality via gross margin stability, ROE consistency, earnings quality (accruals), and balance sheet strength.
Growth Scoregrowth_score_compositeEvaluates revenue growth, earnings growth, and forward estimates. Combines trailing 3Y CAGR with analyst consensus forward growth.
Financial Strengthfinstr_score_compositeAssesses balance sheet health: current ratio, debt-to-equity, interest coverage, Altman Z-score components, and cash flow adequacy.
Momentum Scoremomentum_score_compositePrice 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.

MetricFormulaDescription
Revenue/Shareis_totalRevenue / sharesTotal annual revenue divided by shares outstanding
EPSis_netIncome / sharesEarnings per share β€” net income allocated to each share
FCF/Sharecf_freeCashFlow / sharesFree cash flow per share β€” cash available after capex
EBITDA/Shareis_ebitda / sharesEarnings before interest, taxes, depreciation, amortization per share
Book Value/Sharebs_totalStockholderEquity / sharesNet asset value per share (equity / shares)
Operating CF/Sharecf_totalCashFromOperatingActivities / sharesCash from operations per share
Dividend/Share-cf_dividendsPaid / sharesAnnual dividend paid per share (dividends are negative in cash flow)
Buyback Yield-cf_salePurchaseOfStock / market_capShare repurchases as a percentage of market cap
Dividend Yield-cf_dividendsPaid / market_capAnnual dividends as a percentage of market cap
Total Return Yield(-dividends + -buybacks) / market_capCombined shareholder yield from dividends and buybacks
Shares Outstandingbs_commonStockSharesOutstanding / 1MTotal shares outstanding in millions
Revenue ($M)is_totalRevenue / 1MTotal annual revenue in millions
Net Income ($M)is_netIncome / 1MTotal annual net income in millions
Free Cash Flow ($M)cf_freeCashFlow / 1MAnnual 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.

MetricFormulaDescription
Gross Marginis_grossProfit / is_totalRevenueRevenue retained after cost of goods sold. Higher = stronger pricing power.
Operating Marginis_operatingIncome / is_totalRevenueProfitability from core operations after operating expenses.
Net Marginis_netIncome / is_totalRevenueBottom-line profitability after all expenses, interest, and taxes.
EBITDA Marginis_ebitda / is_totalRevenueCash earnings margin before non-cash charges and financing.
FCF Margincf_freeCashFlow / is_totalRevenueFree cash flow as percentage of revenue. Measures cash conversion.
ROICis_netIncome / (equity + longTermDebt)Return on invested capital. Measures efficiency of capital allocation.
ROEis_netIncome / bs_totalStockholderEquityReturn on equity. Profit generated per dollar of shareholder equity.
ROAis_netIncome / bs_totalAssetsReturn on assets. Profit generated per dollar of total assets.
ROCEis_operatingIncome / (equity + longTermDebt)Return on capital employed. Operating profit on invested capital.
Debt/Equitybs_totalLiab / bs_totalStockholderEquityTotal leverage ratio. Higher = more leveraged balance sheet.
LT Debt/Equitybs_longTermDebt / bs_totalStockholderEquityLong-term debt leverage. Excludes short-term obligations.
Current Ratiobs_totalCurrentAssets / bs_totalCurrentLiabilitiesShort-term liquidity. Above 1.0 = can cover near-term obligations.
Interest Coverageis_operatingIncome / is_interestExpenseAbility to service debt. Higher = more comfortable debt burden.
Asset Turnoveris_totalRevenue / bs_totalAssetsRevenue generated per dollar of assets. Measures asset efficiency.
CapEx/Revenueabs(cf_capitalExpenditures) / is_totalRevenueCapital intensity. How much revenue is reinvested in fixed assets.
FCF Conversioncf_freeCashFlow / is_netIncomeHow much net income converts to free cash flow. Above 1.0 = high quality.
Cash Conversioncf_operatingCashFlow / is_netIncomeOperating 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.

Income Statement Hierarchy
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 Income
Balance Sheet Hierarchy
Total 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 Outstanding
Cash Flow Hierarchy
Operating 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 Cash

Growth 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.

MetricFormulaDescription
P/E Ratioprice / EPS (trailing)Price relative to trailing 12-month earnings
Forward P/Eprice / forward EPS estimatePrice relative to consensus forward earnings estimate
PEG RatioP/E / earnings growth rateP/E adjusted for growth. Below 1.0 suggests undervaluation relative to growth.
Price/Bookprice / book value per shareMarket price relative to net asset value. Below 1.0 = trading below book.
Price/Salesmarket_cap / revenue_ttmMarket cap relative to trailing revenue. Lower = cheaper on revenue basis.
EV/EBITDAenterprise_value / ebitdaEnterprise value per unit of operating cash earnings. Standard M&A metric.
EV/Revenueenterprise_value / revenue_ttmEnterprise value per unit of revenue. Capital-structure-neutral valuation.
Trailing P/Eprice / trailing EPSPrice to trailing earnings (may differ from standard P/E by data source).
Dividend Yieldannual_dividend / priceAnnual 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.

ScoreSource TableWhat it Measures
ValuePROD_OBQ_Value_ScoresRanks stocks by valuation attractiveness (P/E, P/B, EV/EBITDA, etc.)
QualityPROD_OBQ_Quality_ScoresBusiness quality via margins, ROE, earnings stability
Financial StrengthPROD_OBQ_FinStr_ScoresBalance sheet health, debt coverage, liquidity
GrowthPROD_OBQ_Growth_ScoresRevenue growth, earnings growth, forward estimates
MomentumPROD_OBQ_Momentum_ScoresPrice momentum signal based on relative strength
JCN CompositeAverage of all 5Overall 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.

Investable Universe

Scores are computed only for stocks in the JCN Investable Universe β€” the top 3,000 US equities by market capitalization, reconstituted annually on the last trading day of May. This mirrors the Russell 3000 reconstitution methodology used by FTSE Russell.

ParameterValue
Universe SizeTop 3,000 by market cap
Rank DayLast trading day of May each year
Effective PeriodJuly 1 through June 30 of the following year
DQ FiltersMarket cap $10M - $5T, adjusted close $0.01 - $500K
Pre-2003 HandlingAll available stocks scored (no universe filter)
TablePROD_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.

DimensionWeightDescription
Universe40%Cross-sectional percentile rank vs. all ~3,000 stocks in the same month. A stock scoring 90 is in the top 10% of the entire investable universe.
Sector40%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?
History20%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). The weighting emphasizes cash-flow-based measures over accounting earnings.

MetricWeightDirectionDescription
P/FCF (TTM)30%Lower is betterPrice to Free Cash Flow. Cash yield to shareholders β€” hardest metric to manipulate.
EV/EBITDA (TTM)25%Lower is betterEnterprise value to operating earnings. Capital-structure-neutral. Standard M&A metric.
P/E (TTM)20%Lower is betterPrice to trailing earnings. The classic valuation metric, included for universality.
P/S (TTM)15%Lower is betterPrice to sales. Useful for pre-profit or cyclically depressed companies.
P/B (MRQ)10%Lower is betterPrice to book value. Asset-based valuation floor, most relevant for financials and industrials.

P/FCF receives the highest weight because free cash flow is the purest measure of economic value available to shareholders. Unlike earnings, FCF is difficult to inflate through accounting choices. EV/EBITDA is capital-structure-neutral, allowing fair comparison between levered and unlevered firms β€” the standard metric in M&A valuation. P/E is included for universality but downweighted due to susceptibility to one-time charges and accounting distortions. 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. The weighting emphasizes asset-level profitability measures that academic research has shown to be the most predictive of future returns.

MetricWeightDescription
Gross Profitability (GPA)20%Gross Profit / Total Assets. The Novy-Marx (2013) quality factor β€” shown to be as powerful as book-to-market in predicting returns.
ROIC20%Return on Invested Capital. Net Income / (Equity + Long-Term Debt). Measures how efficiently management allocates capital.
ROA15%Return on Assets. Asset-level profitability, independent of capital structure.
FCF Margin15%Free Cash Flow / Revenue. How much revenue converts to actual cash available to shareholders.
Gross Margin10%Pricing power and cost structure durability.
Operating Margin10%Core business profitability after operating expenses.
Earnings Quality10%(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. GPA at 20% weight follows Novy-Marx (2013), who showed gross profitability scaled by assets has strong return-predictive power and is negatively correlated with value β€” making it an excellent complement in a multi-factor model.

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.

MetricWeightDescription
Revenue/Share Growth25%Top-line growth on a per-share basis. Adjusts for dilution from share issuance.
EPS Growth25%Earnings per share growth. Bottom-line compounding.
FCF/Share Growth25%Free cash flow per share growth. Cash-based confirmation of earnings growth.
Equity/Share Growth25%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 six 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).

MetricWeightDirectionDescription
Interest Coverage16.7%Higher is betterOperating Income / Interest Expense. Can the company comfortably service its debt?
FCF / Debt16.7%Higher is betterFree Cash Flow / Total Debt. How quickly could the company repay all debt from cash flow?
Net Debt / EBITDA16.7%Lower is betterNet leverage ratio. Years to repay net debt from operating earnings. Below 2x is healthy.
Debt / Assets16.7%Lower is betterTotal leverage ratio. What fraction of total assets is financed by debt?
Cash / Assets16.7%Higher is betterLiquidity buffer as a fraction of total assets.
Working Capital / Assets16.7%Higher is betterShort-term financial cushion. Positive working capital = current assets exceed current liabilities.

Equal weighting 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 and working capital 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.

ComponentWeightDescription
AF Momentum~40%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.
FIP Score~40%180-day directional price strength. Measures sustained trending behavior with less noise than raw returns by filtering short-term reversals.
SystemScore~20%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.

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.

PresetColumnFormulaUse Case
Full OBQ Compositejcn_full_compositeV:20 + Q:20 + G:20 + M:20 + FS:20Balanced all-factor exposure. No single factor dominates.
QARPjcn_qarpQ:40 + V:40 + M:20Quality at Reasonable Price. Buffett-style quality-value investing with trend confirmation.
GARPjcn_garpG:40 + V:40 + M:20Growth at Reasonable Price. Peter Lynch-style growth-value blend.
Quality + Momentumjcn_quality_momentumQ:50 + M:50High-quality businesses in uptrends. Avoids value traps by requiring momentum confirmation.
Value + Momentumjcn_value_momentumV:50 + M:50Deep value with trend confirmation. Avoids catching falling knives.
Growth + Quality + Momentumjcn_growth_quality_momentumG:34 + Q:33 + M:33Growth compounders with quality and momentum filter. Screens for the best growth stories.
Fortressjcn_fortressQ:40 + FS:40 + V:20Defensive. Strong balance sheet + high quality + reasonable price. Best for risk-off periods.
Alpha Trifectajcn_alpha_trifectaV:34 + Q:33 + M:33The 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). Over 121 million rows. Zone-map optimized by (date, symbol).

ColumnTypeDescription
symbolVARCHARTicker in TICKER.US format (e.g., AAPL.US)
dateDATETrading date
openDOUBLEOpening price
highDOUBLEIntraday high
lowDOUBLEIntraday low
closeDOUBLERaw closing price (NOT used for analysis)
adjusted_closeDOUBLESplit/dividend-adjusted close (PRIMARY price field)
isinVARCHARInternational Securities Identification Number
in_sp500BOOLEANCurrent S&P 500 membership
gics_sectorVARCHARGICS sector classification
industryVARCHARIndustry sub-classification
market_capDOUBLELatest market capitalization in USD
listing_dateDATEIPO / listing date
delisting_dateDATEDelisting date (NULL if still active)
is_activeBOOLEANTRUE if currently trading
instrument_typeVARCHARCommon 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.

ColumnTypeDescription
symbolVARCHARETF ticker in TICKER.US format (e.g., SPY.US)
dateDATETrading date
openDOUBLEOpening price
highDOUBLEIntraday high
lowDOUBLEIntraday low
closeDOUBLERaw closing price
adjusted_closeDOUBLEAdjusted close (PRIMARY)
isinVARCHARISIN 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 GroupPrefixAggregationKey Columns
Identitysymbol, date, filing_dateN/Asymbol (VARCHAR), date (quarter end), filing_date (SEC filing date)
Company Infocompany_name, sector, industryLatestsector, industry, gic_sector, gic_industry, exchange
Income Statementis_*SUM across quartersis_totalRevenue, is_grossProfit, is_operatingIncome, is_ebitda, is_netIncome
Balance Sheetbs_*Latest quarter in yearbs_totalAssets, bs_totalLiab, bs_totalStockholderEquity, bs_cash, bs_longTermDebt
Cash Flowcf_*SUM across quarterscf_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
Analystanalyst_*Latest (overwritten)analyst_target_price, analyst_buy, analyst_hold, analyst_sell, analyst_rating
Sharesshares_outstanding, bs_common...Latest / Historicalshares_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.

TableScore ColumnKey Columns
PROD_OBQ_Value_Scoresvalue_score_compositesymbol, month_date, value_score_composite
PROD_OBQ_Quality_Scoresquality_score_compositesymbol, month_date, quality_score_composite
PROD_OBQ_Growth_Scoresgrowth_score_compositesymbol, month_date, growth_score_composite
PROD_OBQ_FinStr_Scoresfinstr_score_compositesymbol, month_date, finstr_score_composite
PROD_OBQ_Momentum_Scoresmomentum_score_compositesymbol, 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

EndpointUsed InPurpose
/api/eod-bulk-last-day/USStage 1 (Ingest)Bulk download of latest EOD prices for all US symbols in a single API call
/api/real-time/[symbol].USLive Prices15-min delayed real-time quotes for portfolio current prices
/api/fundamentals/[symbol].USFundamentals SyncQuarterly 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)

Enforced via RateLimiter class. 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.

6-Point DQ Audit Checks
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. Approximately 4.48 million score rows generated.

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.

IDRule
PD-01NEVER DELETE HISTORICAL DATA. Append-only. Deactivate via is_active=FALSE.
PD-02POINT-IN-TIME COMPLIANCE. Use filing_date, not quarter_date, for fundamental joins.
PD-03SYMBOL FORMAT CANONICAL. All tables use TICKER.US format.
PD-04NO PARTIAL WRITES TO PROD. All writes to DEV first. Gate: β‰₯95% rows + zero nulls on critical columns.
PD-05ADJUSTED_CLOSE ONLY. Raw close never used for analysis.
PD-06SYMBOL CONTAMINATION ZERO TOLERANCE. Filter mutual funds, OTC, warrants at Stage 1.
PD-07IDEMPOTENT STAGES. Safe to re-run. UPSERT / ANTI JOIN patterns.
PD-08CURSOR 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.

LayerLocationLatencyTTL
L3Browser localStorage0ms24hr (perf data), 15min (live prices), 30min (analysis)
L2Vercel /tmp0ms (warm)Date-based invalidation (new trading day)
L1PROD_DASHBOARD_SNAPSHOT~200msRebuilt during Stage 2 sync
L0Legacy 5-CTE Query2-4sAlways available fallback (no cache)
L4EODHD Real-Time~500ms15min 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 refresh

Risk 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 at 4am 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.

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

MetricThresholdRationale
ROC (Return on Capital)> 15% sustained 5yr avgCapital efficiency β€” the master metric
ROC TrendStable or risingDeclining ROC = eroding moat
FCF MarginPositive and growingCash generation beats reported earnings
Debt/EquityReasonable for sectorAvoid 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 quality

Filter 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:

  1. Is the product a significant cost for the customer? (Mission-critical β†’ lower price sensitivity)
  2. Are there better or cheaper alternatives? (If no β†’ strong pricing power)
  3. Are there switching costs? (If yes β†’ locked-in customers)
  4. 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 it

Key Metrics & Red Flags

Primary metrics (quantitative scoring):

MetricWhat It MeasuresIdeal Threshold
ROC (Return on Capital)Capital efficiency β€” master metric> 20%, stable 5yr+
ROICReturn on all invested capital> 15%
FCF/Share GrowthCore cash compounding> 15% CAGR 5yr
Revenue GrowthTop-line expansion> 10% CAGR 5yr
FCF YieldCurrent cash return to shareholders2–5% (with high growth)
Share Price RΒ² (weekly)Consistency of compounding> 0.80 over 5yr
SBC % of OCFShareholder dilution risk< 30% (our gate threshold)
CAPEX % of OCFCapital intensity< 20% = capital-light
Gross MarginPricing power proxy> 50%
Debt/FCFLeverage 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."

Core metric: Return on capital sustained above cost of capital
Valuation: FCF yield vs bond yield. Expected return = growth + yield.
Avoids: Cyclicals, disruptable tech, capital raisers
Hold: Long-term, never trade in/out of high-quality positions

Chuck Akre β€” Akre Capital Management

The "three-legged stool" framework

Leg 1: Extraordinary business (high ROE compounding)
Leg 2: Talented management (owner-operator ideal)
Leg 3: Great reinvestment opportunities at high returns
Core concept: "Compounding machine" β€” businesses that reinvest at high returns indefinitely

Dev Kantesaria β€” Valley Forge Capital

"Asymmetric compounding" β€” top 0.1% of global businesses only

Quality bar: Extremely high β€” top 0.1% globally
Time horizon: Hold "forever" β€” 10+ years
Core metrics: Revenue growth, margin expansion, ROC consistency
Avoids: Companies where terminal value is uncertain

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.

GateThresholdData SourcePass Rate
1 β€” GrowthFCF/share 5yr CAGR > 15%PROD_OBQ_Growth_Scores.fcf_ps_cagr_5y~35%
2 β€” ROCCash ROC > 20%PROD_OBQ_Quality_Scores.roic~45%
3 β€” MarginsFCF Margin > 20%PROD_OBQ_Quality_Scores.fcf_margin~40%
4 β€” CapExCAPEX < 20% OCF AND PA/TA < 40%PROD_LONGEQ_SCORES computed fields~70% (NULL PP&E = auto-pass)
5 β€” SBCSBC < 30% OCFcf_stockBasedCompensation / cf_totalCashFromOperatingActivities~80%
6 β€” BuybacksShare count change < +5% (5yr)shares_outstanding history~75%
7 β€” InterestInterest < 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.20

Point-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Β² regression
  • PROD_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_cap
  • PROD_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:

FilterOptions
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 GateAny / Pass (FCF CAGR>15%) / Fail
ROC GateAny / Pass (ROC>20%) / Fail
Margins GateAny / Pass (FCF margin>20%) / Fail
CapEx GateAny / Pass (capital-light) / Fail
SBC GateAny / Pass (SBC<30% OCF) / Fail
Buybacks GateAny / Pass (no dilution) / Fail
Interest GateAny / 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):

SymbolLQ ScoreLQ RankAssessment
LRCX72732βœ… Elite β€” perfect compounder alignment
KLAC72742βœ… Elite β€” capital-light semiconductor equipment
ISRG5~1200βœ… Strong β€” surgical robotics monopoly
MSCI6~1200βœ… Strong β€” index/data infrastructure monopoly
MA6~1200βœ… Strong β€” payments network effect
V72737βœ… Elite β€” pure network effect compounder
COST3~750⚠️ Low LQ score β€” CAPEX heavy, margins below 20%
SPMON/AN/A❌ ETF β€” not evaluated by LongEq methodology
TSLA2~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 ModelScopeDescriptionJCN Implementation
Big MoMarket-levelDiffusion index: % of 96 BMES subindustry indices with bullish trend + momentum. Score 0–100. >79 = bull, <56 = bear.Not implemented (requires subindustry data)
Little MoStock-level dailySame logic as Big Mo but built from individual stocks. More tactical.Not implemented
The Fab FiveMarket timing5-component model (TapeΓ—2 + Sentiment + Monetary + Combo). Score βˆ’5 to +5.Not implemented (needs macro data)
Dynamic Focus RankIndividual stocks5-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.

RegimeTrigger ConditionTechnicalProfitabilityValuationRisk
MOMENTUMMedian momentum score > 6540%25%20%15%
DEFENSIVEMedian quality score > 6520%35%25%20%
VALUEMedian value score > 6520%25%40%15%
RISK_OFFMedian momentum score < 3515%25%25%35%
NEUTRALNone of the above25%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.

TableRows / MonthDescription
DFR_TECHNICAL_SCORES~3,000Momentum + trend deviation sub-rank per stock
DFR_PROFITABILITY_SCORES~3,000ROA / ROE sub-rank per stock
DFR_VALUATION_SCORES~3,0004-metric yield sub-rank per stock
DFR_RISK_SCORES~3,000Vol + accruals + mean-reversion sub-rank (inverted)
DFR_REGIME_LOG1Regime detected + weights used for the month
DFR_COMPOSITE_SCORES~3,000Final 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:

DimensionLongEq Quality CompounderNDR Dynamic Focus Rank
PhilosophyAbsolute quality gates β€” pass/fail on 7 criteriaRelative cross-sectional ranking β€” percentile vs universe
Factor weightsStatic β€” always equal (1 point per gate)Dynamic β€” shift monthly based on market regime
Time horizonLong-term compounder (3–10 yr hold)Medium-term adaptive (1–12 month regime-aware)
Sector coverageExcludes Financials, Utilities, Energy, REITs, MaterialsAll sectors included
Key questionIs this a durable compounding business?Is this stock the best relative opportunity right now?
Score scale0–7 binary gates0–100 continuous composite
Best used forPV portfolio candidate vetting, long-term addsTactical ideas, relative value within sector, rotation
Miss riskMay miss cyclicals that are excellent value near troughMay 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.

GateThresholdMetricRationale
ROCE> 15%Operating income / (Total assets βˆ’ Current liabilities)Primary quality filter β€” capital efficiency above cost of capital
Gross Margin> 50%Gross profit / Revenue TTMPricing power proxy β€” intangible moat indicator
Cash Conversion> 80%Operating cash flow / Net incomeProfits must become cash β€” 'cash is fact, profit is opinion'
Debt / EBIT< 2Γ— (or net cash)Net debt / Operating incomeAvoids leverage-dependent businesses
Revenue Growth> 3% / yr (3yr)3yr revenue CAGROrganic growth β€” not acquisition-driven
FCF Yield> 2.5%Free cash flow / Market capValuation 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&apos;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.

GateThresholdMetricRationale
Revenue Growth> 10% / yr (3yr)3yr revenue CAGRMinimum growth threshold β€” both Polen and Danoff require double-digits
EPS Growth> 10% / yr (3yr)3yr net income CAGREarnings must grow consistently β€” not just revenue
ROE> 20%Return on equity TTMPolen&apos;s primary capital efficiency filter
DebtNet D/E < 1.0Net debt / Shareholder equityGrowth should be self-funded β€” not levered
Not ExpensivePEG < 3.0Forward PE / Revenue growth (as %)Contrafund&apos;s GARP filter β€” won&apos;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.

GateThresholdMetricRationale
Revenue Consistency> 5% / yr (5yr)5yr revenue CAGRPredictability β€” consistent growth over full cycle
EPS Consistency> 5% / yr (5yr)5yr net income CAGRPredictable earnings β€” Buffett&apos;s owner earnings concept
ROE> 12% avg (5yr)Average ROE over 5yr filingsMunger: businesses that earn 12%+ ROE for decades create wealth
DebtD/E < 0.5Total liabilities / Shareholder equityMunger&apos;s low-debt rule β€” avoid leverage-dependent businesses
Operating Margin> 15%Operating margin TTMDurable profitability β€” competitive advantage signal
FCF Consistencyβ‰₯ 4 of last 5 yrs positiveYears with positive free cash flowOwner earnings must be real cash, not accounting artifacts
ValuationPE < 130% of historical medianCurrent PE / Median historical PEThe 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.

DimensionLongEqFundsmithQuality GrowthGuruFocusNDR DFR
Primary filterFCF margin + ROC > 20%ROCE > 15%EPS growth > 10%/yr10yr earnings consistencyCross-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%/yrRevenue + EPS > 10%/yrRevenue + EPS > 5%/yrMomentum-based
Debt stanceInterest < 20% op incomeNet debt < 2Γ— EBITNet D/E < 1.0D/E < 0.5 (strict)Accruals ratio
Capital qualityFCF margin + buybacksROCE + gross marginROE > 20%ROE > 12% avgProfitability rank
Sectors avoidedBanks/utilities/energyBanks/airlines/energyEnergy/utilities/materialsFinancials (flagged)None excluded
Valuation tol.NoneHighMediumLow (needs MOS)None
Time horizonLong (FCF compounders)Very long (do nothing)Medium-long (growth hold)Long (predictable biz)Medium (regime-aware)
Score scale0–70–60–50–70–100 continuous
Typical namesLRCX, ISRG, COSTMSFT, IDEXX, PMNVDA, META, AMZNJNJ, WM, KOTop 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 NameTabKey FilterAcademic Source
1Size Factor PremiumDescriptiveMarket cap tiers: Mega/Large/SMID/Small/MicroFama-French (1993), Banz (1981)
2Deep Value (Graham)ValuationP/E < 10–15Graham, Morningstar Style Box
3GARP (Peter Lynch)ValuationPEG < 1.0–2.0Lynch, Morningstar Style Score
4EV ScreenValuationEV/EBITDA < 6–15Γ—NDR Valuation: EBIT/EV, FCF/EV
5Shareholder YieldValuationDividend yield tiers (2%–6%+)Morningstar Total Yield Factor
6Accelerating GrowthGrowthRevenue growth > 10–30%NDR Standardized Unexpected Revenue
7Consistent CompoundersGrowthEarnings growth 8–20%NDR EPS Stability, Sales Stability
8Earnings MomentumGrowth% below 52W high < 5–20%NDR Standardized Unexpected EPS
9R&D ReinvestorsGrowthOBQ Growth Score β‰₯ 65–85NDR R&D/Assets, L-T EPS Growth
10ROCE EliteProfitabilityROE > 20–30%Morningstar Quality Factor (Asness 2019)
11Efficient OperatorsProfitabilityGross margin > 50–70%NDR Gross Profit/Assets, Asset Turnover
12Quality Minus JunkProfitabilityOBQ Quality Score β‰₯ 60–85AQR QMJ (Asness, Frazzini, Pedersen 2019)
13Profitability ImprovementProfitabilityOperating margin > 15–30%NDR ROE - 5yr Average, Pretax Margin
14Classic MomentumMomentumYoY return > 10–50%Jegadeesh-Titman (1993), Carhart (1997)
15Trend FollowingMomentumOBQ Momentum Score β‰₯ 65–85NDR Trend: 13W/52W deviation, % above MA
16Momentum + Quality ComboMomentumJCN Quality Momentum blend β‰₯ 65–85Morningstar 2-factor Sharpe optimization
17Low Volatility PremiumMomentumBeta < 0.5–1.0Ang, Hodrick, Xing & Zhang (2006)
18Fortress Balance SheetFundamentalsCurrent ratio > 1.5–3.0Γ—NDR Quick Ratio, Cash Position, Interest Coverage
19Dividend AristocratsFundamentalsDividend yield 1%–4% tiersMorningstar Yield Factor, NDR Dividend Integrity Index
20Financial Health ScoreFundamentalsPiotroski F-Score β‰₯ 6–8Piotroski (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.

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).

Step 1
Identify Quality Companies

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)
Step 2
Find Value

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
Step 3
Confirm with Momentum

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
Step 4
Apply Sector Context

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:

PresetSteps AppliedKey FiltersSort By
Full ConnectionAll 4 StepsROE β‰₯ 15% + EV/EBITDA < 14 + Rev Growth β‰₯ 5% + Momentum β‰₯ 50JCN Value Momentum
Quality + ValueSteps 1 & 2ROE β‰₯ 15% + Op Margin β‰₯ 12% + PE < 20 + P/B < 3Value Score
GARPSteps 1, 2, 4Rev Growth β‰₯ 10% + EPS Growth β‰₯ 8% + PEG < 1.5 + Op Margin β‰₯ 12%JCN GARP Blend
Deep ValueStep 2 + Quality GateEV/EBITDA < 10 + P/B < 2 + Quality Score β‰₯ 50 (no trap filter)Value Score
Value MomentumSteps 2 & 3JCN 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.

SectorKey FiltersWhy These Factors?Sort
TechnologyGross Margin β‰₯ 40% + Rev Growth β‰₯ 8% + Quality β‰₯ 55Gross margin = software moat signal (Tortoriello 2009: #1 factor in Tech). Revenue growth = TAM capture. Platform compounders have both.JCN Quality Momentum
Health CareOp Margin β‰₯ 10% + Rev Growth β‰₯ 6% + D/E ≀ 1.0Op 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 StaplesOp Margin β‰₯ 8% + Div Yield β‰₯ 1.5% + Beta ≀ 0.9O'Shaughnessy (2011): dividend yield #1 single factor in Staples. Low beta = defensive premium. Op margin = brand pricing power.JCN QARP
IndustrialsROE β‰₯ 12% + Rev Growth β‰₯ 5% + D/E ≀ 1.5ROE = 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
MaterialsEV/EBITDA ≀ 14 + ROA β‰₯ 6% + Momentum β‰₯ 50EV/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
UtilitiesDiv Yield β‰₯ 2.5% + Beta ≀ 0.85 + Fin Strength β‰₯ 50Yield 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
EnergyEV/EBITDA ≀ 8 + Op Margin β‰₯ 10% + Fin Strength β‰₯ 45EV/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
FinancialsROE β‰₯ 10% + P/B ≀ 2.0 + Quality β‰₯ 50ROE = 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 DiscretionaryRev 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 ServicesOp Margin β‰₯ 12% + Rev Growth β‰₯ 5% + Quality β‰₯ 50Scale 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 β‰₯ 45REITs 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:

🏷️
Intangible Assets

Brands, patents, regulatory licenses that let companies charge premium prices. Coca-Cola is sugar water β€” but consumers pay a premium.

JCN Proxy: Gross Margin

Brand & patent pricing power shows up entirely in gross margin. Commodity businesses can't sustain high gross margins.

πŸ”’
Switching Costs

When switching is too costly/disruptive for customers. Oracle's integrated databases would cause massive disruption to change.

JCN Proxy: Operating Margin

Sticky customers = pricing power = sustained operating margin even as competitors try to undercut.

🌐
Network Effect

Product becomes more valuable as more people use it. CME Group's clearinghouse keeps volume captive through liquidity.

JCN Proxy: R&D / Revenue

Network effect companies invest heavily in platform development. R&D intensity signals this intent β€” not perfect, but directional.

⚑
Cost Advantage

Structural cost structure advantages that competitors can't replicate. UPS's ground network has low marginal costs and high returns.

JCN Proxy: FCF Margin

Companies with real cost advantages generate more free cash from each dollar of revenue than competitors can.

πŸ“
Efficient Scale

Market niche served by one or a few companies β€” new entrants can't earn adequate returns. Kinder Morgan's pipelines.

JCN Proxy: Return on Equity

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 SourceMetric2 pts (top quartile)1 pt (above median)0 pts
Intangible AssetsGross Marginβ‰₯ 65% (p75)β‰₯ 44% (p50)< 44%
Switching CostsOperating Marginβ‰₯ 28% (p75)β‰₯ 16% (p50)< 16%
Network EffectR&D / Revenueβ‰₯ 19% (p75 of R&D spenders)> 0% (any R&D)0% or NULL
Cost AdvantageFCF Marginβ‰₯ 24% (p75)β‰₯ 10%< 10% or NULL
Efficient ScaleReturn on Equityβ‰₯ 21% (p75 β€” above CoC)β‰₯ 12% (p50 β€” earning CoC)< 12% or NULL
Wide Moat
8–10

All 5 sources showing strength. Durable competitive advantage expected to last 20+ years. Examples: Microsoft, Apple, Visa, LVMH.

Narrow Moat
5–7

Some competitive advantages present but not across all 5 sources. Competitive position expected to hold 10+ years.

No Moat
0–4

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).

Sign 1
Top Dog & First Mover

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).

JCN proxy: Growth sector + Revenue Growth β‰₯ 15% + IPO age ≀ 15 years
Sign 2
Sustainable Competitive Advantage

Moat via business momentum, patents, visionary leadership, or inept competition. The company can fend off inevitable competitors.

JCN proxy: Gross Margin β‰₯ 50% + OBQ Quality Score β‰₯ 60
Sign 3
Strong Past Price Appreciation

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.

JCN proxy: 12-month price momentum >= 25%
Sign 4
Good Management & Smart Backing

Visionary leaders with long-term focus. Backed by proven venture investors. Management track record matters more than any single quarter.

JCN proxy: SBC < 15% of OCF + Cash ROC > 20% (LongEq data)
Sign 5
Strong Consumer Appeal / Brand

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.

JCN proxy: Gross Margin >= 50% + Revenue Growth >= 10%
Sign 6
Grossly Overvalued per Media (CONTRARIAN)

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.

JCN proxy: Price/Sales >= 8 OR Forward PE >= 35 (scores 2 β€” contrarian gate)

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.

SignMetric2 pts1 pt0 pts
Sign 1: Top DogSector + Rev Growth + AgeGrowth sector + Growth β‰₯15% + Age ≀15yrGrowth sector + Growth β‰₯8%, OR Growth β‰₯15% + Age ≀20yrOtherwise
Sign 2: AdvantageGross Margin + Quality ScoreGM β‰₯ 50% AND Quality β‰₯ 60GM β‰₯ 40% OR Quality β‰₯ 55Otherwise
Sign 3: Momentum12m Price ReturnReturn β‰₯ 25%Return β‰₯ 10%< 10% or NULL
Sign 4: ManagementSBC % OCF + Cash ROCSBC < 15% AND ROC > 20%SBC < 30% OR ROC > 15%Otherwise / NULL
Sign 5: BrandGross Margin + Rev GrowthGM β‰₯ 50% AND Growth β‰₯ 10%GM β‰₯ 40% OR (GM β‰₯ 35% + Growth β‰₯ 8%)Otherwise
Sign 6: Overvalued ✨P/S + Forward PEP/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.

Elite Rule Breaker
8–10

Scores on most of the 6 signs. Growth sector, momentum, high margins, and the market is calling it expensive. Classic David Gardner buy.

Strong Candidate
5–7

Showing several Rule Breaker characteristics. May be missing momentum (Sign 3) or the overvalued signal (Sign 6) hasn't triggered yet.

Early Stage / Weak
0–4

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.