Financial Modelling Code
Financial Modelling Code
MODELLING CODE
A set of principles for
robust financial modelling
CONTENTS
FOREWORD 1
INTRODUCTION2
MODEL DEFINITION AND PURPOSE 3
Understand the scope of a financial model 3
Determine the goals of your model 3
L AYOUT AND STRUCTURE 4
Plan and assess the workbook layout 4
Make navigation simple 5
Make inputs easy to find 5
USER INTERFACE AND TR ANSPARENCY 6
Include user guidance 6
Avoid duplication 6
Identify and separate forecast or dummy data 7
Don’t hide things 7
CONSISTENCY8
Use consistent formulas 8
ACKNOWLEDGEMENTS
Use consistent placement 9
CL ARIT Y10 Stephen Aldridge – Numeritas
Levi Bailey – White Box Financial
Use clear formatting 10 Rob Bayliss – Grant Thornton
Use clear and meaningful labels 11 Tom Brichieri-Colombi – Mazars
David Colver – Operis
Use clear units 11 Roland Brook – Smith & Williamson
Use a clear sign convention 12 Alexander Carse – John Laing
Use easily understandable worksheet names 12 Mike Copeman – Wolters Kluwer
Daniel Emkes – Harrow School
Use clear range names where appropriate 13 Glen Feechan – needaspreadsheet.com
Document VBA code clearly 13 Joanna Hayes – Amberside Advisors
Simon Hurst – The Knowledge Base
ERROR REDUCTION 14 Michael Hutchens, Modano
Review and test your models 14 Alistair Hynd – RSM
Include checks 14 Adam Lacey – Filtered
Simon Livings – KPMG
Include a master check 15 Adrian Maconick – Finsbury Solutions
Consider including restrictions 15 Sanjay Magecha – Financial Visibility
Patrick O’Beirne – Systems Modelling
CALCUL ATION TECHNIQUES 16 John Tennent – Corporate Edge
Minimise calculation complexity 16 Irfan Umarji – The Royal Society
Build traceable references 16 Paul Wakefield – Paul Wakefield
John Yeldham, Mazars
Avoid hardcoding 17
Avoid circular references 18
For a full list of supporting organisations,
Avoid unnecessary rounding 18 please visit our Financial modelling code
Use VBA and macros sparingly 19 webpage.
© ICAEW 2024.
All rights reserved. If you want to reproduce or redistribute any of the material in this publication, you should
first get ICAEW’s permission in writing. ICAEW will not be liable for any reliance you place on the information
in this publication. You should seek independent advice.
2
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
FOREWORD
Financial modelling is carried out by many chartered accountants
and other professionals and drives decision-making throughout
the business world. Models to analyse simple data, forecast
outcomes, and inform complex strategic choices can be found in
businesses of every size and industry.
Alan Vallance,
Chief Executive of ICAEW
1
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
INTRODUCTION
Spreadsheet financial models are ubiquitous in the business world, and decisions of all sizes are made
on the basis of their results. However, many spreadsheet users are self-taught or have picked up bad
habits along the way. Improper practice, such as a lack of review and oversight, impacts the world
economy; thus, we have created this guidance to support best practice in the sector. Following good
practice should result in a model that is robust, understandable and less likely to contain errors.
Building on our earlier guide, the Twenty principles for good spreadsheet practice, this Financial
modelling code sets out our guidance on what we see as the universal tenets of best practice in the field.
In preparing this Code, we compared and analysed seven organisations’ modelling standards or
methodologies, and took input from over a dozen modelling and professional services organisations.
This document describes the principles that underpin successful financial modelling and which were
agreed upon after much discussion and debate.
A list of contributors to the Code can be found at icaew.com/financialmodelling.
The Code is not intended to be a tick-box compliance tool; rather it is a framework for anyone looking to
set an organisational standard for how modelling is done. It can be used to inform a conversation about
financial modelling and the decisions made in designing a model. Any finance professional looking
to do their own modelling or any business looking to procure financial modelling support can use the
Code to steer their efforts.
This Code should be read in conjunction with the Excel Community’s Twenty principles for good
spreadsheet practice (see box below). Specific cross-references to the Principles are identified where
appropriate. The Code also complements the Excel Community’s other thought leadership publications:
• the Spreadsheet competency framework, to assist in getting the right person with the right skills in
the right role; and
• the How to review a spreadsheet guide, to help reduce spreadsheet risk and increase confidence
in decision-making.
Each section of the Code addresses a particular element of constructing a model and explains its goals.
First, we consider the function of the model as a whole, and the importance of designing its layout to
optimise the user experience. Next, we highlight the critical nature of consistency and clarity, before
discussing some more specific elements of model construction.
No one way of building a model is right for every situation. Thus, a variety of techniques are presented
in each section. Approaches that differ from those listed may be preferable in different contexts. This is
deliberate and the reader should be aware that these alternatives may not always be mutually compatible.
In each section we present specific recommendations ( ), which include several options, representing
generally suitable and widely adopted approaches. We also provide some examples of discouraged
approaches ( ), which should be avoided unless a strong case can be made for a specific circumstance.
With these principles, as with anything else, a degree of common sense should be applied. If a
recommended approach is followed to the extreme, it can create a negative outcome. ICAEW’s
Corporate Finance Faculty has also produced a longer and more detailed publication, entitled
Best Practice Guideline: Financial Modelling, which conforms to this Code and explains how to
carry out financial modelling in a corporate finance transaction context.
2
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
In this section we define the model as referred to in this Code, and outline the essential aims
and key features of a good model.
Determine if a
Definition Financial model
spreadsheet is a
A time-based set of financial calculations within a spreadsheet workbook which aims to
suitable tool.
create a financial forecast based on one or more input set of variables.
To ensure that the model will meet the user’s needs, it is imperative that the user first
understands the nature of a financial model. Although this guidance applies to financial
models built in spreadsheet packages such as Microsoft Excel, many of its lessons are
appropriate for other kinds of spreadsheets, or models built in other software.
All models should have a clear purpose and defined output. It should be evident to all users
Focus on the purposes
what can and cannot be derived from its use. The model should also remain serviceable
of the spreadsheet.
indefinitely as it may need to be updated by multiple users over an extended period of time.
Gaining insight into the range of possible outcomes also makes it possible to ascertain the
risk and potential of the financial forecast. The aim of the builder should be to provide ‘an
PRINCIPLE #8
engine’ through which alternative scenarios and sensitivities can be passed.
Design with
adaptability in mind
Design the model carefully before constructing it, taking into consideration the
to minimise future
various possible outcomes.
manual intervention.
Build flexibly in a single spreadsheet to enable efficient development and
evaluation, and to avoid version control risks presented by multiple workbooks.
3
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
The way a model is laid out directly affects how easy it is to comprehend, and how likely the
user is to use it correctly and efficiently. Good structure can save users time in understanding
the model, freeing them to spend more time on the decisions the model is built to support.
Models should be laid out in such a way that users can understand the flow of logic, and
Structure workbooks
modify it as appropriate. Specifically, models should consist of clear and logical sections
with a clear flow of
arranged in an orderly fashion, and should be structured so users can easily find the
inputs, processes,
components that are relevant to them. Logic should also flow consistently from inputs to
and outputs.
calculations to outputs. This consistency will help users understand the logic flows of
similar items.
Use caution when mixing inputs with outputs, as this can inhibit understanding of
the model’s conclusions.
Include one or more dashboards summarising important outputs that answer the
questions the model was built for.
Dashboards, if used, may include key inputs; although this contradicts the
generally advocated practice of keeping inputs together, it is acceptable if the
input is very clearly identified.
Use identically structured worksheets for each business unit, and highlight any
required differences for the user.
Set up your model to read like a book: with logic flowing from top to bottom
within each worksheet, and from left to right both within each worksheet and
across sheets within a workbook.
If a model must be spread across multiple workbooks, make it clear and obvious
which values are linked to and from other workbooks.
For example, host all such links in a ‘landing page’ contained in the model.
Avoid referencing cells in one workbook from another (this includes any
reference, including formulas, defined names and charts).
4
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
Users should be able to navigate easily around a model. Good workbook layout can support
navigation.
Use frozen panes to help orient the user and keep key labelling in view.
Users should be able to find and manipulate inputs in the model with minimal effort.
The model should also prevent incompatible assumptions from being entered inadvertently
where inputs are related to one another. For example, if an allocation table should sum
to 100%, the final number in the allocation should be computed from the sum of other
allocations. While many of the following recommendations suggest segregated input
worksheets or sections, these are not necessarily composed exclusively of inputs – a common
example is a dashboard worksheet, which may both contain inputs and present results.
Distinguish input cells from other cell types using a defined cell fill colour and/or a
cell border, not just a defined font colour.
5
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
A model is not a static object, but one which the end user will interact with and manipulate.
Creating a model that is easy to use and understand is not simple, but can be done with
appropriate care and attention.
Don’t store documentation in a separate file or email that may become separated
from the model itself.
Creating multiple input locations can lead to a user mistakenly not updating the input
Refer to existing
everywhere it is required. Likewise, if a calculation has been performed once already, then
calculated results instead
referring to the original calculation cell instead of recalculating reduces complexity and the
of reperforming the
possibility of error.
calculation.
Create a unique location for each input value, and structure all calculations that
need the value to refer to that single input location, either directly or through an
appropriate sequence of references.
6
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
Models are frequently built to operate on a ‘rolling basis’, with forecast or budget numbers
steadily replaced by actuals. If this is done haphazardly, forecast numbers can easily be left in
place by accident. Similarly, models are sometimes built with made-up dummy data to help
test calculations before the actual data is available. Accidentally leaving fictitious data in the
final model can cause serious errors.
Create separate entry areas for forecast and actual numbers, with formulas that
select which data is currently in use.
All aspects of a model should be visible and easily accessible. Hidden rows are easily missed,
can be confusing and are easy to change or delete inadvertently. An exception to this rule is
the hiding of empty columns to the right and below the used range, which can be done to aid
workbook navigation.
Group and collapse rows and columns that the user may wish to exclude to aid
readability.
Don’t hide items using white text colour or a non-displaying text format.
7
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
CONSISTENCY
Financial models are frequently complicated. Ensuring consistency can reduce complexity
by tying sections of the model together into chunks, which makes the end user experience
smoother. Components that perform similar tasks should be as similar as possible. This
applies at all levels, including but not limited to formula selection, sets of calculations, and
input and output sections.
Keeping adjacent formulas identical makes it easier to review a model, and reduces the
chance that an error will occur through copy-pasting over an inconsistent formula. This
simplifies the review process as each block of formulas only needs to be inspected once.
Make formulas strictly consistent across formula blocks, so the formula can be
copied and pasted across the block.
Make any inconsistent formulas, if used for a good reason, immediately apparent
to anyone looking at the area (eg, by using prominent formatting or notes).
8
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
If multiple timelines exist in a model it must be clear which timeline relates to each value
Structure worksheets
in a model. A single column should only contain values relating to a given time period
to avoid inconsistent
and be used consistently to represent that time period across any relevant worksheets
logic and layout.
sharing that timeline.
Display the primary timeline in a frozen pane, and place any secondary or tertiary
timelines near each of the values to which they relate so they can be viewed
together without scrolling.
Present any distinction clearly when multiple timelines are included in one axis
(eg, a change of periodicity from monthly periods to semi-annual periods), and
keep formulas consistent along that axis.
Don’t create timelines at different levels of detail on each worksheet, or ones that
do not line up across worksheets.
Don’t use ‘variegated’ timelines in the calculation worksheets, where the timeline
series calculations are interrupted by periodic subtotals.
9
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
CLARITY
Financial models must communicate complex financial information to its user. Prioritising
clarity can help avoid confusion and keep the model as unambiguous as possible.
Formatting should be clear and consistent. It should be easy to understand the purpose of
each value in a model. Appropriate number formats help the user separate different kinds of
data from one another.
Similarly, rounding values in the model for presentation keeps the data neat and easy to read.
The most common mistake in this area is to show too many decimal places, which can both
distract users from more important information and overstate the level of precision achieved.
Include a formatting key in the model to explain the meaning of styles and/
or formats.
10
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
Labels are essential to ensure the end user’s understanding of what is presented, and should
be applied to all data, calculations and outputs.
Ensure that all data, calculations and outputs are labelled visibly, with the labels
placed nearby.
Label each row to the left in a frozen pane that remains visible as the user scrolls
around the workbook.
Use a ‘tree’ to structure multiple label layers, with subsequent columns used for
each layer.
For every value in a model, it should be clear what units of measurement are employed so
the user can easily comprehend the information presented. This includes but is not limited to
currency (including whether in real or nominal terms), factors (tens, hundreds, thousands and
millions), percentage rates (including whether they are annual or matching model periods),
and other units such as tonnes, litres, etc.
Units should be precise enough to mitigate the risk of mixing scales, such as inadvertently
multiplying a price per tonne by a value measured in thousands of tonnes.
Label each value or set of values with the unit that applies to them.
For example, include units for each item in suitable places as determined by
context, such as part of the data label or in a dedicated units range.
Use a specified base unit, and label all values that use alternative units.
11
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
The meaning of a positive or negative value sign for each value in a model must be made clear.
Specify and use a simple and comprehensive sign convention, and label any
inconsistencies.
For example, a model can identify assets, revenues and cash inflows as positive,
and liabilities, expenses and cash outflows as negative; or it could apply a
‘normally positive’ rule, where all inputs are positive by default.
Use the same conventions throughout the model, even in different parts.
Don’t use pure accounting convention (ie, positive for debits and negative
for credits).
Many models extend over a large number of worksheets. Using simple and understandable
worksheet names will help users navigate between worksheets and understand formulas that
contain cross-sheet references.
Use clear and concise names for each worksheet, as opposed to non-descriptive
names like Sheet1, Sheet2, etc.
Use abbreviated names for each worksheet with a clear explanation in an obvious
location within the model.
Don’t use mathematical operators in worksheet names, as these can cause issues
with formula comprehension.
12
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
Range names can be useful to define areas of data for use in calculations; however, some
model developers look to minimise the use of range names in formulas. Either approach
can be effective; however, if range names are used they should be meaningful and easy
to differentiate.
Use range names with care, and make them clear and meaningful.
For example, call a senior debt interest rate input cell SnrIntRate1, not SNR1.
Use defined names for Visual Basic for Applications (VBA) cell and range
references to avoid damaging the integrity of the code when adding or removing
cells later on.
Elsewhere in this document, we advocate using VBA and similar program code sparingly.
VBA code, when used, requires a higher level of technical knowledge to follow and
understand than general spreadsheet content. It is easy for coding to become a black box,
leaving users unable to verify or modify how the code works. Hence, it is important for all
VBA code to be well documented, and such documentation kept up-to-date.
Name VBA elements such as cell ranges, variables and functions clearly and
meaningfully to aid a reviewer’s comprehension.
For example, use ‘LoanRepayPeriod’ instead of ‘LRP’ or ‘Var1’.
Use in-line comments to explain and label the code directly alongside the
code itself.
13
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
ERROR REDUCTION
Errors are clearly undesirable in any financial model. Yet, mistakes are natural and
unavoidable. In this section we look at key ways to prevent errors or reduce their likelihood,
and to detect them when they occur.
Models are often large and complex. Even an expert builder can make errors of logic, typos
Test and review to reduce
and so on. Hence, it is important that a model be subjected to an appropriate level of testing
the risk of error and
and review.
identify inefficiencies.
Consider carefully the possibility and impact of model errors and design, and
implement a review and testing regime consistent with the risk presented.
Build in checks,
Definition Check controls, and alerts
A visible indicator that an input or output falls outside of expected parameters or does not from the outset.
produce the expected result.
Checks are intended to make it clear and obvious to the user when there is a failure in the
tested logic. Models can also include other checks that indicate business issues with the
model’s outputs – such as breach of covenants or making losses – but which aren’t indicative
of an error in the model’s function. Sometimes called alerts, these kinds of checks are also
beneficial and the approaches below can be applied equally to them.
Include an equality check for each set of values that are calculated separately but
ought to be equal, such as a balance worksheet check or an alert that a required
input has been left blank.
Include a tolerance in checks to allow for very small acceptable variations, such as
Excel rounding errors.
14
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
A master check tests whether any checks in the model are in breach and alerts the user if
any are.
Display the result of the master check in the frozen pane on all worksheets so that
it is clearly visible in all areas of the model.
Allowing inputs to be varied without limit might increase model flexibility, but it also increases
the potential for incorrect, internally inconsistent or unreasonable inputs to be chosen by
accident or through a misunderstanding. Placing controls on possible inputs can help a user
use the model appropriately.
Use data validation to reduce the chance of invalid data being entered, either as a
control or with dropdown menus.
Create additional checks and alert messages that warn the user if inappropriate
data has been entered.
Include contextual guidance that instructs the user about appropriate input data
alongside the location of the input.
Don’t use data validation excessively as this makes the model harder to use.
Don’t use data validation with a generic error message and no guidance as to
what data is permitted.
15
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
CALCULATION TECHNIQUES
Financial models necessarily include many formulas and other calculations. Those calculations
should, like the model itself, be error-resistant and comprehensible. This section outlines the
key principles to keep in mind when building calculations.
Models are often large files and can be slow to calculate. Similarly, cells with dense
Use the simplest features,
computations are difficult to review and more likely to contain errors. Where possible,
functions, or formulas
formulas should be built to optimise file size and calculation speed, and should be simple
for the task.
to read, comprehend and review.
Complexity should be minimised appropriately to the circumstances. While hard rules are
sometimes used by modellers, (eg, ‘no more than five operands in any cell’, ‘no line breaks’
or ‘no formulas longer than your thumb’), some computations are easier to follow when these
rules are broken.
Carry out timing and logic calculations separately from the data that they relate to,
usually using the following ‘flags’: ‘1’ / ‘0’ or ‘TRUE’/’FALSE’.
Carry out calculations that scale a value (eg, scaling a monthly figure to match a
quarterly timeline) separately from the calculation of the base value.
Don’t leave calculations set to manual as users may not realise that outputs are
not live.
References should be included in a way that helps users understand formula logic. Reviewing
a formula is considerably easier when the inputs to the formula can be inspected without
moving away from the formula cell itself. It is generally preferable for each occurrence to refer
directly to the ultimate precedent.
Reference nearby cells (ie, cells close to those containing the formulas) so that it
is possible to see the formula, the result and the referenced cells on one screen at
the same time.
Use single-step references that create local references (‘call ups’ or ‘imports’)
within a given worksheet for other formulas that perform calculations on that
worksheet.
This makes references in the calculating formulas easier to read, and makes it
unnecessary to provide worksheet qualifiers (such as ‘Sheet1’).
16
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
Don’t create unnecessary chains of references, such as those that flow through
multiple locations without any calculations performed.
Carry out calculations that scale a value (eg, scaling a monthly figure to match a
quarterly timeline) separately from the calculation of the base value.
The use of hardcoding in formulas depends on context and requires judgement. It can be
acceptable in low-risk cases such as the number of months in a year or hours in a day (eg,
using a hardcoded 24 to convert between hours and days). However, hardcoding should
never be used for values that could foreseeably change during the life of the model (eg, using
24 to increment a staff count). It should also be avoided for values whose meaning would not
be completely clear to the most basic user of the model without a label. For example, while
the conversion factor between feet and metres will always be 3.28084, if this value is not
separated and labelled, its purpose would not be immediately obvious to a model user.
Include as inputs all values that could possibly change in the lifetime of
the model.
Carry out calculations that scale a value (eg, scaling a monthly figure to match a
quarterly timeline) separately from the calculation of the base value.
17
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
Unintentional circular references are usually a sign of an incorrectly made formula, and
spreadsheet packages will warn the user if one is made. Making use of intentional circularity
turns off these warnings, and can lead to errors going unnoticed. Circular calculations are also
opaque to review and often unnecessary.
Manage any cases requiring self-reference with Goal Seek or a copy-paste macro,
and include clear signposting that current values may not be live, such as with a
check or alert message.
Excessive rounding during calculations can compromise accuracy unnecessarily. For most
calculated amounts, rounding is often unnecessary or misleading.
Don’t make ‘balancing’ calculations to ensure that lists of unrounded figures reach
a desired target.
18
ICAEW THOUGHT LEADERSHIP FINANCIAL MODELLING CODE
VBA and equivalent programming code in packages other than Excel are powerful but largely
opaque tools. VBA should be seen as a weapon of last resort in designing a financial model.
It may be sensible to use VBA within the logic flow in exceptional circumstances, such as when
a calculation cannot be done otherwise, a significant time reduction can be achieved or using
VBA makes the logic clearer. VBA may also reasonably be used to automate specific repetitive
model tasks such as printing all worksheets of a large workbook, or testing different scenarios
through a formula-driven model.
Use native Excel functionality, not VBA, to perform all calculations that
affect results.
19
Chartered accountants
ICAEW THOUGHT are talented, ethical and
LEADERSHIP FINANCIAL MODELLING CODE
committed professionals. ICAEW represents
more than 208,000 members and students
around the world. 99 of the top 100 global brands
employ ICAEW Chartered Accountants.*
charteredaccountantsworldwide.com
globalaccountingalliance.com
ICAEW
Chartered Accountants’ Hall
Moorgate Place
London
EC2R 6EA UK
Instagram.com/icaew
ICAEW Excel Community LinkedIn Group
20