Source: https://guthlabs.ai/docs/instruments/effective-annual-rate-comparator-multiple-loans-cards/mechanism/

instrument mechanism / verified-clean

# Effective Annual Rate Comparator (Multiple Loans/Cards) mechanism

The inspectable method record for Effective Annual Rate Comparator (Multiple Loans/Cards), kept separate from implementation and qualification.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Model scope

The educational estimate label is appropriate, but the instrument cannot honestly claim a unique true-cost comparison until principal, fee timing, payment schedule, payment frequency, nominal-versus-effective rate semantics, and partial-period treatment are specified. The third vector uses a stated prorated-period convention for the annually compounded six-month offer solely to demonstrate the unit-conversion ambiguity; a production implementation must choose and document one convention or use dated cash-flow IRR.

- EAR=(1+r/n)^n-1 is correct only when r is a nominal annual rate, n is the number of equal compounding periods per year, and the rate is compounded periodically.

- The specification does not define how origination fees are converted into effective cost. True fee-inclusive cost generally requires an IRR/APR calculation from dated cash flows, not simply adding or amortizing the fee arithmetically.

- The inputs omit principal amount, fee timing, repayment schedule, payment frequency, and whether the quoted rate is nominal or already effective; therefore a unique true-cost ranking cannot be computed.

- The term is listed as an input but the stated EAR formula does not use it. Term is required for fee-inclusive annualization and cash-flow-based effective cost.

## Units and conventions

- r is a decimal nominal annual rate, so 12% is entered as 0.12.

- n is a positive integer representing compounding periods per year.

- Term is measured in years; a six-month term is 0.5 years.

- For the test vectors, principal is the amount stated, origination fees are paid upfront, and repayment is a single bullet payment at maturity.

- For the test vectors, fee-inclusive effective annual cost is annualized from net proceeds received: (maturity repayment divided by principal minus upfront fee) raised to the power 1/term, minus 1.

- All rates in expected outputs are decimal fractions, not percentage-point values.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "offers": [
      {
        "id": "A",
        "principal": 10000,
        "nominal_annual_rate": 0.12,
        "origination_fee": 0,
        "term_years": 1,
        "compounding_periods_per_year": 12
      },
      {
        "id": "B",
        "principal": 10000,
        "nominal_annual_rate": 0.118,
        "origination_fee": 0,
        "term_years": 1,
        "compounding_periods_per_year": 4
      }
    ]
  },
  "expected_outputs": {
    "ranked_by_ear": [
      "B",
      "A"
    ],
    "offers": {
      "A": {
        "ear": 0.12682503
      },
      "B": {
        "ear": 0.123324947
      }
    }
  },
  "working": "A: (1+0.12/12)^12-1 = (1.01)^12-1 = 1.126825030-1 = 0.126825030, or 12.682503%. B: (1+0.118/4)^4-1 = (1.0295)^4-1 = 1.123324947-1 = 0.123324947, or 12.332495%. Therefore B ranks below A."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

A zero-principal offer makes fee amortization undefined, so the instrument must reject it. The specification also leaves fee sign and fee-amortization basis ambiguous, producing materially different effective costs.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/effective-annual-rate-comparator-multiple-loans-cards/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/effective-annual-rate-comparator-multiple-loans-cards/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/effective-annual-rate-comparator-multiple-loans-cards/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
