{
  "tool_id": "art-215-reg-z-appendix-j-apr",
  "note": "golden_hash is empty until first golden-parity.test.mjs --update. Vectors derived from Reg Z Appendix J general actuarial equation. Vector 1-2: regular monthly (no odd days). Vector 3: irregular first period with 15 odd days (30-day unit period).",
  "vectors": [
    {
      "name": "appendix_j_24mo_regular",
      "description": "Appendix J conformance: $6,000 loan, 24 monthly payments of $282.43. Actuarial APR ~12%.",
      "policy_parameters": {
        "loan_amount": 6000,
        "payment_amount": 282.43,
        "num_payments": 24,
        "periods_per_year": 12
      },
      "output_payload": {
        "apr_pct": 11.9961,
        "periodic_rate": 0.009997,
        "periods_per_year": 12,
        "num_payments": 24,
        "advance_total": 6000,
        "payment_total": 6778.32,
        "finance_charge": 778.32,
        "iterations": 3,
        "converged": true,
        "regulatory_basis": "Reg Z Appendix J, 12 CFR 1026 Appendix J (general actuarial equation)",
        "note": "APR computed via Appendix J actuarial method. Odd-days fraction included when advances/payments supplied with fractional periods_from_consummation. Input APOR separately for QM spread test."
      },
      "golden_hash": "6e184ce023c543616c31dd721378d732ca8b57eb2c9e091e3ee93bdd25feeb2f"
    },
    {
      "name": "appendix_j_360mo_regular",
      "description": "30-year first-lien mortgage: $400,000 loan, 360 monthly payments of $2,528.27. APR = 6.5%.",
      "policy_parameters": {
        "loan_amount": 400000,
        "payment_amount": 2528.27,
        "num_payments": 360,
        "periods_per_year": 12
      },
      "output_payload": {
        "apr_pct": 6.5,
        "periodic_rate": 0.005417,
        "periods_per_year": 12,
        "num_payments": 360,
        "advance_total": 400000,
        "payment_total": 910177.2,
        "finance_charge": 510177.2,
        "iterations": 5,
        "converged": true,
        "regulatory_basis": "Reg Z Appendix J, 12 CFR 1026 Appendix J (general actuarial equation)",
        "note": "APR computed via Appendix J actuarial method. Odd-days fraction included when advances/payments supplied with fractional periods_from_consummation. Input APOR separately for QM spread test."
      },
      "golden_hash": "73a12c6d6e2de8ef14434bff82df79dd0499ccbdfcfc563b7baab0421318e5a7"
    },
    {
      "name": "appendix_j_odd_days_15",
      "description": "Irregular first period: $200,000 loan, 360 monthly payments, 15 odd days (unit period = 30 days). Odd-days fraction u = 0.5 shifts payment times.",
      "policy_parameters": {
        "loan_amount": 200000,
        "payment_amount": 1264.14,
        "num_payments": 360,
        "periods_per_year": 12,
        "odd_days": 15,
        "unit_period_days": 30
      },
      "output_payload": {
        "apr_pct": 6.4742,
        "periodic_rate": 0.005395,
        "periods_per_year": 12,
        "num_payments": 360,
        "advance_total": 200000,
        "payment_total": 455090.4,
        "finance_charge": 255090.4,
        "iterations": 5,
        "converged": true,
        "regulatory_basis": "Reg Z Appendix J, 12 CFR 1026 Appendix J (general actuarial equation)",
        "note": "APR computed via Appendix J actuarial method. Odd-days fraction included when advances/payments supplied with fractional periods_from_consummation. Input APOR separately for QM spread test."
      },
      "golden_hash": "84c5db85b49320b92d8e8f69a1898a727eed8814828c4df25491d16b5917603a"
    }
  ]
}
