DLRadar · Methodology

Auditable Distress Intelligence

Every score on DLRadar is computed from public-record sources by deterministic formulas. No black-box ML. No fabricated data. Every claim traces to a SQL view name you can audit.

Deterministic scoring13 scoring engines33,775 ZIPs · 3,194 counties21+ public sources

Live coverage

Counts pulled live from production views — refreshed when this page is re-rendered (every 60 minutes).

33,775
ZIPs scored
3,194
Counties tracked
4,327
Banks scored
33,058
Layer 4 clusters
161,202
Listings tracked
0
Qualified ≥30%/≥10%
49
States
27.4/100
Avg cluster score

The acquisition funnel

Every engine below feeds one of four stages. Stages compose into a single workflow.

01 · SIGNAL
Detect distress + market stress + bank pressure across 9,611 ZIPs
ZIP Stress · Bank Stress · Insurance Distress · 12 Distress Categories
02 · UNDERSTAND
Cluster + classify markets by phase, capital readiness, exit timing
Layer 4 Clusters · Liquidity+Exit · Market Phase · Heatmap
03 · ACCESS
Surface qualified listings + tracked opportunities per asset class
DLSpecial · Asset Opportunity · Alpha Rankings · DLLenderRadar
04 · EXECUTE
Today's actionable list + capital allocator + alerts
Daily Deals · Real-Time Deal Feed · Fund Mode allocator

13 scoring engines

Each card shows what the engine scores, the inputs it consumes, the deterministic formula, the SQL view it lives in, and how often it refreshes. Every claim on DLRadar can be audited by reading the view definition.

🏦Layer 4 — Capital Readiness Clusters
Surface: /bank-distress

Five-tier ZIP cluster ranking — Deploy Now → Buy Now → Watch → Monitor → Avoid — combining bank pressure, ZIP stress, vacancy, listing density, and exit timing.

Inputs
  • Bank movement score (FDIC QoQ asset/equity delta)
  • ZIP stress composite (3-axis)
  • DLSpecial listing density per ZIP
  • Vacancy/demand signal (USPS + ACS)
  • Liquidity + Exit predictor band
Formula
cluster_score = capital_readiness_score · 0.35 + zip_stress_score · 0.25 + bank_movement_score · 0.20 + (avg_discount_score) · 0.15 + (population_score · job_growth_score) · 0.05
View / Source
analytics.layer4_clusters_safe_v1 → analytics.layer4_clusters_with_bank_v1
Refresh
Hourly via dlradar-layer4 timer
Output: 5-tier strategy label · cluster_score 0–100 · capital_required estimate
Liquidity + Exit Predictor
Surface: /bank-distress (per cluster + per property)

Time-to-exit band per cluster — how long until a buyer can resell or refinance. Used by Fund Mode to allocate capital under a budget.

Inputs
  • DOM trajectory (median + 90th percentile)
  • Discount-cut velocity
  • ZIP stress + vacancy
  • Bank movement direction
Formula
exit_band ∈ { FAST_0_45, NORMAL_45_90, SLOW_90_180, ILLIQUID_180+ } · derived from threshold cuts on DOM_p50, discount_velocity_30d, and zip_stress_axis_2
View / Source
analytics.layer4_clusters_liquidity_exit_safe_v1
Refresh
Hourly with Layer 4
Output: exit_band · capital_strategy · time_to_exit_days_p50
📊ZIP Stress Composite (3-Axis)
Surface: /zip-stress/[zip]

Three independent axes per ZIP — Market Stress (pricing pressure), Structural Risk (long-horizon fragility), Distress Activity (events firing now).

Inputs
  • FHFA HPI YoY + drawdown depth (market)
  • FEMA disaster history + NOAA climate (structural)
  • NFIP flood claims + insurance pressure (structural)
  • Foreclosure filings + auction events (distress)
  • CFPB DQ 30–89 / 90+ (distress)
  • Census ACS rent burden + vacancy (structural)
Formula
axis_market = w1·hpi_drawdown + w2·hpi_yoy_decel + w3·price_stress · axis_structural = w4·climate + w5·insurance + w6·institutional + w7·construction · axis_distress = w8·foreclosure + w9·mortgage_dq + w10·auction · composite = (axis_market + axis_structural + axis_distress)/3
View / Source
analytics.v_zip_stress_rollup_v1 (read by /zip-stress + /heatmap)
Refresh
Every 8 hours via ZIP stress timer
Output: Composite 0–100 + 3 axes · 33,643 ZCTAs covered
💸Bank Stress + Momentum
Surface: /radar/banks · /banks/[cert]

