Source: https://guthlabs.ai/docs/instruments/compound-interest-visualizer/mechanism/

instrument mechanism / verified-clean

# Compound Interest Visualizer mechanism

The inspectable method record for Compound Interest Visualizer, kept separate from implementation and qualification.

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

## Model scope

The core formula is correct under the stated unit and timing assumptions, but the spec is ambiguous about those assumptions and omits formulas for the split and year-by-year table. The zero-rate case requires an explicit implementation branch before this can receive PASS.

- The formula is standard for an ordinary annuity only when PMT is made at the end of each compounding period; contribution timing is not specified.

- The formula assumes r is a nominal annual rate expressed as a decimal and n is the number of compounding periods per year; the spec does not state either unit convention.

- The formula divides by r/n and is undefined when r=0; a zero-rate branch or limiting formula FV=PV+PMT*n*t is required.

- No formula is supplied for the claimed contributions-versus-interest split.

- No recurrence or aggregation rule is supplied for the claimed year-by-year table, especially when compounding frequency is not annual.

## Units and conventions

- PV and PMT use the same currency units.

- r is a nominal annual rate as a decimal: 6% is entered as 0.06, not 6.

- n is a positive integer number of compounding periods per year.

- t is measured in years, so the total number of periods is n*t and should be an integer for a conventional periodic-contribution calculation.

- PMT is paid at the end of each compounding period.

- The split treats invested funds as PV plus all PMT contributions, with interest equal to FV minus invested funds.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "principal": 10000,
    "contribution": 200,
    "rate": 0.05,
    "years": 3,
    "compounding_freq": 1
  },
  "expected_outputs": {
    "FV": 12206.75,
    "invested_total": 10600,
    "interest": 1606.75
  },
  "working": "q=r/n=0.05/1=0.05. Periods=n*t=1*3=3. Growth factor=(1+q)^periods=1.05^3=1.157625. Principal growth=10000*1.157625=11576.25. Contribution factor=(1.157625-1)/0.05=0.157625/0.05=3.1525. Contribution growth=200*3.1525=630.50. FV=11576.25+630.50=12206.75. Invested total=10000+(200*3)=10600. Interest=12206.75-10600=1606.75."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

The stated formula is undefined when compounding_freq = 0 and is also literally undefined at rate = 0 unless the implementation supplies the zero-rate limiting branch. Rate-unit ambiguity can additionally change the result from 1150 to 6100 for the same displayed input 5.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/compound-interest-visualizer/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/compound-interest-visualizer/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/compound-interest-visualizer/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`
