Source: https://guthlabs.ai/docs/instruments/apr-vs-apy-converter/mechanism/

instrument mechanism / verified-clean

# APR vs APY Converter mechanism

The inspectable method record for APR vs APY Converter, kept separate from implementation and qualification.

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

## Model scope

The forward formula is mathematically correct under the stated nominal-rate assumptions, but the specification needs the inverse formula, valid-domain constraints, decimal-rate convention, and an explicit definition of difference before release. The honest label should say 'Educational compounding-only estimate; excludes fees and regulatory APR calculations' rather than implying it reproduces every loan APR.

- APY=(1+APR/n)^n-1 is correct only for converting a decimal nominal annual rate (APR) to an effective annual rate (APY) with n equal compounding periods per year.

- The claimed reverse direction, APY to APR, is not specified. The standard inverse is APR=n*((1+APY)^(1/n)-1).

- The output 'difference' is undefined: its sign and whether it means APY-APR, APR-APY, or absolute difference must be specified.

- The formula does not represent all real-world loan APR definitions when APR includes fees, points, mandatory charges, irregular payment timing, or regulatory calculation conventions.

## Units and conventions

- APR and APY are entered and returned as decimal rates: 0.12 means 12%, not 12.

- n is the positive number of equal compounding periods per year; standard use is a positive integer such as 1, 2, 4, 12, or 365.

- The test-vector difference is assumed to mean APY-APR, in decimal-rate units.

- The formula assumes nominal APR with periodic rate APR/n and no fees, taxes, cash-flow irregularities, or intra-period effects.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "direction": "APR_to_APY",
    "APR": 0.12,
    "n": 12
  },
  "expected_outputs": {
    "APY": 0.12682503013196977,
    "difference_APY_minus_APR": 0.00682503013196977
  },
  "working": "APR/n = 0.12/12 = 0.01. APY = (1+0.01)^12 - 1 = 1.01^12 - 1 = 1.1268250301319698 - 1 = 0.12682503013196977. Difference = APY - APR = 0.12682503013196977 - 0.12 = 0.00682503013196977."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

The n=0 input creates division by zero and an undefined exponentiation, so the converter must reject it rather than return a numeric APY. The unit-ambiguity vector also shows that accepting an unlabeled APR value can produce materially different results.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/apr-vs-apy-converter/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/apr-vs-apy-converter/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/apr-vs-apy-converter/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-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
