R012 — Hardcoded Rate Constant
Executive Summary
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.
Recommended Remediation¶
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.
Related Rules¶
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.
Related Articles¶
- Hardcoded Formulas in Financial Models — the Knowledge Centre's buyer-facing technical guide to hardcoded values generally, including rate and percentage assumptions.
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.