Skip to content
Request Demo

R012 — Hardcoded Rate Constant

Rule-Reference • — • 3 min read

Audience
Technical Reviewers • Auditors • Model Developers
Last Reviewed
July 2026
Updated
Version 1.0

Executive Summary

R012 (Hardcoded Rate Constant) flags a numeric rate or percentage literal embedded directly within a formula, such as a growth rate written as a percentage operator or a decimal rate literal within a recognized range. Distinct from R001, which catches a hardcode overriding a row's formula pattern, R012 evaluates every formula in the workbook directly for this specific literal shape, regardless of row context, and always assigns medium confidence, since a decimal in the rate-like range may occasionally be a legitimate coefficient rather than a business rate assumption.

Key Takeaways

  • R012 flags a rate or percentage literal embedded directly inside a formula — a growth rate written as a percentage, or a decimal literal in a recognized rate-like range.
  • Every R012 finding carries medium confidence, since a decimal literal in the rate-like range may occasionally be a legitimate mathematical coefficient rather than a business rate assumption.
  • Growth factors greater than 1 (such as a 1.05 multiplier) are deliberately out of this rule's scope, a distinct pattern addressed separately.
  • R012 evaluates every formula directly for this literal shape, independent of row context, unlike R001 and R004, which compare a cell against its row's dominant pattern.

Purpose

R012 detects a numeric rate or percentage value embedded directly inside a formula, rather than referenced from a named input cell — for example, a discount rate written as 0.08 inside a valuation formula, or a growth rate written as 5% inside a revenue projection.

Detection Logic

Every formula in the workbook is scanned directly for two literal shapes: explicit percentage notation (a number immediately followed by %), and a bare decimal literal falling within a range recognized as rate-like. Growth factors greater than 1 — a multiplier such as 1.05 representing 100% plus a rate — are deliberately excluded from this rule's scope; that is a distinct literal pattern addressed separately. Every finding carries medium confidence, since a decimal in the rate-like range is not always a business rate assumption — it can occasionally be a legitimate mathematical coefficient specific to that formula's calculation, and auditor review is required to distinguish the two.

Why It Matters

A rate or percentage assumption — an interest rate, a discount rate, a growth rate — is exactly the kind of value a financial model's reader expects to find in a controlled, changeable input cell, since these figures are frequently the subject of sensitivity analysis and scenario comparison. A rate typed directly into a formula does not respond to changes made to the model's stated rate assumptions elsewhere, and does not appear in a sensitivity table that varies the input cell rather than the embedded literal.

Evidence Produced

A triggered R012 finding's evidence identifies the specific sheet and cell address of the formula, its formula text, and the specific rate-like literal(s) found within it.

Severity

High. Weight 8.5. R012 is not one of the five critical-override rules. Confidence is always medium.

Example

Trigger. A valuation formula reads =NOI/0.08 — a capitalization rate of 8% embedded directly as a decimal literal rather than referenced from a named input cell. R012 flags this cell, naming 0.08 as the embedded rate-like literal.

Non-trigger. The same formula, rewritten as =NOI/$B$12, where B12 is a named input cell holding the capitalization rate assumption. R012 does not fire, since no rate-like literal is embedded in the formula itself.

Extract the embedded rate or percentage literal into a named input cell on the assumptions tab, and update the formula to reference that cell instead, following the same general remediation pattern as any hardcoded assumption.

R012 shares the Structural taxonomy category with the other Structural-category rules published in the Rule Reference, and shares its underlying concern with R001 — Hardcoded Cells — see the Rule Taxonomy page for the full category membership.

Version History

No version-specific changes to R012's severity, weight, or category are recorded as of engine version 2.1.0. This section will be updated in the same edit as any future change to the rule's declared attributes.

How OXXON tests thisRun a free structural check with FMAE

Frequently Asked Questions

What does FMAE rule R012 check for?

A numeric rate or percentage value written directly into a formula — either explicit percentage notation (such as 5%) or a bare decimal literal within a range recognized as rate-like (such as 0.08) — rather than referenced from a named input cell.

Why is R012's confidence always medium rather than high?

Because a decimal literal within the recognized rate-like range is not always a business rate assumption — it can occasionally be a legitimate mathematical coefficient specific to the formula's calculation. Every finding is flagged for review rather than asserted as a confirmed defect.

Does R012 catch growth multipliers like 1.05?

No. Growth factors greater than 1 are deliberately out of scope for R012 — they represent a distinct literal pattern (a multiplier rather than a rate) addressed by a separate check, not this rule.

How is R012 different from R001?

R001 flags a hardcode specifically because it overrides an otherwise-consistent row formula pattern. R012 evaluates every formula in the workbook directly for a rate-shaped literal, regardless of whether the surrounding row has a consistent pattern at all.

Related Articles

FMAE Rule Taxonomy

Every rule in the FMAE structural rule pack declares a category attribute at the point it is defined in source — this is not a classification imposed on the rules afterward for documentation purposes, it is the classification the engine itself uses. Six categories cover all 26 rules — Structural (18 rules), Assumptions Governance (1), Integrity Controls (2), Structural Hygiene (1), Aggregation Logic (1), and Model Governance (3). This page publishes that taxonomy as the FMAE equivalent of a control catalog's classification scheme, cross-linked to the Rule Reference page for each member rule.

Finding Data Model & Confidence

Every FMAE finding carries the same fixed structure — which rule triggered it and that rule's identity at the time it ran, its evidence, a narrative explanation, and a confidence label of high, medium, or low. Confidence is a deterministic categorical label derived from how strongly a row's cells agree on a pattern, not a machine-learning probability estimate. Stating this plainly matters, since describing FMAE's confidence as AI-derived or probabilistic would overstate what the engine actually does.

R001 — Hardcoded Cells

R001 (Hardcoded Cells) flags a formula cell that has been overridden by a typed numeric value, in a row where the surrounding cells otherwise share a clear, dominant formula pattern. It is critical severity, carries the highest weight of any FMAE rule (15.0), and is one of five critical-override rules under the SM-2.0 scoring methodology — meaning a single R001 finding caps the model's overall letter grade below A or B regardless of its numeric score.

Hardcoded Formulas in Financial Models

A hardcoded value in a financial model is a fixed numeric value embedded directly within a formula cell, rather than being referenced from a dedicated input or assumption cell. Hardcoded values in formula cells are a structural risk because they do not update when the model's assumptions change, they are invisible during normal model navigation, and they cannot be changed consistently through the model's standard input interface. The ICAEW Financial Modelling Code and the FAST Standard both explicitly prohibit hardcoded values within formulas, requiring that all input values be entered in a dedicated input cell and referenced by formulas rather than embedded within them.

Request Demo