Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
Advanced Dynamic Financial Modeling
Carl Seidman
Seidman Financial
CPA/CFF, CIRA, CFE, CGMA, AM
How does this resonate with you?
Why Many Financial Models Fail
Today’s Model Requirements The Model ‘Evolution’
▪ Specific objectives and usage
▪ Limited maintenance
▪ Contained data
▪ Limited time periods
▪ Generally requires:
o Less-frequent updates
o Less flexibility
o Fewer dynamics
▪ Broad scope and use
▪ Ongoing maintenance
▪ Growing data sets
▪ Evolving time periods
▪ Generally requires:
o More-frequent updates
o More flexibility
o Greater dynamics
Excel is an extremely
flexible tool however…
Intentional
Scale
Incorporates
New
Data Easily
Manual
Involvement
Seamless
Agile
Updates
Intentional
Scale
Incorporates
New
Data Easily
Seamless
Agile
Updates
Manual
Involvement
Dynamic Modeling
Building robust yet flexible
models that:
✓ Scales intentionally
✓ Seamlessly agile updates
✓ Incorporates new data easily
✓ Minimizes manual
involvement
Excel is an extremely
flexible tool however…
Intentional
Scale
Incorporates
New
Data Easily
Manual
Involvement
Seamless
Agile
Updates
Intentional
Scale
Incorporates
New
Data Easily
Seamless
Agile
Updates
Manual
Involvement
Dynamic Modeling
Building robust yet flexible
models that can
✓ Scales intentionally
Excel is an extremely
flexible tool however…
Intentional
Scale
Incorporates
New
Data Easily
Manual
Involvement
Seamless
Agile
Updates
Intentional
Scale
Incorporates
New
Data Easily
Seamless
Agile
Updates
Manual
Involvement
Dynamic Modeling
Building robust yet flexible
models that:
✓ Scales intentionally
✓ Seamlessly agile updates
Excel is an extremely
flexible tool however…
Intentional
Scale
Incorporates
New
Data Easily
Manual
Involvement
Seamless
Agile
Updates
Intentional
Scale
Incorporates
New
Data Easily
Seamless
Agile
Updates
Manual
Involvement
Dynamic Modeling
Building robust yet flexible
models that:
✓ Scales intentionally
✓ Seamlessly agile updates
✓ Incorporates new data easily
Excel is an extremely
flexible tool however…
Intentional
Scale
Incorporates
New
Data Easily
Manual
Involvement
Seamless
Agile
Updates
Intentional
Scale
Incorporates
New
Data Easily
Seamless
Agile
Updates
Manual
Involvement
Dynamic Modeling
Building robust yet flexible
models that:
✓ Scales intentionally
✓ Seamlessly agile updates
✓ Incorporates new data easily
✓ Minimizes manual
involvement
The objective of financial
modeling isn’t building a model
The objective is to provide
end-users great intelligence
So they can make better decisions
How might the
model need to
change?
What new data is
likely to enter
the model?
What degree of
dynamics/flexibility
is necessary?
How might the
data need to be
presented?(or is too much)?
ExcelSaaS
Platform
How Dynamic Functionality Differs
▪ OFFSET(
▪ INDIRECT(
▪ INDEX( + MATCH(
▪ SEQUENCE(
▪ UNIQUE(
▪ FILTER(
▪ SORT(
▪ SORTBY(
▪ RANDARRAY(
▪ DYNAMIC (#) ARRAYS
▪ Dynamic Tables
▪ Dynamic References
▪ Dynamic Ranges
▪ Dynamic Arrays
Excel Dynamic Functionality
DYNAMIC TABLES
Allows for the dynamic referencing
of expanding and contracting data sets
without requiring a formula update
Dynamic
Tables
✓ Scales intentionally
✓ Seamlessly agile
updates
✓ Incorporates new
data easily
✓ Minimizes manual
involvement
Dynamic
Tables✓ Tables can be named
and referenced
✓ Entire data sets and
columns can be
referenced by a
single formula
✓ Formulas reference
dynamic ranges
OFFSET FUNCTION
Allows for the dynamic referencing
of expanding and contracting data sets
without requiring a formula updates
Why You Should Use It:
OFFSET FUNCTION
OFFSET(reference, rows, cols, [height], [width])
Reference: The reference from
which you want to base the offset.
Rows: The number of rows, up or
down, that you want the upper-left
cell to refer to.
Cols: The number of columns, to the
left or right, that you want the upper-
left cell of the result to refer to.
Source: Microsoft
Height: The height, in number of rows,
that you want the returned reference to
be. Height must be a positive number.
Width: The width, in number of
columns, that you want the returned
reference to be. Width must be a
positive number.
Microsoft is incorrect!
It can ALSO be negative
OFFSET FUNCTION
OFFSET FUNCTIONWidth = 7
Height = 9
Make Dynamic!
Make Dynamic!
OFFSET FUNCTIONWidth = 7
Height = 9
=OFFSET(reference, rows, cols, [height], [width])
=OFFSET( E2 , 0 , 0 , 9 , 7 )
OFFSET FUNCTION
= OFFSET ( E2, 0 , 0 , 9 , 7 )
Height should expand/contract
up and down
as data added/removed
Use:
COUNT(
MIN(
MAX(
ISNUM(
ISBLANK(
MATCH(
to determine the size and shape
of the data set
OFFSET FUNCTION
= OFFSET ( E2, 0 , 0 , 9 , 7 )
Width should expand/contract
left and right
as data added/removed
OFFSET FUNCTION
= OFFSET ( E2, 0 , 0 , 9 , 7 )
This formula should be named
(Ex: DYNAMIC_VEHICLE_DATA)
And can be dynamically referenced EVERYWHERE in the model
When To Use Dynamic Tables vs. OFFSET
Dynamic Tables▪ When data is symmetrical
and complete with no skipped lines or gaps
▪ When entire columns will be referenced
▪ When data is expected to be appended at the bottom
▪ When there is no data series
OFFSET Function▪ When data is asymmetrical
and may have skipped lines and gaps
▪ When entire columns and/or rows will be referenced
▪ When data is expected to be added to the right or left
▪ When there is a data series
DYNAMIC INDEX RANGES
Allows for the dynamic referencing of
expanding and contracting data ranges
prompted by the user’s input
Why You Should Use Them:
INDEX
INDEX finds a
corresponding value in a
table or a range by
coordinate
MATCH
INDEX(array, row_index_num, col_index_num)
MATCH finds a
corresponding location
in a table or a range
MATCH(lookup_value, lookup_array, [type])
Dynamic INDEX MATCH Ranges
Total
Dynamic INDEX MATCH Ranges
Dynamic Header
Dynamic SUM
Total
Dynamic INDEX MATCH Ranges
="Active Scenario: "&Assumptions!$C$3
=SUM(INDEX(D12:I12,1,MATCH(M3,D4:I4,0)):INDEX(D12:I12,1,MATCH(M4,D4:I4,0)))
Total
INDIRECT FUNCTION
Allows for the reference of data, cells
and worksheets without requiring a
physical link
Why You Should Use It:
Physical Link
Returns the contents of
a cell based upon a
physical formula
INDIRECT
Returns the contents of
a cell based upon a text
string reference
INDIRECT(ref_text)
INDIRECT FUNCTION
Text String
Physical link
Dynamic INDIRECT
DYNAMIC ARRAYS
Allows for various expansion of arrays
and spills of dynamic data and ranges
Why You Should Use Them:
Introduced in Summer 2020
✓ Returns arrays (or ranges) of
results rather than a single
result
✓ Accomplishes tasks that once
required extremely complex
or nuanced formulas
ExamplesDynamic Arrays
SEQUENCE: Generates a sequence of
numbers in a range of rows and/or columns
UNIQUE: extracts unique items from a range
of cells/table
FILTER: Filters a range of cells/table based
on input criteria
SORT: Sorts a list by a specified other
column in that list
SORTBY: Sorts a list by a second list
RANDARRAY: Generates a range of random
numbers in an array
Dynamic Arrays
Can we build formulas that allow this model to expand and
update automatically with minimal manual involvement?
SEQUENCE FUNCTION
Rows: the number of rows to return
Columns: the number of columns to return
Start: the first number in the sequence
Step: the amount to increment each subsequent
value in the sequence
SEQUENCE ( rows , [columns] , [start] , [step] )
SEQUENCE FUNCTION
SEQUENCE ( rows , [columns] , [start] , [step] )
Dynamic (#) Arrays
Formulas with a hash (#) mark allow for expansion of an
array driven by a precedent array
One Final Thought
Doesn’t dynamic functionality
increase complexity for end-users?
Remember: The objective of financial
modeling isn’t building a model
It’s about providing end-users
good information
So they can make better decisions
Don’t avoid great functionality
because it’s novel for end-users
Don’t make models so complex
that they lose the end-users
Intentionally
Scale
Incorporate
New
Data Easily
Minimize
Manual
Involvement
Update
Seamlessly
DO develop your
model-builders and end-users to: