← BACK TO PLATFORM
Tool reliability testing · published

DCF / NPV Tool Test Battery

The input battery used internally to test the Afrimintel DCF / NPV tool. Each test specifies inputs, expected behaviour, and pre-specified failure modes. The battery itself is published — not just the results — so that any user, partner, or external reviewer can run the same tests and verify the tool independently.

v1.0 · April 2026 15 tests · 5 categories Anchored to Kamoa-Kakula Editorial responsibility: Nikesh Patel

Cycle 1 first-cycle results — dual-column reference DCF + platform tool reconciliation against published Kakula DFS targets — are under editorial review and publish at a companion URL when sign-off completes. The v1.1 amendment to this spec (adding LoM cost-trajectory specification surfaced by cycle 1) is similarly drafted and under review; it integrates into this page on approval.


Why this exists

The Afrimintel DCF / NPV tool produces economic outputs that users will compare against published technical reports (NI 43-101, JORC, SAMREC). Sophisticated users will form a view of the tool's reliability based on whether its outputs are reproducible, monotonic, sensitive to inputs in expected directions, and reconcilable to authoritative published economic studies.

Under the Afrimintel Quality Standard, tool outputs are Derived. Derived outputs require a published methodology and a stated confidence range. This battery is the published methodology for testing whether the tool's Derived outputs behave as the underlying economic logic implies they should.

A tool that passes a published battery is more credible than a tool that doesn't have one. A platform that publishes the battery — including the failure modes it pre-specifies — signals a discipline that user trust depends on.

This battery is intentionally a foundation. It covers the test categories that matter most for a Day 30 commercial-pilot launch: monotonicity, boundary, and reconciliation against published authoritative DCFs. By design it does not yet cover the full surface of mining-finance adversarial testing. The deferred roadmap commits to expanding the battery in Q3 2026 under independent reviewer engagement, scoped for paid reproduction and co-authored expansion.

Tool scope

The Afrimintel DCF / NPV tool, as of Day 30 deployment, accepts the following standard mining-finance inputs and returns the following standard outputs.

Inputs

InputUnitNotes
Commodity price (long-term)USD per unit (lb / oz / tonne)Real, excluding inflation
Resource tonnagemillion tonnesAt the cut-off grade applied
Average grade% or g/tAt the cut-off grade applied
Recovery rate%Process plant recovery to concentrate
Mine lifeyearsOperating years at steady state
Annual production ratemillion tonnes per annumThroughput
OPEX per tonne oreUSDAll-in operating cost per tonne milled
Initial CAPEXUSD millionsPre-production capital
Sustaining CAPEXUSD millions per annumAs stated in published studies
Discount rate%Real, after-tax basis
Effective tax rate%Combined corporate income tax + royalty + state participation
Mine ramp-up profileyearsTime to steady-state production

Outputs

OutputUnit
After-tax NPVUSD millions, at the stated discount rate
After-tax IRR%
Payback periodyears from first commercial production
Sensitivity tableNPV across a defined ± range of price and discount rate

Known limitations of the Day 30 tool

The following are not currently handled by the Day 30 DCF tool. Each is published here so users know the boundary of what the tool can defensibly evaluate. The Q3 2026 paid-reviewer cycle will assess whether and how each should be added.

These limitations are honest scope statements, not bugs. A Day 30 commercial-pilot tool that handles 80% of the use cases at 90% accuracy with known boundaries is more credible than a Day 30 tool that claims comprehensive coverage and quietly fails on edge cases.

Test framework

The battery is organised around five categories of test, each addressing a different failure mode in DCF tool design.

Category 1 — Monotonicity tests

A DCF output should respond to inputs in directionally expected ways. Increasing the discount rate should decrease NPV. Increasing commodity price should increase NPV. Increasing OPEX should decrease NPV. These are properties of the underlying mathematics; if they fail, the tool's logic is structurally wrong.

Category 2 — Boundary tests

A DCF should handle edge-case inputs without producing nonsensical outputs. Zero discount rate. Negative cash flow years. Extreme high/low commodity prices. Mine life of one year. The tool should either produce a defensible output or refuse the input gracefully, not return a value that looks plausible but is computed incorrectly.

Category 3 — Sensitivity tests

Small input perturbations should produce small output changes. A 1% change in commodity price should produce roughly the elasticity-implied change in NPV. If a 1% input change produces a 50% output swing, the tool has hidden non-linearities that need to be understood.

Category 4 — Reconciliation tests

The tool should reproduce, within tolerance, the after-tax NPV figures published in authoritative technical reports when given the same inputs. This is the strongest test — it says the tool's output matches the considered judgment of the qualified persons who signed the technical report.

Category 5 — Pre-specified failure mode tests

Each test above also includes a hypothesis about what the tool would do if the underlying logic were wrong. This converts the battery from "let's plug in numbers and see" to "let's verify our hypotheses about how the tool should behave." If a test fails, the failure mode tells us what part of the logic is broken.

Reference asset for reconciliation

Kamoa-Kakula Copper Complex, DRC. Operated by Ivanhoe Mines (39.6%), Zijin Mining (39.6%), Crystal River Global (0.8%), DRC Government (20%). Multiple published economic studies provide reconciliation targets at varying scopes:

StudyScopeNPV @ 8%IRRMine life
Kakula DFS (2020)Phase 1 — Kakula Mine, 6 MtpaUSD 5.5bn77.0%21 years
Kakula-Kansoko PFS (2020)Phase 1-2 — 7.6 Mtpa with KansokoUSD 6.6bn69%37 years
Kamoa-Kakula 2020 PEAIntegrated 19 MtpaUSD 11.1bn56.2%40+ years
Kamoa-Kakula 2023 IDP — PFSPhase 3-4 expansion, 19.2 MtpaUSD 19.1bn33 years
Kamoa-Kakula 2023 IDP — PEALoM extension to 42 yearsUSD 20.2bn42 years

Five published reconciliation targets, spanning a 4× range of NPV ($5.5bn to $20.2bn) and a 2× range of mine life (21 years to 42 years). Day 30 reconciliation tests use Kakula DFS (2020) as the primary anchor: smallest scope, simplest single-mine economics, highest IRR, no by-product credit issue, and the published economic model is publicly available as part of the September 2020 technical report.

Copper price assumption in the 2020 DFS: USD 3.10/lb, real, excluding inflation. Cash cost USD 0.48/lb in first 5 years of operation. Initial capital cost USD 0.65bn from July 2020. Resource: 110 Mt at 5.22% Cu (life-of-mine production scenario, 2020 DFS).

The battery — test specification

C1.1 — Discount rate monotonicity

Inputs

Kakula DFS reference inputs (110 Mt at 5.22% Cu, $3.10/lb Cu, $0.48/lb cash cost, $0.65bn initial capex, 21-year mine life). Discount rate varied from 0% to 20% in 1% increments.

Expected behaviour

NPV decreases monotonically as discount rate increases. At 0% discount rate, NPV equals the simple sum of nominal after-tax cash flows. At a discount rate above the IRR (77%), NPV becomes negative.

Pre-specified failure mode

If NPV does not decrease monotonically, the discounting logic is inverted or non-uniform across years. If NPV at 0% does not equal the sum of after-tax cash flows, the tool is applying discounting inconsistently. If NPV remains positive at discount rates above the IRR, the IRR calculation is wrong.

Pass criterion

NPV monotonically declines across all 21 increments. NPV at 8% within 5% of published USD 5.5bn target.

C1.2 — Commodity price monotonicity

Inputs

Kakula DFS inputs. Copper price varied from $1.50/lb to $5.00/lb in $0.10/lb increments.

Expected behaviour

NPV increases monotonically as price increases. The relationship is approximately linear across the range, with NPV tracing out a curve whose slope reflects the volume of metal being sold.

Pre-specified failure mode

Non-monotonic NPV indicates an error in how the tool computes revenue (revenue = price × tonnes × grade × recovery), or how revenue feeds the cash flow ladder. A non-linear NPV-price curve indicates the tool may be applying a price-dependent royalty or tax incorrectly.

Pass criterion

Monotonic. NPV at $3.10/lb within 5% of USD 5.5bn published target.

C1.3 — OPEX monotonicity

Inputs

Kakula DFS inputs. OPEX (cash cost) varied from $0.30/lb to $2.00/lb in $0.10/lb increments.

Expected behaviour

NPV decreases as OPEX increases. The relationship is linear.

Pre-specified failure mode

Non-monotonic NPV indicates revenue and cost are being applied in the wrong order, or cost is being deducted twice. A discontinuity at any point indicates a step function in cost treatment that wasn't documented.

Pass criterion

Monotonic. Linear relationship.

C2.1 — Zero-discount-rate boundary

Inputs

Kakula DFS inputs, discount rate = 0%.

Expected behaviour

NPV at zero discount rate equals the simple sum of after-tax cash flows over the mine life. This is the upper bound on any defensible NPV.

Pre-specified failure mode