FDIC-backed credit pressure scored per institution. Quarterly stress level + 7-day momentum delta surfaces banks moving fastest into trouble.

Inputs
  • Equity / assets ratio
  • ROA
  • Asset trend QoQ
  • Net charge-off ratio
  • Deposit composition (volatile vs core)
  • Branch concentration
  • FDIC enforcement actions
Formula
stress_score = clamp(0,100, 50 - 4·equity_ratio_pct - 8·roa_pct + 3·nco_ratio_pct + 2·asset_decline_qoq_pct + enforcement_penalty) · momentum = stress_score_today − stress_score_7d_ago
View / Source
analytics.bank_stress_momentum_v1 + analytics.v_zip_bank_stress_exposure_v1
Refresh
Daily via dlradar-fdic + quarterly call report ingest
Output: stress_score 0–100 · momentum delta · 4,431 banks tracked
🏛DLLenderRadar — Lending Capacity
Surface: /banking/lenders · property + ZIP panels

Inverse of bank stress — banks with public financial signals suggesting capacity to deploy real-estate loans. Not a loan-approval recommendation.

Inputs
  • Tier 1 capital ratio
  • Liquidity ratio (cash + securities / assets)
  • Loan-to-deposit ratio
  • Credit quality (noncurrent loans / total loans)
  • Loan-growth pressure (deposit growth − loan growth)
  • Branch market fit (proximity + ZIP context)
Formula
lending_capacity_score = 0.30·capital_strength + 0.20·liquidity + 0.20·credit_quality + 0.15·loan_growth_pressure + 0.10·local_presence + 0.05·borrower_fit
View / Source
banking.lender_capacity_scores_v1 + banking.zip_lender_capacity_v1
Refresh
Quarterly with FFIEC Call Reports + FDIC SoD
Output: Per-bank score 0–100 · per-ZIP top lender list · 4,327 banks scored
🗺Heatmap Composite (6-Component)
Surface: /heatmap

Single rank per state/ZIP combining six independent stress dimensions for top-down market scanning.

Inputs
  • FHFA HPI drawdown
  • Climate severity (NOAA storm events × frequency)
  • Insurance pressure (NFIP rate trajectory)
  • Institutional exposure (HUD + FHA concentration)
  • Foreclosure activity (filings per 1k housing units)
  • Auction event density
Formula
composite = (drawdown + climate + insurance + institutional + foreclosure + auction) / 6 · banded into PEAK / EXPANSION / NEUTRAL / CONTRACTION / RECOVERY
View / Source
analytics.v_geo_heatmap_all_v1
Refresh
Every 8 hours
Output: Composite 0–100 across 9,611 ZIPs · 3,150 counties
📈Market Phase — HPI Cycle Radar
Surface: /market-phase

Classifies every US county and ZCTA into one of five cycle phases using FHFA HPI trajectory + drawdown direction + county headwind.

Inputs
  • FHFA HPI YoY %
  • HPI 5-year acceleration
  • Drawdown from local peak
  • County headwind score
Formula
phase = case · YoY > 0 ∧ accel > 0 ∧ drawdown < 5% → EXPANSION · YoY > 0 ∧ accel ≤ 0 → PEAK · YoY ≤ 0 ∧ drawdown < 10% → NEUTRAL · YoY ≤ 0 ∧ drawdown ≥ 10% ∧ accel < 0 → CONTRACTION · YoY ≥ 0 after drawdown → RECOVERY
View / Source
analytics.us_county_headwind_snapshot_v1 + FHFA HPI ingest
Refresh
Monthly with FHFA HPI release
Output: 5-phase classification · 33,643 ZCTAs · 3,150 counties
🎯Asset Market Prediction
Surface: /opportunities (per asset class)

Direction label per (asset_class × county) — surfaces markets moving from EARLY to ACTIVE before inventory appears.

Inputs
  • Macro pressure score (rates + labor + HPI)
  • Bank stress in county
  • Listing inventory delta (28-day)
  • Permit activity (Census BPS 12mo)
Formula
label ∈ { EARLY, HEATING_UP, ACTIVE, COOLING, AVOID, NO_DATA } · derived from threshold cuts on macro_pressure_score, candidate_flow_28d, and inventory_velocity
View / Source
analytics.macro_prediction_labels_v1
Refresh
Daily
Output: Direction label · per asset class × county
Alpha Rankings (TOP_100 / TOP_200)
Surface: /opportunities · landing top alpha

Composite alpha score per EARLY county — surfaces highest-conviction emerging markets before the herd.

