Resources / Loan Cost Index

Loan Cost Index Methodology & Data Dictionary

Reproduce 420 loan scenarios and 140 term comparisons from published inputs and a fixed-payment formula. This page documents the exact zero-fee assumptions, rounding, field definitions and versioned generator.

Version 1.0.0 · Published and checked October 22, 2026 · Produced by Borrow Your Loan

How are payments and costs calculated?

For principal P, annual rate a expressed as a percent, and n monthly payments, the monthly rate is r = a / 1200. The fixed payment is M = P × r / [1 − (1 + r)−n]. At a zero rate, M = P / n. Total repayment is M × n; total interest is total repayment minus P.

The generator evaluates these expressions using Python’s standard-library Decimal arithmetic at 60-digit precision. This is an ordinary fully amortizing, equal-period model. No observed market data or customer information enters the calculation.

Which assumptions apply?

The CFPB APR explanation supports separating rate and fees. This dataset is zero-fee mathematics; it is not a Truth in Lending APR disclosure or an estimate of an offer’s fee-inclusive APR.

How are differences and rounding handled?

Rate differences subtract the 10% scenario at identical principal and term. Term differences subtract the 36-month scenario at identical principal and rate. In paired term files, monthly reduction is short-term payment minus long-term payment; additional interest and repayment are long-term cost minus short-term cost.

Every difference and total is computed from unrounded values. Output uses ROUND_HALF_UP to two decimal places, not Python’s default display rounding. Rounded components may therefore differ by one cent from their displayed sum or difference. A negative value represents a cost below the named baseline.

What does each data field mean?

Version 1.0.0 data dictionary
Field or field groupDefinition
scenario_idUnique principal/rate/term identifier.
principal_usdGross modeled principal in US dollars.
annual_interest_rate_pctFixed nominal annual interest rate; divide by 1200 to obtain monthly rate.
illustrative_fee_free_apr_pctEquals modeled interest rate only under zero-fee assumptions. Not a regulatory APR disclosure.
term_monthsNumber of monthly payments.
monthly_payment_usdUnrounded amortization payment rounded to cents for display.
total_interest_usdUnrounded total repayment less principal, rounded to cents.
total_repayment_usdUnrounded monthly payment multiplied by term, rounded to cents.
versus_10pct_*Scenario minus 10% scenario at identical principal and term, computed before rounding. Positive means higher.
versus_36months_*Scenario minus 36-month scenario at identical principal and rate, computed before rounding. Positive means higher.
short_* / long_*Payment, interest and repayment for the named terms at identical principal/rate.
monthly_payment_reduction_usdShort-term payment minus long-term payment, rounded only after subtraction.
additional_interest_usd / additional_repayment_usdLong-term outcome minus short-term outcome; no fees in this model.

How do you reproduce version 1.0.0?

  1. Download reproduce-v1.py. It uses only Python 3’s standard library and contains no network calls.
  2. Run python reproduce-v1.py output in a new output directory.
  3. Expect 420 scenarios, 140 paired comparisons, a 42-row $10,000 subset, and metadata files. Compare the generated bytes with the corresponding downloads.

The inputs, dataset version and creation date are constants in the generator. Re-running does not silently change the version date. A future numerical or assumption change requires a new version; these v1 URLs identify this release.

What is a worked verification example?

For $10,000 at 15% over 36 months, r = 0.0125. The unrounded payment is approximately $346.653285…; displayed payment is $346.65. The full-precision total rounds to $12,479.52, with $2,479.52 interest. Multiplying $346.65 by 36 yields $12,479.40; that 12-cent difference is why the dataset does not derive totals from displayed cents.

An independent validation can accumulate each month’s balance: interest = opening balance × r, principal paid = M − interest, closing balance = opening balance − principal paid. The balance should reach zero within calculation precision at n payments.

Who produced it, and what are its limits?

Responsible organization: Borrow Your Loan. First published and checked October 22, 2026; version 1.0.0. The index contains synthetic scenarios, not research about actual applicants, product eligibility, average rates or borrower outcomes. It cannot establish whether a loan is suitable or affordable.

Report a reproducible discrepancy through contact, including version, scenario ID and expected result. See editorial policy and commercial disclosure. We do not attribute review to a fictional expert.

Return to the Loan Cost Index and HTML tables, or use the personal loan calculator for different inputs.