Tool refuses zero discount → tool has hard-coded a minimum discount rate, which is acceptable but should be documented. NPV at 0% is less than NPV at 8% → tool's discounting is genuinely inverted, structural error. NPV at 0% is implausibly large → cash flow projection is over-stated, possibly through double-counting or perpetuity treatment.

Pass criterion

Tool returns a positive value greater than published USD 5.5bn (which was at 8% discount), and the value is consistent with the implied undiscounted cash flow.

C2.2 — High discount rate boundary

Inputs

Kakula DFS inputs. Discount rate = 50%.

Expected behaviour

NPV at 50% should be substantially below published $5.5bn target (which was at 8%). NPV at 50% should still be positive because 50% is below the published 77% IRR.

Pre-specified failure mode

NPV unchanged or larger than at 8% → discount rate is being applied incorrectly. Tool returns infinity or NaN → numerical instability at high rates.

Pass criterion

NPV positive but materially smaller than at 8%. NPV at the published IRR (77%) should approximate zero.

C2.3 — Negative cash flow year handling

Inputs

Kakula DFS inputs, with one year of negative cash flow injected into Year 5 (e.g., −$1bn one-time event).

Expected behaviour

NPV decreases by approximately $1bn / 1.08^5 ≈ $680m. The decrease should be exactly the discounted negative cash flow.

Pre-specified failure mode

NPV decreases by less than the discounted amount → tool may be capping negative cash flows at zero (an error). NPV decreases by more than the undiscounted amount → tool may be double-counting the loss.

Pass criterion

NPV decrease within 5% of the discounted-cash-flow expectation.

C2.4 — Single-year mine life boundary

Inputs

Kakula DFS inputs, mine life forced to 1 year (with all production compressed into year 1).

Expected behaviour

NPV approximately equals (Year 1 cash flow) discounted by one year, minus initial capex. This is a degenerate case; the tool should handle it without numerical issues.

Pre-specified failure mode

Tool errors out → tool has hard-coded minimum mine life. NPV implausibly large → cash flow being annuitised over phantom years. NPV implausibly small or negative → capex being applied incorrectly.

Pass criterion

Tool returns a sensible positive or negative value with the magnitude consistent with one-year cash flow minus capex.

C3.1 — Price elasticity

Inputs

Kakula DFS reference inputs at $3.10/lb Cu vs $3.13/lb Cu (1% increase).

Expected behaviour

NPV should increase by approximately 1.5–3% (elasticity is usually 1.5–3 in mining DCFs, depending on the cost structure — high-margin operations have higher elasticity).

Pre-specified failure mode

Elasticity > 5 indicates the tool is double-counting price somewhere. Elasticity < 0.5 indicates costs are being scaled with price (which is wrong unless explicitly modelled). Elasticity = 0 indicates price isn't actually flowing through.

Pass criterion

Elasticity in the 1.5–3 range for a high-margin operation like Kakula. Document the actual elasticity for future reference.

C3.2 — Discount rate elasticity

Inputs

Kakula DFS reference inputs at 8% vs 9% discount rate.

Expected behaviour

NPV decrease in the range of 8–15%, depending on duration of cash flows.

Pre-specified failure mode

Elasticity outside this range indicates the tool's duration calculation is wrong, or cash flow timing is mis-modelled.

Pass criterion

Documented elasticity in range. Future runs compare against this baseline.

C4.1 — Kakula DFS reconciliation

Inputs

All Kakula DFS published inputs as listed above.

Expected behaviour

Tool returns NPV at 8% discount within 5% of published USD 5.5bn (i.e., USD 5.225bn to USD 5.775bn). IRR within 2 percentage points of published 77.0%.

Pre-specified failure mode

Tool understates NPV by more than 5% → tool is missing a revenue source (likely sulphuric acid by-product credit, which the published study includes but the Day 30 tool does not handle — this is an expected, documented gap). Tool overstates NPV → tool is missing a cost or tax element.

Pass criterion

Tool returns NPV within 10% of published USD 5.5bn. The expected understatement of approximately 3–5% due to missing sulphuric acid by-product credit is acceptable and documented.

C4.2 — Kakula-Kansoko PFS reconciliation

Inputs

Kakula-Kansoko PFS published inputs (7.6 Mtpa with Kansoko addition).

Expected behaviour

Tool returns NPV at 8% within 10% of published USD 6.6bn. The wider tolerance reflects the integration of two mines, which the Day 30 tool models as a single-asset.

Pass criterion

NPV within 10% of USD 6.6bn target, or the gap is explained by a documented limitation.

C4.3 — Kamoa-Kakula 2020 PEA reconciliation

Inputs

Kamoa-Kakula 2020 PEA published inputs (integrated 19 Mtpa, 40+ year mine life).