Inputs
  • Macro/banking context (40%)
  • Bank stress signals (40%)
  • Candidate listing flow (20%)
Formula
alpha_score = 0.4·context_score + 0.4·bank_score + 0.2·candidate_flow_score · ranked descending within EARLY-labeled counties · top 100 + top 200 maintained
View / Source
analytics.deal_priority_v1 → analytics.deal_conviction_v1
Refresh
Daily with prediction labels
Output: Ranked county list with alpha_score 0–100
🔍Asset Opportunity Tracker
Surface: /opportunities (5 pages)

Stage classifier per (asset_class × county) — moves opportunities through CANDIDATE → ACTIVE → WATCHING → CONTEXT_READY pipeline.

Inputs
  • Listing density per asset class
  • Discount % distribution
  • Bank presence + stress
  • Days since first signal
Formula
stage = case · candidate_count ≥ threshold_active ∧ avg_discount ≥ 30% → ACTIVE_INVENTORY · candidate_count ≥ threshold_candidate → CANDIDATE_DEALS · context_data_complete → CONTEXT_READY · else → WATCHING
View / Source
analytics.asset_opportunities_v1
Refresh
Hourly with Layer 4
Output: Stage label · 5 asset class views · per-county opportunity count
🔔Real-Time Deal Feed
Surface: /new-deals · alerts

Event detection layer — flags state changes across the funnel (cluster moves to BUY_NOW, exit becomes FAST, new top deal in your ZIP).

Inputs
  • Layer 4 cluster transitions
  • Liquidity+Exit band changes
  • DLSpecial new qualified rows
  • Bank stress band changes
Formula
event ∈ { NEW_TOP_DEAL, CLUSTER_BECAME_BUY_NOW, EXIT_BECAME_FAST, BANK_STRESS_CRITICAL, NEW_DLSPECIAL_HIT } · fired when state_now ≠ state_prev with severity threshold
View / Source
analytics.deal_events_v1 + alerts.user_alert_rules_v1
Refresh
Every 5 minutes
Output: Time-stamped event stream → bell badge + email queue
💎DLSpecial Qualification
Surface: /listings

Strict deal filter — every qualified row meets a hard discount threshold against verifiable comps. No estimates.

Inputs
  • List price (live scraper feed)
  • Market value (appraiser just_value or ACS-blended median)
  • Taxable value (county tax roll)
Formula
qualified ⟺ (list_price ≤ market_value · 0.70) OR (list_price ≤ taxable_value · 0.90) · enforced at MV write-time + UI read-time
View / Source
analytics.listings_inventory_ui_safe_v1 + ui.v_discount_listings_passthrough
Refresh
Every 8 hours via DLSpecial dispatcher
Output: qualified flag + discount % + rule label per listing · 14,966 tracked / 7,409 qualified
🌊Insurance Distress (NFIP / FEMA)
Surface: ZIP stress report (insurance section)

Monthly ZCTA insurance pressure — surfaces ZIPs where insurance is becoming uneconomic (a leading abandonment signal).

Inputs
  • NFIP claim trends (frequency × loss severity)
  • Premium pressure (NFIP rate revisions)
  • Policy lapse rate
  • FEMA disaster declaration density
Formula
insurance_pressure = 0.40·claim_severity_zscore + 0.30·premium_trajectory + 0.20·lapse_rate + 0.10·disaster_density · banded 0–100
View / Source
analytics.zcta_insurance_distress_monthly_v2
Refresh
Monthly with NFIP + FEMA releases
Output: Per-ZCTA insurance score 0–100

12 distress categories per property

Inside Platinum + Supreme, every property is scored 0–100 across these independent categories. The stack countNumber of categories scoring above the distress threshold (typically ≥25). Stacked categories are high-conviction targets. tallies how many fire above threshold. Hover for details.

