{
  "version": "2026-11-06.1",
  "dimensions": [
    {
      "key": "identity",
      "label": "Identity and verification",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "identity",
        "registry",
        "banking",
        "documents"
      ],
      "eligibility": "Identity and account-ownership checks identify inconsistencies; they do not substitute for financial capacity."
    },
    {
      "key": "ownership_and_control",
      "label": "Ownership and control",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "registry",
        "identity",
        "accounting",
        "application",
        "documents"
      ],
      "eligibility": "Use documented beneficial ownership, control, guarantees and related-party exposure. Do not infer family relationships or hidden ownership."
    },
    {
      "key": "cashflow",
      "label": "Cash flow",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue."
    },
    {
      "key": "liquidity",
      "label": "Liquidity",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting"
      ],
      "eligibility": "Separate available, restricted and observed balances. Reconstructed daily balances require reconciled opening/closing balances and complete transaction coverage."
    },
    {
      "key": "revenue_quality",
      "label": "Revenue quality",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales."
    },
    {
      "key": "profitability",
      "label": "Profitability",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone."
    },
    {
      "key": "working_capital",
      "label": "Working capital",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit."
    },
    {
      "key": "leverage",
      "label": "Debt and leverage",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "accounting",
        "banking",
        "credit_bureau",
        "lender",
        "documents"
      ],
      "eligibility": "Reconcile observed debt payments to disclosed and entitled bureau obligations. Unknown balances and undisclosed obligations are not zero."
    },
    {
      "key": "repayment_capacity",
      "label": "Repayment capacity",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms."
    },
    {
      "key": "concentration",
      "label": "Concentration",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "banking"
      ],
      "eligibility": "Aggregate only resolved counterparties within the authorized borrower scope. Unknown counterparties remain a disclosed unallocated bucket."
    },
    {
      "key": "collateral",
      "label": "Collateral and security",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "collateral",
        "registry",
        "lender",
        "accounting",
        "documents"
      ],
      "eligibility": "Require current valuations, ownership, lien priority and permitted reports. This is collateral evidence, not a legal opinion or enforceability guarantee."
    },
    {
      "key": "fraud_and_consistency",
      "label": "Fraud and consistency",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "documents",
        "banking",
        "accounting",
        "payments",
        "identity"
      ],
      "eligibility": "Signals identify evidence needing review; no signal or score alone confirms fraud. Preserve document locations and conflicting values."
    },
    {
      "key": "income_and_affordability",
      "label": "Income and affordability",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "credit_bureau",
        "application",
        "documents",
        "lender"
      ],
      "eligibility": "Distinguish verified gross income, net deposits and modeled estimates. Include housing, essential spending, obligations and proposed payments without counting them twice."
    },
    {
      "key": "income_stability",
      "label": "Income stability",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "documents"
      ],
      "eligibility": "Analyze authorized employment, self-employment and other recurring income streams separately. Income type is not itself an adverse risk reason."
    },
    {
      "key": "payment_behavior",
      "label": "Payment behavior",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "credit_bureau",
        "lender"
      ],
      "eligibility": "Deduplicate returns and their fees. Report payment outcomes and timing rather than inferring missed payments from missing source coverage."
    },
    {
      "key": "credit_history",
      "label": "Credit history",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "credit_bureau",
        "lender",
        "documents"
      ],
      "eligibility": "Use entitled credit reports with source, score model, pull time and coverage. No matched report is not a clean credit history."
    },
    {
      "key": "commerce_performance",
      "label": "Commerce and subscriptions",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payments",
        "commerce",
        "subscriptions"
      ],
      "eligibility": "Keep store/platform coverage, settlement lags and currency explicit. Cohort metrics require stable customer identifiers and a complete comparable cohort."
    },
    {
      "key": "operating_resilience",
      "label": "Operating resilience",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payroll",
        "inventory",
        "accounting",
        "commerce",
        "logistics"
      ],
      "eligibility": "Measure payroll, supplier, inventory and fulfillment exposure from operational evidence. Do not infer management quality from personal traits or social media."
    },
    {
      "key": "tax_and_compliance",
      "label": "Tax and statutory obligations",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "tax",
        "accounting",
        "registry",
        "documents"
      ],
      "eligibility": "Separate declared, filed, assessed and paid amounts and their periods. Registration or filing evidence is not a legal or tax-compliance certification."
    },
    {
      "key": "financial_reporting_quality",
      "label": "Financial reporting quality",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "banking",
        "documents"
      ],
      "eligibility": "Measure statement coverage, closing lag, reconciliations and material adjustments; missing accounting records are not fabricated statements."
    },
    {
      "key": "data_quality",
      "label": "Data quality and coverage",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "identity",
        "documents"
      ],
      "eligibility": "Describe observed coverage against declared/required sources; never imply visibility into all of a borrower's external accounts."
    },
    {
      "key": "forecasting_and_stress",
      "label": "Forecasting and stress",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "application",
        "lender"
      ],
      "eligibility": "Separate scenario assumptions from observations. Forecasts require model/version, horizon and interval methodology; stress outcomes are conditional, not default probabilities."
    },
    {
      "key": "relationship_risk",
      "label": "Related-party and network exposure",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "registry",
        "accounting",
        "banking",
        "application"
      ],
      "eligibility": "Only borrower-authorized ownership and transaction relationships are in scope. Links require evidence and uncertainty; no cross-institution identity graph is exposed."
    },
    {
      "key": "monitoring_change",
      "label": "Monitoring changes",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "lender"
      ],
      "eligibility": "Compare compatible windows, scope, currencies and calculation versions. If comparability fails, expose the reason and no numeric delta."
    }
  ],
  "metrics": [
    {
      "key": "business_age_months",
      "dimension_key": "identity",
      "label": "Business age",
      "description": "Business age. Whole calendar months from verified formation date to assessment date.",
      "unit": "months",
      "formula": "Whole calendar months from verified formation date to assessment date",
      "required_inputs": [
        "Verified formation date",
        "assessment date",
        "business only"
      ],
      "eligibility": "Identity and account-ownership checks identify inconsistencies; they do not substitute for financial capacity.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "identity",
        "registry",
        "banking",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-business_age_months-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "verified_account_owner_ratio",
      "dimension_key": "identity",
      "label": "Verified account ownership share",
      "description": "Verified account ownership share. Accounts with positively matched ownership divided by eligible disclosed connected accounts.",
      "unit": "ratio",
      "formula": "Accounts with positively matched ownership divided by eligible disclosed connected accounts",
      "required_inputs": [
        "Account ownership evidence and resolved borrower identity",
        "nonzero eligible-account count"
      ],
      "eligibility": "Identity and account-ownership checks identify inconsistencies; they do not substitute for financial capacity.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "identity",
        "registry",
        "banking",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-verified_account_owner_ratio-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "ownership_disclosed_ratio",
      "dimension_key": "ownership_and_control",
      "label": "Disclosed ownership share",
      "description": "Disclosed ownership share. Sum of supported non-overlapping ownership fractions in the assessed entity.",
      "unit": "ratio",
      "formula": "Sum of supported non-overlapping ownership fractions in the assessed entity",
      "required_inputs": [
        "Current ownership register",
        "common share basis",
        "do not double-count direct and indirect paths"
      ],
      "eligibility": "Use documented beneficial ownership, control, guarantees and related-party exposure. Do not infer family relationships or hidden ownership.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "registry",
        "identity",
        "accounting",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-ownership_disclosed_ratio-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "related_party_balance_share",
      "dimension_key": "ownership_and_control",
      "label": "Related-party receivables share",
      "description": "Related-party receivables share. Related-party receivables divided by total receivables.",
      "unit": "ratio",
      "formula": "Related-party receivables divided by total receivables",
      "required_inputs": [
        "Resolved related parties and same-date receivables",
        "positive total receivables"
      ],
      "eligibility": "Use documented beneficial ownership, control, guarantees and related-party exposure. Do not infer family relationships or hidden ownership.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "registry",
        "identity",
        "accounting",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-related_party_balance_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "supported_guarantee_coverage",
      "dimension_key": "ownership_and_control",
      "label": "Supported guarantee coverage",
      "description": "Supported guarantee coverage. Documented collectible guarantee amount capped at exposure divided by exposure.",
      "unit": "ratio",
      "formula": "Documented collectible guarantee amount capped at exposure divided by exposure",
      "required_inputs": [
        "Guarantee terms, guarantor assessment, currency and exposure",
        "positive exposure",
        "no unsupported collectible value"
      ],
      "eligibility": "Use documented beneficial ownership, control, guarantees and related-party exposure. Do not infer family relationships or hidden ownership.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "registry",
        "identity",
        "accounting",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-supported_guarantee_coverage-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "total_inflows",
      "dimension_key": "cashflow",
      "label": "Posted inflows",
      "description": "Posted inflows. Sum posted inflow magnitudes before transfer or revenue exclusions.",
      "unit": "currency",
      "formula": "Sum posted inflow magnitudes before transfer or revenue exclusions",
      "required_inputs": [
        "Complete eligible transaction set for the window, scope and currency"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-total_inflows-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "total_outflows",
      "dimension_key": "cashflow",
      "label": "Posted outflows",
      "description": "Posted outflows. Sum posted outflow magnitudes before transfer or operating exclusions.",
      "unit": "currency",
      "formula": "Sum posted outflow magnitudes before transfer or operating exclusions",
      "required_inputs": [
        "Complete eligible transaction set for the window, scope and currency"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-total_outflows-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "net_cash_flow",
      "dimension_key": "cashflow",
      "label": "Net cash flow",
      "description": "Net cash flow. Posted inflows minus posted outflows after consolidation transfer elimination.",
      "unit": "currency",
      "formula": "Posted inflows minus posted outflows after consolidation transfer elimination",
      "required_inputs": [
        "Matched transfers, complete transactions and consistent scope/currency"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-net_cash_flow-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "operating_cash_inflows",
      "dimension_key": "cashflow",
      "label": "Operating receipts",
      "description": "Operating receipts. Sum classified operating receipts excluding financing, internal transfers and owner injections.",
      "unit": "currency",
      "formula": "Sum classified operating receipts excluding financing, internal transfers and owner injections",
      "required_inputs": [
        "Supported transaction classifications and explicit exclusion bridge"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-operating_cash_inflows-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "operating_cash_outflows",
      "dimension_key": "cashflow",
      "label": "Operating cash payments",
      "description": "Operating cash payments. Sum operating outflows excluding financing principal, capital expenditures and matched transfers.",
      "unit": "currency",
      "formula": "Sum operating outflows excluding financing principal, capital expenditures and matched transfers",
      "required_inputs": [
        "Supported classifications and cash-flow basis",
        "interest/tax treatment disclosed"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-operating_cash_outflows-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "operating_net_cash_flow",
      "dimension_key": "cashflow",
      "label": "Net operating cash flow",
      "description": "Net operating cash flow. Operating receipts minus operating cash payments.",
      "unit": "currency",
      "formula": "Operating receipts minus operating cash payments",
      "required_inputs": [
        "Same-window receipts/outflows and documented classification basis"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-operating_net_cash_flow-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "internal_transfer_inflows",
      "dimension_key": "cashflow",
      "label": "Internal transfer inflows",
      "description": "Internal transfer inflows. Sum inflows matched to outflows within the consolidation scope.",
      "unit": "currency",
      "formula": "Sum inflows matched to outflows within the consolidation scope",
      "required_inputs": [
        "Supported transfer pairs with stable IDs and explicit FX treatment"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-internal_transfer_inflows-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "financing_inflows",
      "dimension_key": "cashflow",
      "label": "Financing inflows",
      "description": "Financing inflows. Sum identified debt and equity financing receipts.",
      "unit": "currency",
      "formula": "Sum identified debt and equity financing receipts",
      "required_inputs": [
        "Financing classification and evidence",
        "uncertain receipts remain unclassified"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-financing_inflows-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "positive_cashflow_month_share",
      "dimension_key": "cashflow",
      "label": "Positive cash-flow months",
      "description": "Positive cash-flow months. Complete months with positive net cash flow divided by complete covered months.",
      "unit": "ratio",
      "formula": "Complete months with positive net cash flow divided by complete covered months",
      "required_inputs": [
        "At least three complete months and consistent account scope"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-positive_cashflow_month_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "cashflow_volatility",
      "dimension_key": "cashflow",
      "label": "Operating cash-flow volatility",
      "description": "Operating cash-flow volatility. Population standard deviation of complete monthly net operating cash flow divided by absolute mean.",
      "unit": "ratio",
      "formula": "Population standard deviation of complete monthly net operating cash flow divided by absolute mean",
      "required_inputs": [
        "At least six complete months",
        "nonzero mean",
        "disclose near-zero denominator sensitivity"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-cashflow_volatility-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "cashflow_change_90d",
      "dimension_key": "cashflow",
      "label": "Operating cash-flow change",
      "description": "Operating cash-flow change. Current 90-day operating net flow minus previous 90-day flow, divided by absolute previous flow.",
      "unit": "ratio",
      "formula": "Current 90-day operating net flow minus previous 90-day flow, divided by absolute previous flow",
      "required_inputs": [
        "Two complete comparable 90-day windows",
        "nonzero previous flow"
      ],
      "eligibility": "Use posted, deduplicated flows. Consolidation eliminates matched transfers; raw inflows remain distinct from operating receipts and revenue.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "payments",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-cashflow_change_90d-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "unrestricted_cash",
      "dimension_key": "liquidity",
      "label": "Unrestricted cash",
      "description": "Unrestricted cash. Sum verified cash balances available for use, excluding restricted balances.",
      "unit": "currency",
      "formula": "Sum verified cash balances available for use, excluding restricted balances",
      "required_inputs": [
        "Same-as-of reconciled balances and restriction status"
      ],
      "eligibility": "Separate available, restricted and observed balances. Reconstructed daily balances require reconciled opening/closing balances and complete transaction coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-unrestricted_cash-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "average_daily_balance",
      "dimension_key": "liquidity",
      "label": "Average daily cash balance",
      "description": "Average daily cash balance. Sum end-of-day balances divided by covered calendar days.",
      "unit": "currency",
      "formula": "Sum end-of-day balances divided by covered calendar days",
      "required_inputs": [
        "Complete reconciled daily balances for the selected account scope"
      ],
      "eligibility": "Separate available, restricted and observed balances. Reconstructed daily balances require reconciled opening/closing balances and complete transaction coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-average_daily_balance-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "minimum_daily_balance",
      "dimension_key": "liquidity",
      "label": "Minimum daily cash balance",
      "description": "Minimum daily cash balance. Minimum consolidated end-of-day balance.",
      "unit": "currency",
      "formula": "Minimum consolidated end-of-day balance",
      "required_inputs": [
        "Complete comparable daily balances",
        "disclose observed versus reconstructed basis"
      ],
      "eligibility": "Separate available, restricted and observed balances. Reconstructed daily balances require reconciled opening/closing balances and complete transaction coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-minimum_daily_balance-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "negative_balance_days",
      "dimension_key": "liquidity",
      "label": "Days below zero",
      "description": "Days below zero. Count covered days with negative consolidated end-of-day balance.",
      "unit": "days",
      "formula": "Count covered days with negative consolidated end-of-day balance",
      "required_inputs": [
        "Complete daily balance series",
        "no missing day treated as zero"
      ],
      "eligibility": "Separate available, restricted and observed balances. Reconstructed daily balances require reconciled opening/closing balances and complete transaction coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-negative_balance_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "cash_buffer_days",
      "dimension_key": "liquidity",
      "label": "Cash buffer",
      "description": "Cash buffer. Unrestricted cash divided by mean daily essential cash outflows.",
      "unit": "days",
      "formula": "Unrestricted cash divided by mean daily essential cash outflows",
      "required_inputs": [
        "Positive essential-outflow denominator",
        "current cash",
        "documented window and exclusions"
      ],
      "eligibility": "Separate available, restricted and observed balances. Reconstructed daily balances require reconciled opening/closing balances and complete transaction coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-cash_buffer_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "current_ratio",
      "dimension_key": "liquidity",
      "label": "Current ratio",
      "description": "Current ratio. Current assets divided by current liabilities.",
      "unit": "ratio",
      "formula": "Current assets divided by current liabilities",
      "required_inputs": [
        "Same-date classified balance sheet",
        "positive current liabilities"
      ],
      "eligibility": "Separate available, restricted and observed balances. Reconstructed daily balances require reconciled opening/closing balances and complete transaction coverage.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-current_ratio-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "quick_ratio",
      "dimension_key": "liquidity",
      "label": "Quick ratio",
      "description": "Quick ratio. Cash plus short-term investments plus eligible receivables, divided by current liabilities.",
      "unit": "ratio",
      "formula": "Cash plus short-term investments plus eligible receivables, divided by current liabilities",
      "required_inputs": [
        "Same-date asset/liability classifications",
        "positive current liabilities"
      ],
      "eligibility": "Separate available, restricted and observed balances. Reconstructed daily balances require reconciled opening/closing balances and complete transaction coverage.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-quick_ratio-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "cash_ratio",
      "dimension_key": "liquidity",
      "label": "Cash ratio",
      "description": "Cash ratio. Unrestricted cash and cash equivalents divided by current liabilities.",
      "unit": "ratio",
      "formula": "Unrestricted cash and cash equivalents divided by current liabilities",
      "required_inputs": [
        "Same-date balances",
        "positive current liabilities"
      ],
      "eligibility": "Separate available, restricted and observed balances. Reconstructed daily balances require reconciled opening/closing balances and complete transaction coverage.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-cash_ratio-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "verified_revenue",
      "dimension_key": "revenue_quality",
      "label": "Verified revenue",
      "description": "Verified revenue. Sum supported revenue on the declared cash or accrual basis after exclusions.",
      "unit": "currency",
      "formula": "Sum supported revenue on the declared cash or accrual basis after exclusions",
      "required_inputs": [
        "Reconciled bank, accounting or commerce evidence",
        "taxes, financing and transfers excluded"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-verified_revenue-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "recurring_revenue_share",
      "dimension_key": "revenue_quality",
      "label": "Recurring revenue share",
      "description": "Recurring revenue share. Supported recurring revenue divided by total verified revenue.",
      "unit": "ratio",
      "formula": "Supported recurring revenue divided by total verified revenue",
      "required_inputs": [
        "Defined recurrence rule and matched periods",
        "positive total revenue"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-recurring_revenue_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "revenue_growth_yoy",
      "dimension_key": "revenue_quality",
      "label": "Revenue growth year over year",
      "description": "Revenue growth year over year. Current-period revenue minus prior-year comparable revenue, divided by prior-year revenue.",
      "unit": "ratio",
      "formula": "Current-period revenue minus prior-year comparable revenue, divided by prior-year revenue",
      "required_inputs": [
        "Comparable periods separated by one year",
        "positive prior revenue"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-revenue_growth_yoy-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "revenue_growth_90d",
      "dimension_key": "revenue_quality",
      "label": "Revenue growth over 90 days",
      "description": "Revenue growth over 90 days. Current 90-day revenue minus preceding 90-day revenue, divided by preceding revenue.",
      "unit": "ratio",
      "formula": "Current 90-day revenue minus preceding 90-day revenue, divided by preceding revenue",
      "required_inputs": [
        "Two complete 90-day periods",
        "positive prior revenue"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-revenue_growth_90d-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "revenue_volatility",
      "dimension_key": "revenue_quality",
      "label": "Monthly revenue volatility",
      "description": "Monthly revenue volatility. Population standard deviation of monthly revenue divided by mean monthly revenue.",
      "unit": "ratio",
      "formula": "Population standard deviation of monthly revenue divided by mean monthly revenue",
      "required_inputs": [
        "At least six complete months",
        "positive mean",
        "consistent recognition basis"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-revenue_volatility-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "refund_amount_share",
      "dimension_key": "revenue_quality",
      "label": "Refund amount share",
      "description": "Refund amount share. Refunded sales amount divided by eligible gross sales amount.",
      "unit": "ratio",
      "formula": "Refunded sales amount divided by eligible gross sales amount",
      "required_inputs": [
        "Matched sales/refund cohort and treatment of late refunds",
        "positive gross sales"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-refund_amount_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "chargeback_amount_share",
      "dimension_key": "revenue_quality",
      "label": "Chargeback amount share",
      "description": "Chargeback amount share. Disputed chargeback amount divided by eligible processed sales amount.",
      "unit": "ratio",
      "formula": "Disputed chargeback amount divided by eligible processed sales amount",
      "required_inputs": [
        "Matched processing cohort and consistent chargeback stage",
        "positive denominator"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-chargeback_amount_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "revenue_cash_realization",
      "dimension_key": "revenue_quality",
      "label": "Revenue cash realization",
      "description": "Revenue cash realization. Matched collections on recognized sales divided by recognized sales.",
      "unit": "ratio",
      "formula": "Matched collections on recognized sales divided by recognized sales",
      "required_inputs": [
        "Defined collection horizon and sales cohort",
        "positive recognized sales",
        "not raw deposits/revenue"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-revenue_cash_realization-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "unverified_receipts_share",
      "dimension_key": "revenue_quality",
      "label": "Unverified receipts share",
      "description": "Unverified receipts share. Unclassified or unsupported operating-like receipts divided by total candidate receipts.",
      "unit": "ratio",
      "formula": "Unclassified or unsupported operating-like receipts divided by total candidate receipts",
      "required_inputs": [
        "Classification coverage and positive candidate receipts"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-unverified_receipts_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "nonrecurring_revenue_share",
      "dimension_key": "revenue_quality",
      "label": "Nonrecurring revenue share",
      "description": "Nonrecurring revenue share. Identified nonrecurring revenue divided by verified revenue.",
      "unit": "ratio",
      "formula": "Identified nonrecurring revenue divided by verified revenue",
      "required_inputs": [
        "Versioned recurrence criteria and positive revenue"
      ],
      "eligibility": "Distinguish accrual revenue, gross sales, refunds, taxes, fees and cash settlement. Financing, transfers and owner injections are not sales.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "payments",
        "commerce",
        "accounting"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-nonrecurring_revenue_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "gross_profit",
      "dimension_key": "profitability",
      "label": "Gross profit",
      "description": "Gross profit. Recognized revenue minus cost of goods sold.",
      "unit": "currency",
      "formula": "Recognized revenue minus cost of goods sold",
      "required_inputs": [
        "Same-period income statement with classified COGS"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-gross_profit-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "gross_margin",
      "dimension_key": "profitability",
      "label": "Gross margin",
      "description": "Gross margin. Gross profit divided by recognized revenue.",
      "unit": "ratio",
      "formula": "Gross profit divided by recognized revenue",
      "required_inputs": [
        "Positive revenue and consistent accounting basis"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-gross_margin-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "ebitda",
      "dimension_key": "profitability",
      "label": "EBITDA",
      "description": "EBITDA. Net income plus income tax expense, interest expense, depreciation and amortization.",
      "unit": "currency",
      "formula": "Net income plus income tax expense, interest expense, depreciation and amortization",
      "required_inputs": [
        "Complete supported statement line items",
        "no automatic discretionary addbacks"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-ebitda-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "ebitda_margin",
      "dimension_key": "profitability",
      "label": "EBITDA margin",
      "description": "EBITDA margin. EBITDA divided by recognized revenue.",
      "unit": "ratio",
      "formula": "EBITDA divided by recognized revenue",
      "required_inputs": [
        "Positive revenue and supported EBITDA"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-ebitda_margin-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "operating_profit",
      "dimension_key": "profitability",
      "label": "Operating profit",
      "description": "Operating profit. Revenue minus COGS and operating expenses.",
      "unit": "currency",
      "formula": "Revenue minus COGS and operating expenses",
      "required_inputs": [
        "Complete same-period operating statement",
        "financing excluded"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-operating_profit-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "operating_margin",
      "dimension_key": "profitability",
      "label": "Operating margin",
      "description": "Operating margin. Operating profit divided by revenue.",
      "unit": "ratio",
      "formula": "Operating profit divided by revenue",
      "required_inputs": [
        "Positive recognized revenue"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-operating_margin-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "net_profit",
      "dimension_key": "profitability",
      "label": "Net profit",
      "description": "Net profit. Total recognized income minus all recognized expenses.",
      "unit": "currency",
      "formula": "Total recognized income minus all recognized expenses",
      "required_inputs": [
        "Complete statement on declared accounting basis"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-net_profit-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "net_margin",
      "dimension_key": "profitability",
      "label": "Net margin",
      "description": "Net margin. Net profit divided by recognized revenue.",
      "unit": "ratio",
      "formula": "Net profit divided by recognized revenue",
      "required_inputs": [
        "Positive recognized revenue"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-net_margin-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "free_cash_flow",
      "dimension_key": "profitability",
      "label": "Free cash flow",
      "description": "Free cash flow. Operating cash flow minus cash capital expenditures.",
      "unit": "currency",
      "formula": "Operating cash flow minus cash capital expenditures",
      "required_inputs": [
        "Reconciled cash-flow statement or supported cash reconstruction",
        "no debt proceeds"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-free_cash_flow-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "return_on_assets",
      "dimension_key": "profitability",
      "label": "Return on assets",
      "description": "Return on assets. Period net profit divided by mean opening and closing total assets.",
      "unit": "ratio",
      "formula": "Period net profit divided by mean opening and closing total assets",
      "required_inputs": [
        "Positive average assets and complete period",
        "disclose annualization, never apply silently"
      ],
      "eligibility": "Align accounting basis, reporting scope and periods. EBITDA addbacks require itemized justification; never infer profit from deposits alone.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-return_on_assets-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "net_working_capital",
      "dimension_key": "working_capital",
      "label": "Net working capital",
      "description": "Net working capital. Current assets minus current liabilities.",
      "unit": "currency",
      "formula": "Current assets minus current liabilities",
      "required_inputs": [
        "Same-date classified balance sheet"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-net_working_capital-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "receivables_days",
      "dimension_key": "working_capital",
      "label": "Receivable days",
      "description": "Receivable days. Average trade receivables divided by credit sales, multiplied by period days.",
      "unit": "days",
      "formula": "Average trade receivables divided by credit sales, multiplied by period days",
      "required_inputs": [
        "Positive credit sales",
        "opening/closing receivables",
        "same accounting period"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-receivables_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "payables_days",
      "dimension_key": "working_capital",
      "label": "Payable days",
      "description": "Payable days. Average trade payables divided by credit purchases, multiplied by period days.",
      "unit": "days",
      "formula": "Average trade payables divided by credit purchases, multiplied by period days",
      "required_inputs": [
        "Positive credit purchases",
        "opening/closing payables",
        "do not substitute COGS silently"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-payables_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "inventory_days",
      "dimension_key": "working_capital",
      "label": "Inventory days",
      "description": "Inventory days. Average inventory divided by COGS, multiplied by period days.",
      "unit": "days",
      "formula": "Average inventory divided by COGS, multiplied by period days",
      "required_inputs": [
        "Positive COGS",
        "opening/closing comparable inventory valuation"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-inventory_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "cash_conversion_cycle",
      "dimension_key": "working_capital",
      "label": "Cash conversion cycle",
      "description": "Cash conversion cycle. Receivable days plus inventory days minus payable days.",
      "unit": "days",
      "formula": "Receivable days plus inventory days minus payable days",
      "required_inputs": [
        "All three components available on comparable periods and basis"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-cash_conversion_cycle-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "ar_overdue_share",
      "dimension_key": "working_capital",
      "label": "Overdue receivables share",
      "description": "Overdue receivables share. Overdue collectible trade receivables divided by total collectible trade receivables.",
      "unit": "ratio",
      "formula": "Overdue collectible trade receivables divided by total collectible trade receivables",
      "required_inputs": [
        "Due dates and same-as-of open balances",
        "positive receivables"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-ar_overdue_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "ar_90_plus_share",
      "dimension_key": "working_capital",
      "label": "Receivables over 90 days past due",
      "description": "Receivables over 90 days past due. Receivables more than 90 days past due divided by total trade receivables.",
      "unit": "ratio",
      "formula": "Receivables more than 90 days past due divided by total trade receivables",
      "required_inputs": [
        "Aging based on due date, not invoice date",
        "positive receivables"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-ar_90_plus_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "ap_overdue_share",
      "dimension_key": "working_capital",
      "label": "Overdue payables share",
      "description": "Overdue payables share. Overdue trade payables divided by total trade payables.",
      "unit": "ratio",
      "formula": "Overdue trade payables divided by total trade payables",
      "required_inputs": [
        "Due dates and open balances",
        "positive payables"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-ap_overdue_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "inventory_turnover",
      "dimension_key": "working_capital",
      "label": "Inventory turnover",
      "description": "Inventory turnover. Period COGS divided by average inventory.",
      "unit": "ratio",
      "formula": "Period COGS divided by average inventory",
      "required_inputs": [
        "Positive comparable inventory and supported COGS"
      ],
      "eligibility": "Use dated invoice/bill aging, sales and cost denominators on the same basis. Inventory valuation and credit-sales coverage must be explicit.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "commerce",
        "inventory"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-inventory_turnover-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "total_debt",
      "dimension_key": "leverage",
      "label": "Total interest-bearing debt",
      "description": "Total interest-bearing debt. Sum outstanding principal of resolved interest-bearing obligations.",
      "unit": "currency",
      "formula": "Sum outstanding principal of resolved interest-bearing obligations",
      "required_inputs": [
        "Complete disclosed and supported debt inventory",
        "leases treatment explicit"
      ],
      "eligibility": "Reconcile observed debt payments to disclosed and entitled bureau obligations. Unknown balances and undisclosed obligations are not zero.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "accounting",
        "banking",
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-total_debt-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "net_debt",
      "dimension_key": "leverage",
      "label": "Net debt",
      "description": "Net debt. Total debt minus unrestricted cash eligible for offset.",
      "unit": "currency",
      "formula": "Total debt minus unrestricted cash eligible for offset",
      "required_inputs": [
        "Same-as-of currency and consolidated scope"
      ],
      "eligibility": "Reconcile observed debt payments to disclosed and entitled bureau obligations. Unknown balances and undisclosed obligations are not zero.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "accounting",
        "banking",
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-net_debt-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "debt_to_assets",
      "dimension_key": "leverage",
      "label": "Debt to assets",
      "description": "Debt to assets. Total interest-bearing debt divided by total assets.",
      "unit": "ratio",
      "formula": "Total interest-bearing debt divided by total assets",
      "required_inputs": [
        "Positive total assets and matched scope",
        "excludes non-debt liabilities by definition"
      ],
      "eligibility": "Reconcile observed debt payments to disclosed and entitled bureau obligations. Unknown balances and undisclosed obligations are not zero.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "banking",
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-debt_to_assets-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "debt_to_equity",
      "dimension_key": "leverage",
      "label": "Debt to equity",
      "description": "Debt to equity. Total debt divided by equity.",
      "unit": "ratio",
      "formula": "Total debt divided by equity",
      "required_inputs": [
        "Positive equity",
        "zero/negative equity produces unavailable ratio and a separate finding"
      ],
      "eligibility": "Reconcile observed debt payments to disclosed and entitled bureau obligations. Unknown balances and undisclosed obligations are not zero.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "banking",
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-debt_to_equity-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "net_debt_to_ebitda",
      "dimension_key": "leverage",
      "label": "Net debt to EBITDA",
      "description": "Net debt to EBITDA. Net debt divided by trailing-12-month EBITDA.",
      "unit": "ratio",
      "formula": "Net debt divided by trailing-12-month EBITDA",
      "required_inputs": [
        "Positive EBITDA and complete 12-month period"
      ],
      "eligibility": "Reconcile observed debt payments to disclosed and entitled bureau obligations. Unknown balances and undisclosed obligations are not zero.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "banking",
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-net_debt_to_ebitda-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "credit_utilization",
      "dimension_key": "leverage",
      "label": "Revolving credit utilization",
      "description": "Revolving credit utilization. Used revolving principal divided by committed revolving limits.",
      "unit": "ratio",
      "formula": "Used revolving principal divided by committed revolving limits",
      "required_inputs": [
        "Positive known limits",
        "distinguish drawn balances from pending authorizations"
      ],
      "eligibility": "Reconcile observed debt payments to disclosed and entitled bureau obligations. Unknown balances and undisclosed obligations are not zero.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "accounting",
        "banking",
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-credit_utilization-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "short_term_debt_share",
      "dimension_key": "leverage",
      "label": "Debt due within one year",
      "description": "Debt due within one year. Principal contractually due within 365 days divided by total debt.",
      "unit": "ratio",
      "formula": "Principal contractually due within 365 days divided by total debt",
      "required_inputs": [
        "Complete maturity schedule and positive total debt"
      ],
      "eligibility": "Reconcile observed debt payments to disclosed and entitled bureau obligations. Unknown balances and undisclosed obligations are not zero.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "accounting",
        "banking",
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-short_term_debt_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "debt_maturing_90d",
      "dimension_key": "leverage",
      "label": "Debt maturing within 90 days",
      "description": "Debt maturing within 90 days. Sum principal contractually due within the next 90 days.",
      "unit": "currency",
      "formula": "Sum principal contractually due within the next 90 days",
      "required_inputs": [
        "Complete maturity schedule including balloon payments"
      ],
      "eligibility": "Reconcile observed debt payments to disclosed and entitled bureau obligations. Unknown balances and undisclosed obligations are not zero.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "accounting",
        "banking",
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-debt_maturing_90d-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "dscr",
      "dimension_key": "repayment_capacity",
      "label": "Cash-flow debt-service coverage",
      "description": "Cash-flow debt-service coverage. Eligible cash flow available for debt service divided by existing plus proposed contractual debt service.",
      "unit": "ratio",
      "formula": "Eligible cash flow available for debt service divided by existing plus proposed contractual debt service",
      "required_inputs": [
        "Complete eligible cash-flow bridge and existing/proposed principal, interest and mandatory debt fees for the same period",
        "positive debt service"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-dscr-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "fixed_charge_coverage",
      "dimension_key": "repayment_capacity",
      "label": "Fixed-charge coverage",
      "description": "Fixed-charge coverage. Cash flow before the specified fixed charges divided by those fixed charges.",
      "unit": "ratio",
      "formula": "Cash flow before the specified fixed charges divided by those fixed charges",
      "required_inputs": [
        "Explicit non-overlapping charge set, including leases where applicable",
        "positive charges"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-fixed_charge_coverage-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "interest_coverage",
      "dimension_key": "repayment_capacity",
      "label": "Interest coverage",
      "description": "Interest coverage. EBIT divided by interest expense.",
      "unit": "ratio",
      "formula": "EBIT divided by interest expense",
      "required_inputs": [
        "Supported same-period EBIT and positive interest expense"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-interest_coverage-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "existing_debt_service",
      "dimension_key": "repayment_capacity",
      "label": "Existing debt service",
      "description": "Existing debt service. Sum existing contractual principal, interest and mandatory debt fees over the assessment window.",
      "unit": "currency",
      "formula": "Sum existing contractual principal, interest and mandatory debt fees over the assessment window",
      "required_inputs": [
        "Complete schedule",
        "variable and balloon assumptions explicit"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-existing_debt_service-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "proposed_debt_service",
      "dimension_key": "repayment_capacity",
      "label": "Proposed debt service",
      "description": "Proposed debt service. Sum proposed contractual principal, interest and mandatory debt fees over the assessment window.",
      "unit": "currency",
      "formula": "Sum proposed contractual principal, interest and mandatory debt fees over the assessment window",
      "required_inputs": [
        "Exact proposed product terms, amount, rate, amortization, fees and timing"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-proposed_debt_service-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "total_debt_service",
      "dimension_key": "repayment_capacity",
      "label": "Total debt service",
      "description": "Total debt service. Existing plus proposed debt service with duplicates removed.",
      "unit": "currency",
      "formula": "Existing plus proposed debt service with duplicates removed",
      "required_inputs": [
        "Comparable complete schedules and shared currency"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-total_debt_service-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "residual_cash_after_debt",
      "dimension_key": "repayment_capacity",
      "label": "Cash after debt service",
      "description": "Cash after debt service. Eligible cash available for debt service minus total debt service.",
      "unit": "currency",
      "formula": "Eligible cash available for debt service minus total debt service",
      "required_inputs": [
        "Supported cash-flow bridge and complete obligations"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-residual_cash_after_debt-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "debt_service_headroom",
      "dimension_key": "repayment_capacity",
      "label": "Debt-service headroom",
      "description": "Debt-service headroom. Eligible cash flow divided by institution DSCR requirement, minus total debt service.",
      "unit": "currency",
      "formula": "Eligible cash flow divided by institution DSCR requirement, minus total debt service",
      "required_inputs": [
        "Positive institution-approved DSCR threshold and complete components",
        "analytical capacity, not an offer"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-debt_service_headroom-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "debt_payment_to_receipts",
      "dimension_key": "repayment_capacity",
      "label": "Debt payments to operating receipts",
      "description": "Debt payments to operating receipts. Observed debt payments divided by operating cash receipts.",
      "unit": "ratio",
      "formula": "Observed debt payments divided by operating cash receipts",
      "required_inputs": [
        "Positive receipts",
        "payments classified with evidence",
        "not a substitute for DSCR"
      ],
      "eligibility": "Use complete existing and proposed debt schedules, eligible cash flow and consistent periods. Include balloon and variable-payment terms.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "lender",
        "application",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-debt_payment_to_receipts-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "top_customer_share",
      "dimension_key": "concentration",
      "label": "Largest customer share",
      "description": "Largest customer share. Largest resolved customer revenue divided by covered customer revenue.",
      "unit": "ratio",
      "formula": "Largest resolved customer revenue divided by covered customer revenue",
      "required_inputs": [
        "Positive covered revenue and disclosed unknown-counterparty share"
      ],
      "eligibility": "Aggregate only resolved counterparties within the authorized borrower scope. Unknown counterparties remain a disclosed unallocated bucket.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "banking"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-top_customer_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "top_five_customer_share",
      "dimension_key": "concentration",
      "label": "Top five customer share",
      "description": "Top five customer share. Revenue of five largest resolved customers divided by covered customer revenue.",
      "unit": "ratio",
      "formula": "Revenue of five largest resolved customers divided by covered customer revenue",
      "required_inputs": [
        "Positive covered revenue",
        "fewer than five uses all resolved customers"
      ],
      "eligibility": "Aggregate only resolved counterparties within the authorized borrower scope. Unknown counterparties remain a disclosed unallocated bucket.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "banking"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-top_five_customer_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "top_supplier_share",
      "dimension_key": "concentration",
      "label": "Largest supplier share",
      "description": "Largest supplier share. Largest resolved supplier spend divided by covered supplier spend.",
      "unit": "ratio",
      "formula": "Largest resolved supplier spend divided by covered supplier spend",
      "required_inputs": [
        "Positive supplier spend and explicit coverage"
      ],
      "eligibility": "Aggregate only resolved counterparties within the authorized borrower scope. Unknown counterparties remain a disclosed unallocated bucket.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "banking"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-top_supplier_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "top_channel_share",
      "dimension_key": "concentration",
      "label": "Largest sales channel share",
      "description": "Largest sales channel share. Largest channel revenue divided by total covered channel revenue.",
      "unit": "ratio",
      "formula": "Largest channel revenue divided by total covered channel revenue",
      "required_inputs": [
        "Positive channel revenue",
        "no duplicated cross-platform sales"
      ],
      "eligibility": "Aggregate only resolved counterparties within the authorized borrower scope. Unknown counterparties remain a disclosed unallocated bucket.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "banking"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-top_channel_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "customer_hhi",
      "dimension_key": "concentration",
      "label": "Customer concentration index",
      "description": "Customer concentration index. Sum squared customer revenue fractions on a 0-to-1 scale.",
      "unit": "ratio",
      "formula": "Sum squared customer revenue fractions on a 0-to-1 scale",
      "required_inputs": [
        "Complete resolved customer allocation or explicit partial coverage",
        "unknown is not one customer"
      ],
      "eligibility": "Aggregate only resolved counterparties within the authorized borrower scope. Unknown counterparties remain a disclosed unallocated bucket.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "banking"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-customer_hhi-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "income_source_hhi",
      "dimension_key": "concentration",
      "label": "Income-source concentration index",
      "description": "Income-source concentration index. Sum squared verified income-source fractions on a 0-to-1 scale.",
      "unit": "ratio",
      "formula": "Sum squared verified income-source fractions on a 0-to-1 scale",
      "required_inputs": [
        "Positive verified income and resolved income streams"
      ],
      "eligibility": "Aggregate only resolved counterparties within the authorized borrower scope. Unknown counterparties remain a disclosed unallocated bucket.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "banking"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-income_source_hhi-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "collateral_ltv",
      "dimension_key": "collateral",
      "label": "Loan to collateral value",
      "description": "Loan to collateral value. Assessed facility exposure divided by supported collateral valuation.",
      "unit": "ratio",
      "formula": "Assessed facility exposure divided by supported collateral valuation",
      "required_inputs": [
        "Positive eligible valuation with valuation date, currency and ownership"
      ],
      "eligibility": "Require current valuations, ownership, lien priority and permitted reports. This is collateral evidence, not a legal opinion or enforceability guarantee.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "collateral",
        "registry",
        "lender",
        "accounting",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-collateral_ltv-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "combined_ltv",
      "dimension_key": "collateral",
      "label": "Combined loan to value",
      "description": "Combined loan to value. All known secured claims including proposed exposure divided by collateral value.",
      "unit": "ratio",
      "formula": "All known secured claims including proposed exposure divided by collateral value",
      "required_inputs": [
        "Positive valuation and complete supported lien/priority inventory"
      ],
      "eligibility": "Require current valuations, ownership, lien priority and permitted reports. This is collateral evidence, not a legal opinion or enforceability guarantee.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "collateral",
        "registry",
        "lender",
        "accounting",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-combined_ltv-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "collateral_coverage",
      "dimension_key": "collateral",
      "label": "Collateral coverage",
      "description": "Collateral coverage. Eligible realizable collateral value after approved haircuts divided by secured exposure.",
      "unit": "ratio",
      "formula": "Eligible realizable collateral value after approved haircuts divided by secured exposure",
      "required_inputs": [
        "Positive exposure, documented haircut and enforceability assumptions"
      ],
      "eligibility": "Require current valuations, ownership, lien priority and permitted reports. This is collateral evidence, not a legal opinion or enforceability guarantee.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "collateral",
        "registry",
        "lender",
        "accounting",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-collateral_coverage-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "eligible_receivables",
      "dimension_key": "collateral",
      "label": "Eligible borrowing-base receivables",
      "description": "Eligible borrowing-base receivables. Sum receivables meeting institution eligibility and concentration rules.",
      "unit": "currency",
      "formula": "Sum receivables meeting institution eligibility and concentration rules",
      "required_inputs": [
        "Versioned borrowing-base rules, aging, dilution and prior-pledge evidence"
      ],
      "eligibility": "Require current valuations, ownership, lien priority and permitted reports. This is collateral evidence, not a legal opinion or enforceability guarantee.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "collateral",
        "registry",
        "lender",
        "accounting",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-eligible_receivables-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "collateral_haircut_ratio",
      "dimension_key": "collateral",
      "label": "Collateral haircut",
      "description": "Collateral haircut. Gross eligible valuation minus supported realizable valuation, divided by gross valuation.",
      "unit": "ratio",
      "formula": "Gross eligible valuation minus supported realizable valuation, divided by gross valuation",
      "required_inputs": [
        "Positive valuation and disclosed approved valuation/haircut method"
      ],
      "eligibility": "Require current valuations, ownership, lien priority and permitted reports. This is collateral evidence, not a legal opinion or enforceability guarantee.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "collateral",
        "registry",
        "lender",
        "accounting",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-collateral_haircut_ratio-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "reconciliation_break_share",
      "dimension_key": "fraud_and_consistency",
      "label": "Unreconciled value share",
      "description": "Unreconciled value share. Unmatched absolute value divided by eligible source-side absolute value.",
      "unit": "ratio",
      "formula": "Unmatched absolute value divided by eligible source-side absolute value",
      "required_inputs": [
        "Comparable transaction populations, period, currency and matching tolerance"
      ],
      "eligibility": "Signals identify evidence needing review; no signal or score alone confirms fraud. Preserve document locations and conflicting values.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "documents",
        "banking",
        "accounting",
        "payments",
        "identity"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-reconciliation_break_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "duplicate_transaction_share",
      "dimension_key": "fraud_and_consistency",
      "label": "Duplicate transaction share",
      "description": "Duplicate transaction share. Confirmed duplicate records divided by examined records before deduplication.",
      "unit": "ratio",
      "formula": "Confirmed duplicate records divided by examined records before deduplication",
      "required_inputs": [
        "Nonzero examined records and documented duplicate criteria"
      ],
      "eligibility": "Signals identify evidence needing review; no signal or score alone confirms fraud. Preserve document locations and conflicting values.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "documents",
        "banking",
        "accounting",
        "payments",
        "identity"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-duplicate_transaction_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "document_contradiction_count",
      "dimension_key": "fraud_and_consistency",
      "label": "Document contradictions",
      "description": "Document contradictions. Count distinct supported inconsistencies between comparable document fields.",
      "unit": "count",
      "formula": "Count distinct supported inconsistencies between comparable document fields",
      "required_inputs": [
        "Document-level findings with page/field evidence",
        "a signal is not proof of fraud"
      ],
      "eligibility": "Signals identify evidence needing review; no signal or score alone confirms fraud. Preserve document locations and conflicting values.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "documents",
        "banking",
        "accounting",
        "payments",
        "identity"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-document_contradiction_count-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "identity_mismatch_count",
      "dimension_key": "fraud_and_consistency",
      "label": "Unresolved identity mismatches",
      "description": "Unresolved identity mismatches. Count distinct unresolved mismatches across supported borrower identity attributes.",
      "unit": "count",
      "formula": "Count distinct unresolved mismatches across supported borrower identity attributes",
      "required_inputs": [
        "Comparable identity sources",
        "absent attributes are missing, not mismatched"
      ],
      "eligibility": "Signals identify evidence needing review; no signal or score alone confirms fraud. Preserve document locations and conflicting values.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "documents",
        "banking",
        "accounting",
        "payments",
        "identity"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-identity_mismatch_count-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "declared_income_gap_ratio",
      "dimension_key": "fraud_and_consistency",
      "label": "Declared-to-verified income gap",
      "description": "Declared-to-verified income gap. Declared income minus verified comparable income, divided by verified income.",
      "unit": "ratio",
      "formula": "Declared income minus verified comparable income, divided by verified income",
      "required_inputs": [
        "Positive verified income",
        "same gross/net basis, currency, scope and period"
      ],
      "eligibility": "Signals identify evidence needing review; no signal or score alone confirms fraud. Preserve document locations and conflicting values.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "documents",
        "banking",
        "accounting",
        "payments",
        "identity"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-declared_income_gap_ratio-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "verified_gross_monthly_income",
      "dimension_key": "income_and_affordability",
      "label": "Verified gross monthly income",
      "description": "Verified gross monthly income. Supported recurring pretax income normalized to one calendar month.",
      "unit": "currency",
      "formula": "Supported recurring pretax income normalized to one calendar month",
      "required_inputs": [
        "Payroll, tax or supported gross-income evidence",
        "net deposits alone do not establish gross income"
      ],
      "eligibility": "Distinguish verified gross income, net deposits and modeled estimates. Include housing, essential spending, obligations and proposed payments without counting them twice.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "credit_bureau",
        "application",
        "documents",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-verified_gross_monthly_income-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "verified_net_monthly_income",
      "dimension_key": "income_and_affordability",
      "label": "Verified net monthly income",
      "description": "Verified net monthly income. Supported recurring after-deduction income normalized to one calendar month.",
      "unit": "currency",
      "formula": "Supported recurring after-deduction income normalized to one calendar month",
      "required_inputs": [
        "Verified income streams, recurrence and calendar conversion",
        "transfers excluded"
      ],
      "eligibility": "Distinguish verified gross income, net deposits and modeled estimates. Include housing, essential spending, obligations and proposed payments without counting them twice.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "credit_bureau",
        "application",
        "documents",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-verified_net_monthly_income-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "debt_to_income",
      "dimension_key": "income_and_affordability",
      "label": "Debt to income",
      "description": "Debt to income. Existing plus proposed required monthly debt payments divided by verified gross monthly income.",
      "unit": "ratio",
      "formula": "Existing plus proposed required monthly debt payments divided by verified gross monthly income",
      "required_inputs": [
        "Positive verified gross income and complete monthly obligations",
        "housing treatment explicit"
      ],
      "eligibility": "Distinguish verified gross income, net deposits and modeled estimates. Include housing, essential spending, obligations and proposed payments without counting them twice.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "credit_bureau",
        "application",
        "documents",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-debt_to_income-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "housing_to_income",
      "dimension_key": "income_and_affordability",
      "label": "Housing cost to income",
      "description": "Housing cost to income. Required monthly housing cost divided by verified gross monthly income.",
      "unit": "ratio",
      "formula": "Required monthly housing cost divided by verified gross monthly income",
      "required_inputs": [
        "Positive gross income",
        "rent/mortgage/tax/insurance/components explicit"
      ],
      "eligibility": "Distinguish verified gross income, net deposits and modeled estimates. Include housing, essential spending, obligations and proposed payments without counting them twice.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "credit_bureau",
        "application",
        "documents",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-housing_to_income-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "essential_monthly_spend",
      "dimension_key": "income_and_affordability",
      "label": "Essential monthly expenditure",
      "description": "Essential monthly expenditure. Sum evidenced essential non-debt spending normalized to one month.",
      "unit": "currency",
      "formula": "Sum evidenced essential non-debt spending normalized to one month",
      "required_inputs": [
        "Versioned institution expense taxonomy",
        "exclude sensitive merchant categories and avoid housing/debt duplication"
      ],
      "eligibility": "Distinguish verified gross income, net deposits and modeled estimates. Include housing, essential spending, obligations and proposed payments without counting them twice.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "credit_bureau",
        "application",
        "documents",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-essential_monthly_spend-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "residual_monthly_income",
      "dimension_key": "income_and_affordability",
      "label": "Residual monthly income",
      "description": "Residual monthly income. Verified net income minus essential spending, housing and existing/proposed debt payments.",
      "unit": "currency",
      "formula": "Verified net income minus essential spending, housing and existing/proposed debt payments",
      "required_inputs": [
        "Complete non-overlapping monthly expense/obligation set"
      ],
      "eligibility": "Distinguish verified gross income, net deposits and modeled estimates. Include housing, essential spending, obligations and proposed payments without counting them twice.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "credit_bureau",
        "application",
        "documents",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-residual_monthly_income-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "payment_to_income",
      "dimension_key": "income_and_affordability",
      "label": "Proposed payment to income",
      "description": "Proposed payment to income. Proposed required monthly payment divided by verified gross monthly income.",
      "unit": "ratio",
      "formula": "Proposed required monthly payment divided by verified gross monthly income",
      "required_inputs": [
        "Positive verified gross income and exact proposed terms"
      ],
      "eligibility": "Distinguish verified gross income, net deposits and modeled estimates. Include housing, essential spending, obligations and proposed payments without counting them twice.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "credit_bureau",
        "application",
        "documents",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-payment_to_income-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "liquid_reserve_months",
      "dimension_key": "income_and_affordability",
      "label": "Liquid reserve months",
      "description": "Liquid reserve months. Unrestricted liquid funds divided by required monthly outgoings.",
      "unit": "months",
      "formula": "Unrestricted liquid funds divided by required monthly outgoings",
      "required_inputs": [
        "Positive complete essential/housing/debt outgoings",
        "verified liquid balances"
      ],
      "eligibility": "Distinguish verified gross income, net deposits and modeled estimates. Include housing, essential spending, obligations and proposed payments without counting them twice.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "credit_bureau",
        "application",
        "documents",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-liquid_reserve_months-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "income_source_count",
      "dimension_key": "income_stability",
      "label": "Verified income sources",
      "description": "Verified income sources. Count distinct supported recurring income streams.",
      "unit": "count",
      "formula": "Count distinct supported recurring income streams",
      "required_inputs": [
        "Deduplicated income identities and complete observed window"
      ],
      "eligibility": "Analyze authorized employment, self-employment and other recurring income streams separately. Income type is not itself an adverse risk reason.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-income_source_count-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "income_volatility",
      "dimension_key": "income_stability",
      "label": "Monthly income volatility",
      "description": "Monthly income volatility. Population standard deviation of complete monthly verified income divided by mean.",
      "unit": "ratio",
      "formula": "Population standard deviation of complete monthly verified income divided by mean",
      "required_inputs": [
        "At least six complete months",
        "positive mean",
        "gross/net basis fixed"
      ],
      "eligibility": "Analyze authorized employment, self-employment and other recurring income streams separately. Income type is not itself an adverse risk reason.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-income_volatility-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "income_growth_yoy",
      "dimension_key": "income_stability",
      "label": "Income growth year over year",
      "description": "Income growth year over year. Current verified income minus comparable prior-year income, divided by prior-year income.",
      "unit": "ratio",
      "formula": "Current verified income minus comparable prior-year income, divided by prior-year income",
      "required_inputs": [
        "Positive prior income",
        "same income basis and comparable periods"
      ],
      "eligibility": "Analyze authorized employment, self-employment and other recurring income streams separately. Income type is not itself an adverse risk reason.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-income_growth_yoy-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "days_since_last_income",
      "dimension_key": "income_stability",
      "label": "Days since last income",
      "description": "Days since last income. Days from most recent verified recurring income receipt to assessment date.",
      "unit": "days",
      "formula": "Days from most recent verified recurring income receipt to assessment date",
      "required_inputs": [
        "Supported receipt and assessment date",
        "missing history is unavailable"
      ],
      "eligibility": "Analyze authorized employment, self-employment and other recurring income streams separately. Income type is not itself an adverse risk reason.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-days_since_last_income-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "income_interruption_days",
      "dimension_key": "income_stability",
      "label": "Income interruption",
      "description": "Income interruption. Days past the next expected income date without a matched receipt.",
      "unit": "days",
      "formula": "Days past the next expected income date without a matched receipt",
      "required_inputs": [
        "Documented payment cadence, complete account coverage and nonnegative elapsed interval"
      ],
      "eligibility": "Analyze authorized employment, self-employment and other recurring income streams separately. Income type is not itself an adverse risk reason.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-income_interruption_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "income_continuity_share",
      "dimension_key": "income_stability",
      "label": "Income continuity",
      "description": "Income continuity. Expected income periods with a supported receipt divided by elapsed expected periods.",
      "unit": "ratio",
      "formula": "Expected income periods with a supported receipt divided by elapsed expected periods",
      "required_inputs": [
        "Explicit expected cadence and nonzero elapsed periods",
        "missing account coverage cannot count as interruption"
      ],
      "eligibility": "Analyze authorized employment, self-employment and other recurring income streams separately. Income type is not itself an adverse risk reason.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "payroll",
        "banking",
        "tax",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-income_continuity_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "nsf_event_count",
      "dimension_key": "payment_behavior",
      "label": "Insufficient-funds events",
      "description": "Insufficient-funds events. Count distinct supported returned-payment events caused by insufficient funds.",
      "unit": "count",
      "formula": "Count distinct supported returned-payment events caused by insufficient funds",
      "required_inputs": [
        "Return reason evidence",
        "deduplicate event and related fee records"
      ],
      "eligibility": "Deduplicate returns and their fees. Report payment outcomes and timing rather than inferring missed payments from missing source coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "credit_bureau",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-nsf_event_count-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "overdraft_days",
      "dimension_key": "payment_behavior",
      "label": "Overdraft days",
      "description": "Overdraft days. Count covered days with a negative balance in any assessed account.",
      "unit": "days",
      "formula": "Count covered days with a negative balance in any assessed account",
      "required_inputs": [
        "Complete per-account daily balances",
        "union calendar days, not sum across accounts"
      ],
      "eligibility": "Deduplicate returns and their fees. Report payment outcomes and timing rather than inferring missed payments from missing source coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "credit_bureau",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-overdraft_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "returned_payment_amount",
      "dimension_key": "payment_behavior",
      "label": "Returned payment amount",
      "description": "Returned payment amount. Sum principal amounts of distinct returned payment events.",
      "unit": "currency",
      "formula": "Sum principal amounts of distinct returned payment events",
      "required_inputs": [
        "Return reason, direction and event linkage",
        "exclude duplicate fees"
      ],
      "eligibility": "Deduplicate returns and their fees. Report payment outcomes and timing rather than inferring missed payments from missing source coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "credit_bureau",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-returned_payment_amount-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "delinquent_obligation_count",
      "dimension_key": "payment_behavior",
      "label": "Delinquent obligations",
      "description": "Delinquent obligations. Count verified obligations past due at the assessment date.",
      "unit": "count",
      "formula": "Count verified obligations past due at the assessment date",
      "required_inputs": [
        "Due dates, payment allocation and complete supported debt schedule"
      ],
      "eligibility": "Deduplicate returns and their fees. Report payment outcomes and timing rather than inferring missed payments from missing source coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "credit_bureau",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-delinquent_obligation_count-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "maximum_days_past_due",
      "dimension_key": "payment_behavior",
      "label": "Maximum days past due",
      "description": "Maximum days past due. Maximum verified days past due among assessed obligations.",
      "unit": "days",
      "formula": "Maximum verified days past due among assessed obligations",
      "required_inputs": [
        "Known contractual dues and allocated repayments",
        "no delinquency inferred from missing feed"
      ],
      "eligibility": "Deduplicate returns and their fees. Report payment outcomes and timing rather than inferring missed payments from missing source coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "credit_bureau",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-maximum_days_past_due-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "on_time_payment_share",
      "dimension_key": "payment_behavior",
      "label": "On-time payment share",
      "description": "On-time payment share. Obligations paid by contractual due date divided by elapsed eligible obligations.",
      "unit": "ratio",
      "formula": "Obligations paid by contractual due date divided by elapsed eligible obligations",
      "required_inputs": [
        "Complete due/payment pairs and positive eligible count"
      ],
      "eligibility": "Deduplicate returns and their fees. Report payment outcomes and timing rather than inferring missed payments from missing source coverage.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "credit_bureau",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-on_time_payment_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "open_credit_obligation_count",
      "dimension_key": "credit_history",
      "label": "Open credit obligations",
      "description": "Open credit obligations. Count resolved open obligations in entitled credit evidence.",
      "unit": "count",
      "formula": "Count resolved open obligations in entitled credit evidence",
      "required_inputs": [
        "Current permitted report or lender records",
        "duplicate trades resolved"
      ],
      "eligibility": "Use entitled credit reports with source, score model, pull time and coverage. No matched report is not a clean credit history.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-open_credit_obligation_count-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "bureau_utilization",
      "dimension_key": "credit_history",
      "label": "Reported revolving utilization",
      "description": "Reported revolving utilization. Reported used revolving balances divided by reported limits.",
      "unit": "ratio",
      "formula": "Reported used revolving balances divided by reported limits",
      "required_inputs": [
        "Same-report-date positive limits",
        "disclose bureau coverage and currency"
      ],
      "eligibility": "Use entitled credit reports with source, score model, pull time and coverage. No matched report is not a clean credit history.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-bureau_utilization-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "recent_credit_inquiry_count",
      "dimension_key": "credit_history",
      "label": "Recent credit inquiries",
      "description": "Recent credit inquiries. Count supported inquiry events in the requested window.",
      "unit": "count",
      "formula": "Count supported inquiry events in the requested window",
      "required_inputs": [
        "Entitled report",
        "group duplicates/rate-shopping only under disclosed rules"
      ],
      "eligibility": "Use entitled credit reports with source, score model, pull time and coverage. No matched report is not a clean credit history.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-recent_credit_inquiry_count-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "severe_delinquency_count",
      "dimension_key": "credit_history",
      "label": "Severe delinquency events",
      "description": "Severe delinquency events. Count reported obligations meeting institution-defined severe-delinquency criteria.",
      "unit": "count",
      "formula": "Count reported obligations meeting institution-defined severe-delinquency criteria",
      "required_inputs": [
        "Current entitled report, criterion version and observation window"
      ],
      "eligibility": "Use entitled credit reports with source, score model, pull time and coverage. No matched report is not a clean credit history.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-severe_delinquency_count-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "public_record_event_count",
      "dimension_key": "credit_history",
      "label": "Relevant public-record events",
      "description": "Relevant public-record events. Count supported relevant insolvency/judgment events in entitled evidence.",
      "unit": "count",
      "formula": "Count supported relevant insolvency/judgment events in entitled evidence",
      "required_inputs": [
        "Verified matching, jurisdiction, record date and status",
        "disputed records remain flagged"
      ],
      "eligibility": "Use entitled credit reports with source, score model, pull time and coverage. No matched report is not a clean credit history.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "credit_bureau",
        "lender",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-public_record_event_count-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "gross_sales",
      "dimension_key": "commerce_performance",
      "label": "Gross sales",
      "description": "Gross sales. Sum eligible sales before refunds and discounts, excluding taxes.",
      "unit": "currency",
      "formula": "Sum eligible sales before refunds and discounts, excluding taxes",
      "required_inputs": [
        "Complete store/processor scope and consistent order versus settlement basis"
      ],
      "eligibility": "Keep store/platform coverage, settlement lags and currency explicit. Cohort metrics require stable customer identifiers and a complete comparable cohort.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payments",
        "commerce",
        "subscriptions"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-gross_sales-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "net_sales",
      "dimension_key": "commerce_performance",
      "label": "Net sales",
      "description": "Net sales. Gross sales minus discounts, cancellations and refunds.",
      "unit": "currency",
      "formula": "Gross sales minus discounts, cancellations and refunds",
      "required_inputs": [
        "Same sales cohort and recognition window",
        "taxes excluded"
      ],
      "eligibility": "Keep store/platform coverage, settlement lags and currency explicit. Cohort metrics require stable customer identifiers and a complete comparable cohort.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payments",
        "commerce",
        "subscriptions"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-net_sales-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "average_order_value",
      "dimension_key": "commerce_performance",
      "label": "Average order value",
      "description": "Average order value. Net eligible order sales divided by completed noncancelled order count.",
      "unit": "currency",
      "formula": "Net eligible order sales divided by completed noncancelled order count",
      "required_inputs": [
        "Positive comparable order count",
        "order-based rather than settlement data"
      ],
      "eligibility": "Keep store/platform coverage, settlement lags and currency explicit. Cohort metrics require stable customer identifiers and a complete comparable cohort.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payments",
        "commerce",
        "subscriptions"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-average_order_value-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "repeat_customer_share",
      "dimension_key": "commerce_performance",
      "label": "Repeat customer share",
      "description": "Repeat customer share. Customers with more than one completed purchase divided by purchasing customers.",
      "unit": "ratio",
      "formula": "Customers with more than one completed purchase divided by purchasing customers",
      "required_inputs": [
        "Stable authorized customer IDs and positive cohort count"
      ],
      "eligibility": "Keep store/platform coverage, settlement lags and currency explicit. Cohort metrics require stable customer identifiers and a complete comparable cohort.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payments",
        "commerce",
        "subscriptions"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-repeat_customer_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "monthly_recurring_revenue",
      "dimension_key": "commerce_performance",
      "label": "Monthly recurring revenue",
      "description": "Monthly recurring revenue. Contracted recurring subscription revenue normalized to a month.",
      "unit": "currency",
      "formula": "Contracted recurring subscription revenue normalized to a month",
      "required_inputs": [
        "Active recurring subscriptions, currency and documented usage/discount treatment"
      ],
      "eligibility": "Keep store/platform coverage, settlement lags and currency explicit. Cohort metrics require stable customer identifiers and a complete comparable cohort.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payments",
        "commerce",
        "subscriptions"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-monthly_recurring_revenue-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "gross_revenue_retention",
      "dimension_key": "commerce_performance",
      "label": "Gross revenue retention",
      "description": "Gross revenue retention. Opening recurring revenue minus churn and contraction divided by opening recurring revenue.",
      "unit": "ratio",
      "formula": "Opening recurring revenue minus churn and contraction divided by opening recurring revenue",
      "required_inputs": [
        "Positive opening cohort revenue",
        "expansion excluded"
      ],
      "eligibility": "Keep store/platform coverage, settlement lags and currency explicit. Cohort metrics require stable customer identifiers and a complete comparable cohort.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payments",
        "commerce",
        "subscriptions"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-gross_revenue_retention-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "net_revenue_retention",
      "dimension_key": "commerce_performance",
      "label": "Net revenue retention",
      "description": "Net revenue retention. Opening recurring revenue minus churn/contraction plus expansion divided by opening recurring revenue.",
      "unit": "ratio",
      "formula": "Opening recurring revenue minus churn/contraction plus expansion divided by opening recurring revenue",
      "required_inputs": [
        "Same opening customer cohort and positive starting revenue"
      ],
      "eligibility": "Keep store/platform coverage, settlement lags and currency explicit. Cohort metrics require stable customer identifiers and a complete comparable cohort.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payments",
        "commerce",
        "subscriptions"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-net_revenue_retention-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "settlement_delay_days",
      "dimension_key": "commerce_performance",
      "label": "Settlement delay",
      "description": "Settlement delay. Amount-weighted days from captured sale to corresponding bank settlement.",
      "unit": "days",
      "formula": "Amount-weighted days from captured sale to corresponding bank settlement",
      "required_inputs": [
        "Matched eligible captures and settlements",
        "positive settled value"
      ],
      "eligibility": "Keep store/platform coverage, settlement lags and currency explicit. Cohort metrics require stable customer identifiers and a complete comparable cohort.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payments",
        "commerce",
        "subscriptions"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-settlement_delay_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "payroll_burden_share",
      "dimension_key": "operating_resilience",
      "label": "Payroll burden",
      "description": "Payroll burden. Payroll cash cost including employer costs divided by verified revenue.",
      "unit": "ratio",
      "formula": "Payroll cash cost including employer costs divided by verified revenue",
      "required_inputs": [
        "Positive comparable revenue",
        "supported payroll records"
      ],
      "eligibility": "Measure payroll, supplier, inventory and fulfillment exposure from operational evidence. Do not infer management quality from personal traits or social media.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payroll",
        "inventory",
        "accounting",
        "commerce",
        "logistics"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-payroll_burden_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "payroll_growth_yoy",
      "dimension_key": "operating_resilience",
      "label": "Payroll growth year over year",
      "description": "Payroll growth year over year. Current payroll cost minus prior-year cost divided by prior-year cost.",
      "unit": "ratio",
      "formula": "Current payroll cost minus prior-year cost divided by prior-year cost",
      "required_inputs": [
        "Comparable periods",
        "positive prior payroll",
        "no employee protected attributes"
      ],
      "eligibility": "Measure payroll, supplier, inventory and fulfillment exposure from operational evidence. Do not infer management quality from personal traits or social media.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payroll",
        "inventory",
        "accounting",
        "commerce",
        "logistics"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-payroll_growth_yoy-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "inventory_stockout_share",
      "dimension_key": "operating_resilience",
      "label": "Inventory stockout share",
      "description": "Inventory stockout share. Observed sellable item-days out of stock divided by observed eligible item-days.",
      "unit": "ratio",
      "formula": "Observed sellable item-days out of stock divided by observed eligible item-days",
      "required_inputs": [
        "Inventory history and eligible active-item scope",
        "positive coverage"
      ],
      "eligibility": "Measure payroll, supplier, inventory and fulfillment exposure from operational evidence. Do not infer management quality from personal traits or social media.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payroll",
        "inventory",
        "accounting",
        "commerce",
        "logistics"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-inventory_stockout_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "fulfillment_on_time_share",
      "dimension_key": "operating_resilience",
      "label": "On-time fulfillment share",
      "description": "On-time fulfillment share. Fulfilled eligible orders on/before promised date divided by eligible fulfilled orders.",
      "unit": "ratio",
      "formula": "Fulfilled eligible orders on/before promised date divided by eligible fulfilled orders",
      "required_inputs": [
        "Complete order and shipment dates",
        "positive eligible count"
      ],
      "eligibility": "Measure payroll, supplier, inventory and fulfillment exposure from operational evidence. Do not infer management quality from personal traits or social media.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payroll",
        "inventory",
        "accounting",
        "commerce",
        "logistics"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-fulfillment_on_time_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "supplier_payment_delay_days",
      "dimension_key": "operating_resilience",
      "label": "Supplier payment delay",
      "description": "Supplier payment delay. Amount-weighted days paid after contractual due date for settled trade bills.",
      "unit": "days",
      "formula": "Amount-weighted days paid after contractual due date for settled trade bills",
      "required_inputs": [
        "Matched bill/payment allocations",
        "positive paid amounts",
        "early payments recorded as zero delay"
      ],
      "eligibility": "Measure payroll, supplier, inventory and fulfillment exposure from operational evidence. Do not infer management quality from personal traits or social media.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "payroll",
        "inventory",
        "accounting",
        "commerce",
        "logistics"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-supplier_payment_delay_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "tax_liability",
      "dimension_key": "tax_and_compliance",
      "label": "Reported tax liability",
      "description": "Reported tax liability. Sum supported outstanding assessed tax obligations at the assessment date.",
      "unit": "currency",
      "formula": "Sum supported outstanding assessed tax obligations at the assessment date",
      "required_inputs": [
        "Entitled tax/statement evidence with assessed versus estimated status"
      ],
      "eligibility": "Separate declared, filed, assessed and paid amounts and their periods. Registration or filing evidence is not a legal or tax-compliance certification.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "tax",
        "accounting",
        "registry",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-tax_liability-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "tax_overdue_amount",
      "dimension_key": "tax_and_compliance",
      "label": "Overdue tax amount",
      "description": "Overdue tax amount. Sum supported unpaid tax obligations past their due dates.",
      "unit": "currency",
      "formula": "Sum supported unpaid tax obligations past their due dates",
      "required_inputs": [
        "Actual due dates and paid allocations",
        "estimated taxes not treated as arrears"
      ],
      "eligibility": "Separate declared, filed, assessed and paid amounts and their periods. Registration or filing evidence is not a legal or tax-compliance certification.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "tax",
        "accounting",
        "registry",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-tax_overdue_amount-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "tax_payment_coverage",
      "dimension_key": "tax_and_compliance",
      "label": "Tax payment coverage",
      "description": "Tax payment coverage. Payments allocated to due assessed taxes divided by due assessed taxes.",
      "unit": "ratio",
      "formula": "Payments allocated to due assessed taxes divided by due assessed taxes",
      "required_inputs": [
        "Positive due taxes and matched same-period payments"
      ],
      "eligibility": "Separate declared, filed, assessed and paid amounts and their periods. Registration or filing evidence is not a legal or tax-compliance certification.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "tax",
        "accounting",
        "registry",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-tax_payment_coverage-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "filing_coverage",
      "dimension_key": "tax_and_compliance",
      "label": "Filing evidence coverage",
      "description": "Filing evidence coverage. Required filings with supported filing evidence divided by known required filings.",
      "unit": "ratio",
      "formula": "Required filings with supported filing evidence divided by known required filings",
      "required_inputs": [
        "Explicit jurisdiction and obligation inventory",
        "positive required count",
        "not a compliance opinion"
      ],
      "eligibility": "Separate declared, filed, assessed and paid amounts and their periods. Registration or filing evidence is not a legal or tax-compliance certification.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "tax",
        "accounting",
        "registry",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-filing_coverage-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "bank_accounting_match_share",
      "dimension_key": "financial_reporting_quality",
      "label": "Bank-to-books match share",
      "description": "Bank-to-books match share. Matched bank-side absolute value divided by eligible bank-side absolute value.",
      "unit": "ratio",
      "formula": "Matched bank-side absolute value divided by eligible bank-side absolute value",
      "required_inputs": [
        "Same currency/period",
        "positive eligible value",
        "timing/FX/fees reconciled explicitly"
      ],
      "eligibility": "Measure statement coverage, closing lag, reconciliations and material adjustments; missing accounting records are not fabricated statements.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "banking",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-bank_accounting_match_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "statement_balance_discrepancy",
      "dimension_key": "financial_reporting_quality",
      "label": "Balance-sheet discrepancy",
      "description": "Balance-sheet discrepancy. Assets minus liabilities minus equity.",
      "unit": "currency",
      "formula": "Assets minus liabilities minus equity",
      "required_inputs": [
        "Same-date complete statement and currency"
      ],
      "eligibility": "Measure statement coverage, closing lag, reconciliations and material adjustments; missing accounting records are not fabricated statements.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "banking",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-statement_balance_discrepancy-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "material_adjustment_share",
      "dimension_key": "financial_reporting_quality",
      "label": "Material accounting adjustments",
      "description": "Material accounting adjustments. Absolute supported adjustment value divided by absolute pre-adjustment eligible activity.",
      "unit": "ratio",
      "formula": "Absolute supported adjustment value divided by absolute pre-adjustment eligible activity",
      "required_inputs": [
        "Versioned materiality rule",
        "positive activity",
        "journal reversals handled"
      ],
      "eligibility": "Measure statement coverage, closing lag, reconciliations and material adjustments; missing accounting records are not fabricated statements.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "banking",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-material_adjustment_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "books_closing_lag_days",
      "dimension_key": "financial_reporting_quality",
      "label": "Books closing lag",
      "description": "Books closing lag. Days between accounting period end and supported closing/finalization date.",
      "unit": "days",
      "formula": "Days between accounting period end and supported closing/finalization date",
      "required_inputs": [
        "Both dates",
        "draft or unknown close state yields unavailable"
      ],
      "eligibility": "Measure statement coverage, closing lag, reconciliations and material adjustments; missing accounting records are not fabricated statements.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "accounting",
        "banking",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-books_closing_lag_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "observed_account_coverage",
      "dimension_key": "data_quality",
      "label": "Declared-account coverage",
      "description": "Declared-account coverage. Assessed declared accounts divided by known declared relevant accounts.",
      "unit": "ratio",
      "formula": "Assessed declared accounts divided by known declared relevant accounts",
      "required_inputs": [
        "Explicit declared account inventory and positive denominator",
        "not all external accounts"
      ],
      "eligibility": "Describe observed coverage against declared/required sources; never imply visibility into all of a borrower's external accounts.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "identity",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-observed_account_coverage-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "covered_history_days",
      "dimension_key": "data_quality",
      "label": "Covered history",
      "description": "Covered history. Count fully covered days across the required source/account set.",
      "unit": "days",
      "formula": "Count fully covered days across the required source/account set",
      "required_inputs": [
        "Required source roster and gap-aware observed intervals"
      ],
      "eligibility": "Describe observed coverage against declared/required sources; never imply visibility into all of a borrower's external accounts.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "identity",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-covered_history_days-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "stale_source_share",
      "dimension_key": "data_quality",
      "label": "Stale required sources",
      "description": "Stale required sources. Required sources exceeding configured freshness tolerance divided by required sources.",
      "unit": "ratio",
      "formula": "Required sources exceeding configured freshness tolerance divided by required sources",
      "required_inputs": [
        "Nonzero required-source count",
        "source-specific freshness policy"
      ],
      "eligibility": "Describe observed coverage against declared/required sources; never imply visibility into all of a borrower's external accounts.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "identity",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-stale_source_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "unclassified_transaction_share",
      "dimension_key": "data_quality",
      "label": "Unclassified transactions",
      "description": "Unclassified transactions. Unclassified eligible transaction count divided by eligible transaction count.",
      "unit": "ratio",
      "formula": "Unclassified eligible transaction count divided by eligible transaction count",
      "required_inputs": [
        "Nonzero posted deduplicated population and versioned classification taxonomy"
      ],
      "eligibility": "Describe observed coverage against declared/required sources; never imply visibility into all of a borrower's external accounts.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "identity",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-unclassified_transaction_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "reconciled_value_share",
      "dimension_key": "data_quality",
      "label": "Reconciled financial value",
      "description": "Reconciled financial value. Reconciled eligible absolute amount divided by eligible absolute amount.",
      "unit": "ratio",
      "formula": "Reconciled eligible absolute amount divided by eligible absolute amount",
      "required_inputs": [
        "Same comparable matching universe and positive denominator"
      ],
      "eligibility": "Describe observed coverage against declared/required sources; never imply visibility into all of a borrower's external accounts.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payments",
        "commerce",
        "payroll",
        "identity",
        "documents"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-reconciled_value_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "projected_minimum_cash",
      "dimension_key": "forecasting_and_stress",
      "label": "Projected minimum cash",
      "description": "Projected minimum cash. Minimum closing cash in the defined forecast horizon.",
      "unit": "currency",
      "formula": "Minimum closing cash in the defined forecast horizon",
      "required_inputs": [
        "Versioned model or deterministic projection, explicit assumptions, horizon and complete starting balances"
      ],
      "eligibility": "Separate scenario assumptions from observations. Forecasts require model/version, horizon and interval methodology; stress outcomes are conditional, not default probabilities.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "application",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-projected_minimum_cash-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "stress_dscr",
      "dimension_key": "forecasting_and_stress",
      "label": "Stressed debt-service coverage",
      "description": "Stressed debt-service coverage. Scenario eligible cash flow divided by scenario existing/proposed debt service.",
      "unit": "ratio",
      "formula": "Scenario eligible cash flow divided by scenario existing/proposed debt service",
      "required_inputs": [
        "Explicit parameter shocks, transmission method and positive complete debt service"
      ],
      "eligibility": "Separate scenario assumptions from observations. Forecasts require model/version, horizon and interval methodology; stress outcomes are conditional, not default probabilities.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "application",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-stress_dscr-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "stress_residual_income",
      "dimension_key": "forecasting_and_stress",
      "label": "Stressed residual income",
      "description": "Stressed residual income. Scenario verified net income minus scenario non-overlapping essential/housing/debt outgoings.",
      "unit": "currency",
      "formula": "Scenario verified net income minus scenario non-overlapping essential/housing/debt outgoings",
      "required_inputs": [
        "Defined consumer scenario, exact payment terms and complete base components"
      ],
      "eligibility": "Separate scenario assumptions from observations. Forecasts require model/version, horizon and interval methodology; stress outcomes are conditional, not default probabilities.",
      "borrower_types": [
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "application",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-stress_residual_income-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "liquidity_shortfall",
      "dimension_key": "forecasting_and_stress",
      "label": "Projected liquidity shortfall",
      "description": "Projected liquidity shortfall. Maximum of zero and required liquidity floor minus minimum projected cash.",
      "unit": "currency",
      "formula": "Maximum of zero and required liquidity floor minus minimum projected cash",
      "required_inputs": [
        "Institution-defined floor and supported forecast horizon",
        "no default-probability interpretation"
      ],
      "eligibility": "Separate scenario assumptions from observations. Forecasts require model/version, horizon and interval methodology; stress outcomes are conditional, not default probabilities.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "application",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-liquidity_shortfall-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "break_even_revenue_decline",
      "dimension_key": "forecasting_and_stress",
      "label": "Break-even revenue decline",
      "description": "Break-even revenue decline. Smallest modeled proportional revenue reduction that breaches an explicit capacity threshold.",
      "unit": "ratio",
      "formula": "Smallest modeled proportional revenue reduction that breaches an explicit capacity threshold",
      "required_inputs": [
        "Documented cost elasticity, search bounds, institution threshold and scenario model",
        "no universal shock"
      ],
      "eligibility": "Separate scenario assumptions from observations. Forecasts require model/version, horizon and interval methodology; stress outcomes are conditional, not default probabilities.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "application",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-break_even_revenue_decline-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "related_party_receipts_share",
      "dimension_key": "relationship_risk",
      "label": "Related-party receipts share",
      "description": "Related-party receipts share. Identified related-party operating receipts divided by operating receipts.",
      "unit": "ratio",
      "formula": "Identified related-party operating receipts divided by operating receipts",
      "required_inputs": [
        "Evidence-supported relationships and positive operating receipts"
      ],
      "eligibility": "Only borrower-authorized ownership and transaction relationships are in scope. Links require evidence and uncertainty; no cross-institution identity graph is exposed.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "registry",
        "accounting",
        "banking",
        "application"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-related_party_receipts_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "circular_flow_amount",
      "dimension_key": "relationship_risk",
      "label": "Potential circular-flow amount",
      "description": "Potential circular-flow amount. Sum uniquely attributed flow amount in evidence-supported return paths.",
      "unit": "currency",
      "formula": "Sum uniquely attributed flow amount in evidence-supported return paths",
      "required_inputs": [
        "Versioned temporal/value matching and unique path attribution",
        "suspicion requires review"
      ],
      "eligibility": "Only borrower-authorized ownership and transaction relationships are in scope. Links require evidence and uncertainty; no cross-institution identity graph is exposed.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "registry",
        "accounting",
        "banking",
        "application"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-circular_flow_amount-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "connected_counterparty_share",
      "dimension_key": "relationship_risk",
      "label": "Connected-counterparty exposure",
      "description": "Connected-counterparty exposure. Exposure to evidence-linked counterparties divided by total covered counterparty exposure.",
      "unit": "ratio",
      "formula": "Exposure to evidence-linked counterparties divided by total covered counterparty exposure",
      "required_inputs": [
        "Authorized relationship graph, positive exposure and declared edge types"
      ],
      "eligibility": "Only borrower-authorized ownership and transaction relationships are in scope. Links require evidence and uncertainty; no cross-institution identity graph is exposed.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "registry",
        "accounting",
        "banking",
        "application"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-connected_counterparty_share-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "revenue_change_from_baseline",
      "dimension_key": "monitoring_change",
      "label": "Revenue change from baseline",
      "description": "Revenue change from baseline. Current comparable revenue minus baseline revenue divided by baseline revenue.",
      "unit": "ratio",
      "formula": "Current comparable revenue minus baseline revenue divided by baseline revenue",
      "required_inputs": [
        "Positive baseline revenue and compatible equal-length windows and calculation versions"
      ],
      "eligibility": "Compare compatible windows, scope, currencies and calculation versions. If comparability fails, expose the reason and no numeric delta.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-revenue_change_from_baseline-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "liquidity_change_from_baseline",
      "dimension_key": "monitoring_change",
      "label": "Liquidity change from baseline",
      "description": "Liquidity change from baseline. Current unrestricted cash minus baseline unrestricted cash.",
      "unit": "currency",
      "formula": "Current unrestricted cash minus baseline unrestricted cash",
      "required_inputs": [
        "Compatible account scope, currency, basis and source quality"
      ],
      "eligibility": "Compare compatible windows, scope, currencies and calculation versions. If comparability fails, expose the reason and no numeric delta.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-liquidity_change_from_baseline-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "dscr_change_from_baseline",
      "dimension_key": "monitoring_change",
      "label": "DSCR change from baseline",
      "description": "DSCR change from baseline. Current DSCR minus baseline DSCR.",
      "unit": "ratio",
      "formula": "Current DSCR minus baseline DSCR",
      "required_inputs": [
        "Comparable complete schedules, windows, methodology and lending scope"
      ],
      "eligibility": "Compare compatible windows, scope, currencies and calculation versions. If comparability fails, expose the reason and no numeric delta.",
      "borrower_types": [
        "business"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-dscr_change_from_baseline-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    },
    {
      "key": "obligation_growth_from_baseline",
      "dimension_key": "monitoring_change",
      "label": "Debt change from baseline",
      "description": "Debt change from baseline. Current total debt minus baseline debt divided by baseline debt.",
      "unit": "ratio",
      "formula": "Current total debt minus baseline debt divided by baseline debt",
      "required_inputs": [
        "Positive baseline debt, compatible reporting scope and verified obligations"
      ],
      "eligibility": "Compare compatible windows, scope, currencies and calculation versions. If comparability fails, expose the reason and no numeric delta.",
      "borrower_types": [
        "business",
        "person"
      ],
      "source_families": [
        "banking",
        "accounting",
        "payroll",
        "lender"
      ],
      "definition_version": "2026-11-06.1",
      "calculation_version": "amlok-obligation_growth_from_baseline-1",
      "window_rule": "Return the actual UTC observation window and as-of date. Point-in-time metrics use dated observations; period, cohort and prior-period requirements above are mandatory. No silent annualization.",
      "unavailable_rule": "Return null with a typed reason when inputs, coverage, entitlement or a valid denominator are missing. Do not replace missing values with zero.",
      "interpretation": "Ratios are fractions, not percentages. Amounts have an explicit currency. A metric is an assessment input, not an institution decision."
    }
  ]
}