Expected behaviour

Tool returns NPV at 8% within 15% of published USD 11.1bn. The wider tolerance reflects the integrated nature of the asset, multi-stage capex, and the PEA's inclusion of inferred resources.

Pass criterion

NPV within 15% of USD 11.1bn target, or the gap is explained by a documented limitation (likely the multi-stage capex modelling and by-product credits).

C4.4 — Kamoa-Kakula 2023 IDP PFS reconciliation

Inputs

Kamoa-Kakula 2023 IDP PFS published inputs (Phase 3-4 expansion, 33-year mine life, $3.04bn Phase 3 capex separate from earlier capex — capex figure cited from 2023 IDP, not yet independently re-verified against the 31 March 2026 NI 43-101). Reviewers should treat the capex input as a 2023-vintage citation pending re-walk; the test's pass criterion is anchored to the $19.1bn NPV target, not to the capex input directly.

Expected behaviour

Tool returns NPV at 8% within 20% of published USD 19.1bn. The wider tolerance reflects multi-phase capex (Day 30 tool limitation), longer mine life, and integrated complex modelling.

Pass criterion

NPV within 20% of USD 19.1bn target, OR the gap is explained by documented multi-phase capex limitation. If the tool's output is materially below the target due to inability to model phased capex correctly, this is an expected, documented gap.

C5.1 — Pre-specified failure mode: missing by-product credits

Hypothesis

The Day 30 tool, by treating Kakula as single-commodity Cu, will systematically understate NPV relative to the published economic studies which include sulphuric acid by-product revenue.

Expected behaviour

Across reconciliation tests C4.1 through C4.4, the tool's NPV outputs should be 3–5% below the published targets, with the gap roughly proportional to the by-product revenue share documented in the published studies.

Pass criterion

Tool understates NPV by an amount consistent with the by-product gap. If the gap is materially different (e.g. 15% understatement), the failure has another cause that needs investigation.

C5.2 — Pre-specified failure mode: tax regime mishandling

Hypothesis

The Day 30 tool uses a single effective tax rate input rather than disaggregating royalty + corporate tax + state participation. If the user enters the wrong effective rate, NPV will be off by the magnitude of the tax error.

Expected behaviour

Reconciliation requires the user to compute the DRC effective rate correctly. With the published assumption of a 30% corporate tax + 3.5% copper royalty + 20% DRC state participation, the effective burden is non-trivial to compute.

Pass criterion

Document the effective tax rate used in each reconciliation test. If tool output diverges materially from published, check whether the divergence is explained by tax-rate input differences before concluding the tool itself is wrong.

Independent reproducibility

Anyone — a user, a reviewer, an acquirer's DD team, the Q3 paid reviewer — can run this battery using only public data:

Reproduction of any individual test should produce results consistent with the first-cycle results that publish at this URL when editorial sign-off completes. Any divergence is itself a useful finding and should be reported via the Field Corrections programme or to nikesh@afrimintel.com.

What this battery does NOT cover

In the spirit of honest scope statement, the following test categories are explicitly NOT covered in the Day 30 v1.0 battery and are scheduled for the Q3 2026 expansion:

The Q3 paid-reviewer cycle is scoped to audit, expand, and reproduce this battery, with the reviewer's name and credentials published alongside the expanded version.

Change log

v1.0 — April 2026. Foundation battery. 15 tests across 5 categories. Kamoa-Kakula reference asset with five published reconciliation targets. Day 30 tool limitations documented. First-cycle results pending publication.

v1.1 — May 2026 (drafted, under editorial review). Cost-trajectory amendment. Adds LoM-average cash cost as required reconciliation input following the cycle-1 finding that the spec's first-five-years cash cost cannot be used as a LoM constant for reconciliation. Test C4.1 input specification updated. Test C5.1 hypothesis revised. Cycle 2 scope section added.

v2.0 — Scheduled Q3 2026. Expansion under independent reviewer engagement, scoped for paid reproduction and co-authored expansion of the test battery. Categories to be expanded based on reviewer scope. Reviewer name and credentials published when engagement is finalised.

Editorial responsibility: Nikesh Patel, Honorary Consul of Rwanda in Mauritius. nikesh@afrimintel.com. The v1.1 amendment integrates into this page when editorial sign-off completes; the cycle 1 first-cycle results companion document publishes at a companion URL on the same trigger. Until then, this v1.0 spec is the citable artifact. Material errors found in this spec are corrected per the Quality Standard's 7-business-day correction-velocity SLA; new publications and amendments follow editorial review timelines, not the correction SLA.