🏦
Mortgage Stress
Score 0–100
LTV ratio + ARM reset exposure + payment-to-income burden + HMDA denial rates per census tract.
📋
Tax Lien
Score 0–100
Delinquent property tax exposure from county recorder filings + lien sale schedules + redemption status.
⚖️
Judgment / Lis Pendens
Score 0–100
Civil judgments, mechanics liens, lis pendens — pending litigation or forced-sale risk.
🏘️
HOA / Code Violation
Score 0–100
HOA lien filings + municipal code violations + special assessment delinquencies.
🏚️
Vacancy
Score 0–100
USPS vacancy flags + utility disconnect + Census ACS vacancy rates.
🔑
Landlord Stress
Score 0–100
Eviction filing rates + rent-to-mortgage gaps + multi-property owner financial strain.
🏗️
Construction / Permit
Score 0–100
Stalled construction — expired permits + stop-work orders + CO gaps >12mo.
👴
Elderly / Probate
Score 0–100
Owner age signals + death record matches + trust/estate ownership patterns.
🏢
Commercial Distress
Score 0–100
Tenant vacancy + CMBS delinquency + NOI decline.
🏛️
IRS / Federal Lien
Score 0–100
IRS federal tax liens + SBA defaults + EIDL/PPP non-compliance.
🌊
Environmental
Score 0–100
FEMA flood zone + NOAA disaster frequency + EPA Superfund proximity + NFIP repetitive loss.
📜
Heir / Title Defect
Score 0–100
Heir property indicators + missing probate + fractional ownership + chain-of-title breaks.
Global distress composite (Platinum / Supreme dossier)
global_distress = 0.20·mortgage + 0.15·tax_lien + 0.10·judgment + 0.10·vacancy + 0.08·hoa + 0.08·landlord + 0.07·elderly + 0.06·environmental + 0.05·construction + 0.04·commercial + 0.04·irs_lien + 0.03·heir_title
View: analytics.v_property_distress_v1 · Refresh: hourly with promote

Public data sources

Every signal traces to one of these. No scraped private data, no synthetic estimates.

FHFA HPI
House Price Index, monthly, county + ZCTA
https://www.fhfa.gov/HPI
FDIC Call Reports
Quarterly bank financials per certificate
https://banks.data.fdic.gov
FDIC Summary of Deposits
Annual bank branches + deposits per ZIP
https://www.fdic.gov/sod
FFIEC Call Reports
Detailed regulatory bank data
https://www.ffiec.gov/npw
Census ACS / PUMS
5-year tenure, rent burden, vacancy, income
https://www.census.gov/acs
Census BPS
Building permits, monthly per place
https://www.census.gov/construction/bps
HUD HCV / Section 8
Voucher utilization + payment standards
https://www.huduser.gov
HUD FMR
Fair Market Rents, annual
https://www.huduser.gov/portal/datasets/fmr.html
HUD Assisted Housing
Project-based subsidized properties
https://www.huduser.gov
FEMA Disaster
Declared disaster history per county
https://www.fema.gov/openfema
NFIP Claims
Flood insurance claims, redacted
https://www.fema.gov/openfema
NOAA Storm Events
Severe weather event log
https://www.ncdc.noaa.gov/stormevents
FRED
Federal Reserve macro series (rates, labor)
https://fred.stlouisfed.org
BLS LAUS / QCEW / CES
County unemployment + payrolls
https://www.bls.gov
CFPB Mortgage Performance
DQ 30–89 + 90+ per county
https://www.consumerfinance.gov
FFIEC HMDA
Mortgage application + denial records
https://ffiec.cfpb.gov/data-browser
EPA FRS
Facility registry — industrial proximity
https://www.epa.gov/frs
USDA NASS
Land + farm values, cash rent
https://www.nass.usda.gov
RSMeans
Replacement cost benchmarks
https://www.rsmeans.com
County Recorder Filings
Liens, judgments, foreclosure events (per-county scrapers)
USAuctions Public Records
Auction calendar + bid records

Reproducibility

Every score on this platform is computed by SQL — the view names are listed on each engine card above. Inside Platinum + Supreme, every property dossier shows the underlying signal values. Inside DLBankDistress + DLLenderRadar, every cluster + bank exposes its component scores. Inside DLSpecial, every qualified row shows the exact discount calculation.

No ML
Zero black-box predictions. Every score is a deterministic formula on public inputs.
No fabricated data
When a signal is missing, the field shows '—'. We never synthesize values.
Auditable
Every claim → view name → public source. You can trace any score back to its inputs.

Now see the system in action

The bundle that fits depends on whether you're scanning markets, accessing real listings, or executing daily.

Bundle 1 · Market Intelligence
$799/mo
  • Platinum property research
  • Radar Markets · Heatmap + prediction
  • Find pressure before listings appear
View access →
Most Popular
Bundle 2 · Lead Access
$1,199/mo
  • Everything in Bundle 1
  • + Supreme institutional drill
  • + DLBankDistress capital readiness
  • + DLSpecial qualified listings
View access →
Bundle 3 · Execution Engine
$2,999/mo
  • Everything in Bundle 2
  • + Daily Deals curated queue
  • + Fund Mode capital allocator
View access →
DLRadar is an intelligence platform, not financial advice. All scores are derived from public records. Investment decisions are yours.