{
  "status": "pilot",
  "title": "LenderCity Historical Channel Price Gap",
  "release": "2025 MO pilot",
  "releaseVersion": "1.1.0",
  "datePublished": "2026-08-20",
  "dateModified": "2026-09-21",
  "generatedAt": "2026-09-21T14:30:53.904Z",
  "dataVintage": "2025",
  "geography": [
    "MO"
  ],
  "source": {
    "name": "FFIEC HMDA Snapshot Loan-Level Dataset",
    "url": "https://ffiec.cfpb.gov/data-browser/data/",
    "query": "https://ffiec.cfpb.gov/v2/data-browser-api/view/csv?states=MO&years=2025&actions_taken=1&loan_types=1"
  },
  "cohortDefinition": "Originated conventional home-purchase loans; first lien; fixed 30-year term; owner-occupied, one-unit, site-built property; not reverse, open-end, or business purpose; initially payable to the reporting institution.",
  "channelDefinition": {
    "direct": "Application submitted directly to the reporting institution.",
    "broker": "Application submitted indirectly through a mortgage broker and initially payable to the reporting institution."
  },
  "inspectedRecords": 112792,
  "qualifyingRecords": 32517,
  "excludedRecords": 80275,
  "recordsEligibleForMatching": 32013,
  "missingDataCounts": {
    "interestRate": 0,
    "rateSpread": 105,
    "originationCharges": 451,
    "lenderCredits": 848,
    "bothCostComponents": 376,
    "loanAmount": 0,
    "loanToValue": 162,
    "income": 342,
    "debtToIncomeBand": 0
  },
  "direct": {
    "loans": 30128,
    "loansWithRate": 30128,
    "loansWithCost": 29227,
    "medianInterestRate": 6.625,
    "medianRateSpreadBps": 22.9,
    "medianNetOriginationCost": 1375,
    "medianOriginationCharges": 1417,
    "medianLenderCredits": 0
  },
  "broker": {
    "loans": 2389,
    "loansWithRate": 2389,
    "loansWithCost": 2367,
    "medianInterestRate": 6.625,
    "medianRateSpreadBps": 30.3,
    "medianNetOriginationCost": 1193,
    "medianOriginationCharges": 1726,
    "medianLenderCredits": 0
  },
  "matched": {
    "id": "primary",
    "label": "Primary specification",
    "cellCount": 8,
    "effectiveLoanPairs": 214,
    "minimumLoansPerChannelPerCell": 20,
    "loanAmountBand": 100000,
    "ltvBand": 10,
    "incomeBand": 50,
    "directMinusBrokerRateBps": -6.1,
    "directMinusBrokerRateSpreadBps": -3.7,
    "directMinusBrokerNetOriginationCost": 385,
    "confidenceIntervals": {
      "rateBps95": {
        "lower": -15,
        "upper": 3.1,
        "iterations": 10000,
        "unit": "matched cell"
      },
      "netOriginationCost95": {
        "lower": 178.8,
        "upper": 585.2,
        "iterations": 10000,
        "unit": "matched cell"
      }
    },
    "cells": [
      {
        "key": "MO|100000|100|50|30%-<36%|C",
        "state": "MO",
        "loanAmountBandCenter": 100000,
        "ltvBandCenter": 100,
        "incomeBandCenterThousands": 50,
        "debtToIncomeBand": "30%-<36%",
        "conformingLimitStatus": "C",
        "directLoans": 261,
        "brokerLoans": 32,
        "weight": 32,
        "direct": {
          "loans": 261,
          "loansWithRate": 261,
          "loansWithCost": 253,
          "medianInterestRate": 6.625,
          "medianRateSpreadBps": 45.5,
          "medianNetOriginationCost": 1335,
          "medianOriginationCharges": 1391,
          "medianLenderCredits": 0
        },
        "broker": {
          "loans": 32,
          "loansWithRate": 32,
          "loansWithCost": 32,
          "medianInterestRate": 6.75,
          "medianRateSpreadBps": 61.6,
          "medianNetOriginationCost": 884,
          "medianOriginationCharges": 1012,
          "medianLenderCredits": 0
        },
        "rateGapBps": -12.5,
        "spreadGapBps": -16.1,
        "costGap": 451
      },
      {
        "key": "MO|100000|100|50|20%-<30%|C",
        "state": "MO",
        "loanAmountBandCenter": 100000,
        "ltvBandCenter": 100,
        "incomeBandCenterThousands": 50,
        "debtToIncomeBand": "20%-<30%",
        "conformingLimitStatus": "C",
        "directLoans": 233,
        "brokerLoans": 22,
        "weight": 22,
        "direct": {
          "loans": 233,
          "loansWithRate": 233,
          "loansWithCost": 222,
          "medianInterestRate": 6.625,
          "medianRateSpreadBps": 49,
          "medianNetOriginationCost": 1315,
          "medianOriginationCharges": 1440,
          "medianLenderCredits": 0
        },
        "broker": {
          "loans": 22,
          "loansWithRate": 22,
          "loansWithCost": 21,
          "medianInterestRate": 6.563,
          "medianRateSpreadBps": 26.8,
          "medianNetOriginationCost": 984,
          "medianOriginationCharges": 1120,
          "medianLenderCredits": 0
        },
        "rateGapBps": 6.2,
        "spreadGapBps": 22.2,
        "costGap": 331
      },
      {
        "key": "MO|300000|80|150|20%-<30%|C",
        "state": "MO",
        "loanAmountBandCenter": 300000,
        "ltvBandCenter": 80,
        "incomeBandCenterThousands": 150,
        "debtToIncomeBand": "20%-<30%",
        "conformingLimitStatus": "C",
        "directLoans": 205,
        "brokerLoans": 20,
        "weight": 20,
        "direct": {
          "loans": 205,
          "loansWithRate": 205,
          "loansWithCost": 198,
          "medianInterestRate": 6.75,
          "medianRateSpreadBps": 17.5,
          "medianNetOriginationCost": 1238,
          "medianOriginationCharges": 1382,
          "medianLenderCredits": 0
        },
        "broker": {
          "loans": 20,
          "loansWithRate": 20,
          "loansWithCost": 20,
          "medianInterestRate": 6.75,
          "medianRateSpreadBps": 10.5,
          "medianNetOriginationCost": 1549,
          "medianOriginationCharges": 5521,
          "medianLenderCredits": 646
        },
        "rateGapBps": 0,
        "spreadGapBps": 7,
        "costGap": -311
      },
      {
        "key": "MO|200000|80|50|30%-<36%|C",
        "state": "MO",
        "loanAmountBandCenter": 200000,
        "ltvBandCenter": 80,
        "incomeBandCenterThousands": 50,
        "debtToIncomeBand": "30%-<36%",
        "conformingLimitStatus": "C",
        "directLoans": 235,
        "brokerLoans": 28,
        "weight": 28,
        "direct": {
          "loans": 235,
          "loansWithRate": 235,
          "loansWithCost": 227,
          "medianInterestRate": 6.5,
          "medianRateSpreadBps": 1.3,
          "medianNetOriginationCost": 1393,
          "medianOriginationCharges": 1433,
          "medianLenderCredits": 0
        },
        "broker": {
          "loans": 28,
          "loansWithRate": 28,
          "loansWithCost": 27,
          "medianInterestRate": 6.383,
          "medianRateSpreadBps": -14.6,
          "medianNetOriginationCost": 1145,
          "medianOriginationCharges": 1857,
          "medianLenderCredits": 0
        },
        "rateGapBps": 11.7,
        "spreadGapBps": 15.9,
        "costGap": 248
      },
      {
        "key": "MO|200000|100|100|30%-<36%|C",
        "state": "MO",
        "loanAmountBandCenter": 200000,
        "ltvBandCenter": 100,
        "incomeBandCenterThousands": 100,
        "debtToIncomeBand": "30%-<36%",
        "conformingLimitStatus": "C",
        "directLoans": 328,
        "brokerLoans": 23,
        "weight": 23,
        "direct": {
          "loans": 328,
          "loansWithRate": 328,
          "loansWithCost": 311,
          "medianInterestRate": 6.625,
          "medianRateSpreadBps": 46.6,
          "medianNetOriginationCost": 1495,
          "medianOriginationCharges": 1568,
          "medianLenderCredits": 0
        },
        "broker": {
          "loans": 23,
          "loansWithRate": 23,
          "loansWithCost": 23,
          "medianInterestRate": 6.625,
          "medianRateSpreadBps": 48.3,
          "medianNetOriginationCost": 463,
          "medianOriginationCharges": 895,
          "medianLenderCredits": 0
        },
        "rateGapBps": 0,
        "spreadGapBps": -1.7,
        "costGap": 1032
      },
      {
        "key": "MO|200000|100|50|30%-<36%|C",
        "state": "MO",
        "loanAmountBandCenter": 200000,
        "ltvBandCenter": 100,
        "incomeBandCenterThousands": 50,
        "debtToIncomeBand": "30%-<36%",
        "conformingLimitStatus": "C",
        "directLoans": 399,
        "brokerLoans": 30,
        "weight": 30,
        "direct": {
          "loans": 399,
          "loansWithRate": 399,
          "loansWithCost": 390,
          "medianInterestRate": 6.5,
          "medianRateSpreadBps": 35.3,
          "medianNetOriginationCost": 1495,
          "medianOriginationCharges": 1595,
          "medianLenderCredits": 0
        },
        "broker": {
          "loans": 30,
          "loansWithRate": 30,
          "loansWithCost": 30,
          "medianInterestRate": 6.812,
          "medianRateSpreadBps": 58.7,
          "medianNetOriginationCost": 1011,
          "medianOriginationCharges": 1130,
          "medianLenderCredits": 0
        },
        "rateGapBps": -31.2,
        "spreadGapBps": -23.4,
        "costGap": 484
      },
      {
        "key": "MO|200000|80|100|20%-<30%|C",
        "state": "MO",
        "loanAmountBandCenter": 200000,
        "ltvBandCenter": 80,
        "incomeBandCenterThousands": 100,
        "debtToIncomeBand": "20%-<30%",
        "conformingLimitStatus": "C",
        "directLoans": 348,
        "brokerLoans": 25,
        "weight": 25,
        "direct": {
          "loans": 348,
          "loansWithRate": 348,
          "loansWithCost": 341,
          "medianInterestRate": 6.624,
          "medianRateSpreadBps": 7,
          "medianNetOriginationCost": 1375,
          "medianOriginationCharges": 1395,
          "medianLenderCredits": 0
        },
        "broker": {
          "loans": 25,
          "loansWithRate": 25,
          "loansWithCost": 25,
          "medianInterestRate": 6.625,
          "medianRateSpreadBps": 23.2,
          "medianNetOriginationCost": 976,
          "medianOriginationCharges": 1580,
          "medianLenderCredits": 0
        },
        "rateGapBps": -0.1,
        "spreadGapBps": -16.2,
        "costGap": 399
      },
      {
        "key": "MO|200000|100|100|20%-<30%|C",
        "state": "MO",
        "loanAmountBandCenter": 200000,
        "ltvBandCenter": 100,
        "incomeBandCenterThousands": 100,
        "debtToIncomeBand": "20%-<30%",
        "conformingLimitStatus": "C",
        "directLoans": 350,
        "brokerLoans": 34,
        "weight": 34,
        "direct": {
          "loans": 350,
          "loansWithRate": 350,
          "loansWithCost": 335,
          "medianInterestRate": 6.625,
          "medianRateSpreadBps": 40.4,
          "medianNetOriginationCost": 1393,
          "medianOriginationCharges": 1490,
          "medianLenderCredits": 0
        },
        "broker": {
          "loans": 34,
          "loansWithRate": 34,
          "loansWithCost": 34,
          "medianInterestRate": 6.75,
          "medianRateSpreadBps": 46.2,
          "medianNetOriginationCost": 1047,
          "medianOriginationCharges": 1172,
          "medianLenderCredits": 0
        },
        "rateGapBps": -12.5,
        "spreadGapBps": -5.8,
        "costGap": 346
      }
    ],
    "controls": [
      "state",
      "$100,000 loan-amount band",
      "10-point LTV band",
      "$50,000 income band",
      "reported DTI band",
      "conforming-limit status"
    ],
    "sensitivity": [
      {
        "id": "narrow",
        "label": "Narrower matching bands",
        "cellCount": 6,
        "effectiveLoanPairs": 90,
        "minimumLoansPerChannelPerCell": 10,
        "loanAmountBand": 50000,
        "ltvBand": 5,
        "incomeBand": 25,
        "directMinusBrokerRateBps": -25.1,
        "directMinusBrokerRateSpreadBps": -12.4,
        "directMinusBrokerNetOriginationCost": 475,
        "confidenceIntervals": {
          "rateBps95": {
            "lower": -32.1,
            "upper": -13.8,
            "iterations": 10000,
            "unit": "matched cell"
          },
          "netOriginationCost95": {
            "lower": 207.1,
            "upper": 635.6,
            "iterations": 10000,
            "unit": "matched cell"
          }
        }
      },
      {
        "id": "broad",
        "label": "Broader matching bands",
        "cellCount": 28,
        "effectiveLoanPairs": 871,
        "minimumLoansPerChannelPerCell": 20,
        "loanAmountBand": 150000,
        "ltvBand": 15,
        "incomeBand": 75,
        "directMinusBrokerRateBps": -2.7,
        "directMinusBrokerRateSpreadBps": -5.4,
        "directMinusBrokerNetOriginationCost": 256,
        "confidenceIntervals": {
          "rateBps95": {
            "lower": -6.2,
            "upper": 0.9,
            "iterations": 10000,
            "unit": "matched cell"
          },
          "netOriginationCost95": {
            "lower": 139.6,
            "upper": 361.3,
            "iterations": 10000,
            "unit": "matched cell"
          }
        }
      }
    ]
  },
  "changelog": [
    {
      "version": "1.1.0",
      "date": "2026-09-21",
      "changes": "Added uncertainty ranges, cell results, sensitivity specifications, missing-data counts, citation files, and publication metadata."
    },
    {
      "version": "1.0.0",
      "date": "2026-08-20",
      "changes": "Initial Missouri pilot release."
    }
  ],
  "limitations": [
    "HMDA does not report borrower credit score, lock period, or every underwriting and pricing factor.",
    "The channel fields describe how the application reached the reporting institution; they do not identify every retail, wholesale, or correspondent transaction perfectly.",
    "Observed differences are descriptive associations, not proof that the channel caused the price difference.",
    "Net origination cost is reported origination charges minus reported lender credits. It is not total closing cost or cash to close."
  ]
}
