编写财务模型的基本原则
今天,介绍一下编写财务模型的基本原则。我自己整理了一遍之后,还是发现表达的不够透彻(我可能有语言表达障碍),只好借用约翰老师的内容了。
我的入门书就是下面的这本Building Financial Models A Guide to Creating And Interpreting Financial Statement (2004),作者是JohnS. Tjia。
当时网上可以下载PDF免费的英文版,现在应该可以买到最新的中文版(新版的我没看过)。豆瓣对此书有评论,有兴趣的同学可以去看看。需要指出,这本书的内容是基于IFRS(国际财务报告准则),有些贷款或者业务模式是国内没有的。
在这本书中提到了下面几个原则,对我这些年的建模帮助很大。看不懂英文的不用着急,我后面会逐个讲解:
KISS—Keep it simple, stupid.
Have a clear idea of what the model needs to do.
Be clear about what the users want and expect.
Maintain a logical arrangement of the parts.
Make all calculations in the model visible.
Be consistent in everything you do.
Use one input for one data point.
Think modular.
Make full use of Excel’s power.
Provide ways to prevent or back out of errors.
Save in-progress versions under different names, and savethem often.
Test, test, and test.
下面的文字是我对这些原则的体会,你也可以自己去下载原文来看。
1. 让模型保持简洁、 “傻瓜”。
我使用“傻瓜”这个词,是跟“傻瓜相机”中的“傻瓜”同义(不知道什么是傻瓜相机的,去问度娘,暴露年龄了),其实就是让模型变得简单易操作,这就要求把模型的结构,公式,格式等尽量做到越简单越好。比如,有的公式在一个单元格里可能会套用7层IF公式,我们可以把它拆分到2-3个单元格来计算,这样方便我们检查公式,也避免出错。再比如格式要简洁,我曾经收到过一个印尼企业发来的财务模型,每一行的颜色都不一样,像下图一样的色彩,整个页面采用的都是这些高亮的颜色,打开文件的一瞬间,眼前是五光十色,闪瞎眼睛。
假设你作为一个读者,你希望看到一堆密密麻麻的数堆砌在这样花丛中吗?我的回答是否定的。
至于结构,要做到一目了然,后面会有单独的一篇来讲解,这里不多说了。
2. 要清楚的知道你自己的模型是用来干什么的
财务模型的目的是有很多种的,有的是为了经营目的来做财务分析的,有的是用来做估值(价值评估)的,有是用于评估工程建设项目的。不同的模型,侧重点就会不一样。做经营分析的,就需要把经营活动中的各个项目都考虑进去,看每项细节对整个经济效益的影响如何。做估值的模型,就需要考虑自由现金流,市盈率等估值所需要的内容,而建设项目的模型,就要考虑资本开支、资金使用时间,以及建设工程的收益情况等因素。
3. 要清楚的知道你的读者需要的是什么。
这个要求,大家应该都很明白。针对不同的读者,我们就需要呈现不同的结论,这也就决定了模型的复杂程度和结构内容。我现在的上司们,只看3个数:内部收益率,净现值和投资回收期,所以我的模型只提供给他这3个数字就可以了。而我以前的外资公司的老板,他看的可不只3个数字,我需要提供给他的有资金来源和使用用途及相应的时间,三张财务报表,利润分配,盈亏平衡,敏感性分析等内容(不要以为企业要求少,活就好干了,有空再吐槽呀)。
4. 模型各部分之间保持一个有条理的安排,符合逻辑
这说白了就是做事有逻辑,要知道第一步先干什么,第二步再弄什么,一步步来。做模型是个直线的思维,没有捷径,不能你先拼出个资产负债表来,再去做成本收入明细表。为了找平资产负债表,去收入成本表里去凑数。我见过一个模型,在资产负债表里面硬生生填进去一个6位数的数字,就为了让资产负债表的左右两边相等,而这种做法对于投资分析的结论来说是致命的。
5.可以看到模型中的计算
我的经验是不要把计算隐藏起来,能够清楚的得看到每个计算的公式是怎么来的。我自己是没有隐藏表格的习惯,在模型的使用过程中倒是没有遇到过问题。但是,我们做项目时经常会收到被投资人的模型,有的人鉴于保密因素,会把部分内容加密隐藏,这就会在一定程度上阻碍到我们对项目和模型的理解。
PS:这段话的原文我一直没理解透彻,有英文高手的帮忙给解个惑。
6.模型的各部分的内容、格式等尽量一致
同样的一个内容,它的标题在不同的表格中应该是一样的。比如收入的那一行,在利润表中名称是“主营业务收入”,在收入明细表中又成了“销售收入”,虽然数字是一样的,但是名称不同,这就有可能造成计算错误。又比如,同样是E列,在资产负债表中的E列代表2017年的财务数据,而利润表中的E列却代表了2018年的财务数据,这样的格式也是不方便计算的。
7. 只有一个地方可以输入数据
我的模型里面总是有一个表单叫“Assumption”(假设条件),模型需要的所有原始数字,例如销售单价,销售数量,单位成本等都是在这个表单里手工填写进去,除此以外,整个模型里没有其他的地方可以输入数字。
这样做,方便我们在模型建成之后,在做分析时对模型的参数进行调整。假设现在模型的内部收益率是10%,我想调整到15%,那么就需要改各项参数。如果所有的参数都在同一个页面,调整起来就很容易。
有个咨询公司提供给我们的模型,在假设条件表单里面把投资额分在3年投出,并列出了5%的投资收益。我在调整投资时间的时候,就发现模型的投资回报率竟然不变(想想,为什么不变是错的?)。然后我就从现金流量表开始倒着找,随后发现投资收益的数据竟然是手工输入在利润表中,与前面假设条件表单里面的数据没有任何关联。如果这个模型的作者坚持了这条原则,是完全可以避免这个错误的。
总之,这条的原则就是,所有的输入数据都在一张表单中,修改任何一个参数,后面的计算都会自动更新(这就要求我们在建模的时候坚持第4条原则,思路一定要清晰,有逻辑)。
8.模块化思维
这其实是把模型分成相对独立的板块,每个板块内又再区分相对独立的区域,一是方便我们对计算行检查,二是由于相对独立,这块出错了,对其他板块的影响不大,三是修改起来也比较容易,需要时只对部分板块进行修改就可以了。
9.充分利用EXCEL的功能
例如,充分利用EXCEL的公式、使用检查拼写功能、应用公式审核功能等等,让自己减少操作。EXCEL有几个特别好用的工具,例如公式审查、定义、迭代计算、数据表等等。我在后面操作中会一一提到。
10. 采取方法避免出错
对于新手来说,建模过程中会出现各种各样的错误。一方面是要仔细,不要因为自己的粗心而搞错,另外一方面就是打开EXCEL的错误提示功能,帮我们来检查公式使用中的错误,具体如何操作,我会在后面建模过程中会提到。
11.在做模型的过程中经常存盘,并且保存到不同的文件名称下
我后面的文章会单独写一篇关于文件名称,解释为什么要经常存盘,为什么保存的文件名字还不一样。这里就只要记住需要这么做就可以了。(就当是为了引起你们的好奇吧,其实是我懒,不想重复写。)
12.检查、检查、再检查
这标题有点像高考前,老师一个劲地嘱咐“仔细,仔细再仔细”。对于建模老手来说,已经形成了习惯,注重细节,检查的次数很少。但是对于新手来说,由于公式的运用不熟悉,加上考虑各表格之间的关系不全面,出错是很频繁的事情。所以需要经常检查一下公式的计算和引用是否正确,必要时手动计算复核。
以上这些就是建模的一些原则啦。