Source: https://guthlabs.ai/docs/instruments/irr-solver/

instrument / verified-clean

# IRR Solver

The current ledger marks this instrument verified clean within the source-bound verification corpus.

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

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/irr-solver/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/irr-solver/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/irr-solver/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/irr-solver/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Finance, Economics & Business (educational only — never individualized investment, tax, or legal advice)

**Tranche**: tranche-6

**Evidence ID**: t6-021

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The NPV formula is standard for equally spaced cash flows, but the missing period convention, solver controls, root-selection policy, and MIRR definitions prevent an unconditional PASS. Return decimal IRR internally, display percentage separately, and explicitly report no-root and multiple-root cases.

### Formula and scope findings

- The core IRR equation is standard, but the specification does not define the time-period convention: each cash-flow-list index must represent an equal period, with CF_0 at t=0.

- The Newton-Raphson/bisection choice is underspecified: no initial guess, bracketing rule, stopping tolerance, maximum iterations, or fallback behavior is given.

- IRR is not necessarily unique for non-conventional cash flows; the implementation must report all discovered roots or clearly state its root-selection policy.

- The domain constraint r > -1 is required for ordinary real-valued discounting. Rates at or below -100% cause undefined or non-real powers for general integer t.

- MIRR is labeled optional but has no finance convention specified for the finance rate, reinvestment rate, treatment of negative cash flows, or period units.

- The output label 'IRR %' is ambiguous unless the returned decimal rate and percentage display convention are explicitly distinguished.

### Unit assumptions

- Cash flows use one consistent currency unit; the currency itself does not affect IRR.

- The list element at index t is CF_t and represents an equal time interval; CF_0 occurs at time zero.

- The computed rate is per cash-flow-list period. If periods are monthly, annualization is (1+r_monthly)^12-1; if annual, no annualization is applied.

- Newton-Raphson calculations below use a deterministic initial guess and tolerance of 1e-10 on the rate or NPV residual; displayed percentages multiply the decimal rate by 100.

- The valid ordinary real-rate domain is r > -1.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The specification exposes undefined evaluations at r=-1, no-real-solution cash flows, and multiple IRRs; a solver that assumes one finite root or does not guard the 1+r denominator can fail or return a misleading result.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "cash_flows": [
      -1000,
      1100
    ],
    "method": "Newton-Raphson",
    "initial_guess": 0,
    "tolerance": 1e-10,
    "period": "annual"
  },
  "expected_outputs": {
    "irr_decimal": "0.100000000000000",
    "irr_percent": "10.0000000000000%",
    "convergence": "converged"
  },
  "working": "NPV(r) = -1000 + 1100/(1+r). NPV'(r) = -1100/(1+r)^2. Iteration 0: r0=0, NPV=100, NPV'=-1100, so r1=0-100/(-1100)=0.0909090909. Iteration 1: NPV(r1)=-1000+1100/(12/11)=-1000+1008.333333=8.333333; NPV'(r1)=-1100(11/12)^2=-924.305556; r2=0.0909090909-8.333333/(-924.305556)=0.0999248685. Iteration 2 gives r3 approximately 0.0999999949, and the next iteration gives 0.100000000000000. Therefore IRR=10.0000000000000%."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche6/tranche6-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
