Source: https://guthlabs.ai/docs/instruments/npv-calculator/mechanism/

instrument mechanism / verified-clean

# NPV Calculator mechanism

The inspectable method record for NPV Calculator, kept separate from implementation and qualification.

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

## Model scope

The mathematical formula is correct under the stated timing and unit assumptions, but the instrument needs an explicit initial_outlay input and documented period indexing, rate representation, and rate/cash-flow time-unit matching before release. The honest label should also disclose these timing and compounding assumptions in addition to stating that flows and rates are treated as certain.

- The formula is standard only if CF_t represents the cash flow at the end of period t, with t starting at 1, and initial_outlay is a separate time-zero amount. The specification does not define this timing convention.

- initial_outlay appears in the formula but is missing from the listed inputs; it must be an explicit input.

- The specification does not state whether the discount rate is entered as a decimal or percentage, nor that its compounding period must match the cash-flow periods.

## Units and conventions

- The discount rate is entered as a decimal per cash-flow period, such as 0.10 for 10% per year or 0.01 for 1% per month.

- Cash flows are equally spaced and indexed t=1,2,...; initial_outlay occurs at t=0 and is entered as a positive amount that is subtracted.

- The discount rate's time unit and compounding convention match the cash-flow periods; annual rates must not be applied directly to monthly cash flows without conversion.

- Positive cash flows are inflows and negative cash flows are outflows.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "discount_rate": 0.1,
    "cash_flows": [
      110,
      121
    ],
    "initial_outlay": 200,
    "period_unit": "year"
  },
  "expected_outputs": {
    "npv": 0,
    "discounted_cf_table": [
      {
        "period": 1,
        "cash_flow": 110,
        "discounted_cash_flow": 100
      },
      {
        "period": 2,
        "cash_flow": 121,
        "discounted_cash_flow": 100
      }
    ]
  },
  "working": "Rate = 0.10. Period 1: 110/(1+0.10)^1 = 110/1.10 = 100. Period 2: 121/(1+0.10)^2 = 121/1.21 = 100. Sum of discounted cash flows = 100 + 100 = 200. NPV = 200 - 200 initial outlay = 0."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

The input discount_rate=-1 produces zero denominators and therefore undefined NPV and discounted cash flows. The specification does not state input validation, so a plain implementation could incorrectly emit Infinity, NaN, or another non-numeric result. The specification also has no actual piecewise formula branch and leaves the sign convention for initial_outlay potentially ambiguous.

## Other records

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