Tax100 税百

  • 在线人数 1251
  • Tax100会员 32538
查看: 739|回复: 0

[国际工程与劳务杂志] EXCEL宏语言在投资项目财务模型中的应用

1388

主题

1388

帖子

1400

积分

特级税友

Rank: 6Rank: 6

积分
1400
2021-8-16 11:41:09 | 显示全部楼层 |阅读模式
精选公众号文章
公众号名称: 国际工程与劳务杂志
标题: EXCEL宏语言在投资项目财务模型中的应用
作者:
发布时间: 2020-12-28
原文链接: http://mp.weixin.qq.com/s?__biz=MjM5Njk5MjU5Mw==&mid=2656158672&idx=2&sn=3a435f6bf31d1530a96db28cf90c1825&chksm=bd45a0ee8a3229f89b9b4a4c7cfa783c745bf9f259f03484dce034fe148b3c8a97908b23b996#rd
备注: -
公众号二维码: -
作者:尤力 董亚楠 周炜敏



在境外绿地项目的投资决策过程中,构建财务模型开展经济可行性分析是最重要的步骤之一,EXCEL宏语言(以下称“宏语言”)被广泛应用在财务模型中。本文重点探讨境外绿地项目财务模型中循环引用的产生原因及解决方法,介绍两种常见的利用宏语言开展自动计算的应用场景。

财务模型的基本框架

项目融资的财务模型一般分为输入条件、计算过程和输出结果三个模块。其中,输入条件模块主要涵盖项目时间假设、融资条件、税制税率假设、通胀汇率假设、营运资本假设等单元;计算模块主要涵盖建设期资金使用和筹集计算、建设期融资成本计算、运营期收入和成本计算、资产折旧、摊销和税收计算、还款计算、股利分配计算、项目和股权内部收益率计算等单元;输出模块主要涵盖损益表、资产负债表、现金流量表、敏感性分析、比率分析等单元。

模型中循环引用产生的原因和解决方法

循环引用是指当Excel中的一个单元格A内的公式引用到其他单元格B中的数据时,单元格B中的数据又是直接或间接地由A中的数据计算而来的,从而造成Excel不断循环计算的现象。在项目融资的财务模型里,计算总投资可能会产生循环引用的问题。如果项目采用偿债备付率还款法,在计算可用于偿债的现金流(以下称“CFADS”)时会产生新的循环引用。本文接下来探讨这两种循环引用产生的原因和解决办法。
一、总投资的计算
项目总投资由项目建设投资、建设期利息、流动资金、融资费用、初始偿债准备金和初始运维基金等构成。其中,融资费用主要包括贷款承诺费、前端费、债权部分的出口信用保险费(保费通常为保单生效前趸交,类似中信保债权海投险产品不在此文探讨)。
承诺费=已获得银行贷款额度但尚未提款的贷款金额×承诺费率
融资前端费=贷款金额×前端费率
信用保险保费=(贷款金额+建设期利息+还款利息)×保费率
项目在建设期不产生或只产生少量收入,难以在建设期支付大额的融资费用,因此一般会采用融资费用资本化,即融资费用被计入项目总投资而不是作为当期费用支出。融资费用是项目总投资的组成部分,而融资费用又和贷款金额存在函数关系,由此产生了一个间接循环引用(如图1)。



融资银行一般要求借款方开立偿债准备金账户(以下称“DSRA”),即在项目建设完成之前向指定账户存入未来数期的还款本息额,以此作为短期还款的保障措施(开设信用证作为短期流动性保证不在此文讨论)。DSRA的金额由贷款金额和还款方式决定,预存的偿债准备金计入总投资。综上,这里同样产生了一个循环引用(如图1)。打开Excel中的迭代计算功能可以直接解决循环引用的问题,但会带来模型的不稳定。因此,使用宏语言来协助计算总投资,具体方法如下。
在EXCEL工作表中,将项目总投资的现金流定义为 Funding_Copy,复制Funding_Copy的数值并粘贴到定义为Funding_Paste的单元格区域内,两者差额之和的单元格定义为Funding_Delta。使用Funding_Paste作为输入来计算融资费用和初始DSRA,按图1进入循环得到Funding_Copy。使用Do While Loop语句,当Funding_Delta不等于零时进入
循环体语句Funding_paste.value=Funding_Copy.value直至Funding_delta等于零,从而计算出总投资。
二、CFADS的计算
CFADS是项目每期可用于偿还银行本息的现金流,在项目现金使用顺序上,在经营性现金流之后。在偿债覆盖率还款法下:
每期还款的本息额=(CFADS)/偿债覆盖率(以下称“DSCR”)
每期偿还的利息=每期还款的本息额-每期偿还的本金
每期偿还的利息会通过损益表影响项目税前利润,税前利润影响实际因所得税支出的现金。所得税支出的现金流作为经营性现金流的一部分便会影响CFADS。由此产生了循环引用(如图2)。



在跨境项目中会出现贷款货币和项目收入货币不一致的情况,假设贷款货币为国际通用货币,收入货币为项目所在国当地货币。采用收入货币作为模型的计算货币,在还款时会因汇率变动产生汇率损益。其中(假设当地货币采用直接标价法):
总汇率损益=还款当期和上一期的汇率差额×当期期初的贷款货币的本金余额
当期确认的汇率损益=还款当期和基期间的汇率差额×当期偿还的贷款货币的本金
当期确认的汇率损益计入损益表,会通过税收影响CFADS,而当期确认的汇率损益由CFADS间接决定,财务模型便会出现循环引用(如图3)。



我们仍然使用Do While Loop语句来处理这个循环引用,处理的方法和计算总投资时的方法相同,在此不再赘述。

宏语言自动计算的应用场景

在使用解决了循环引用的问题后,还可以将其应用在目标收益率倒算核心输入参数、敏感性分析等场景。在实际操作中,一般会将循环引用的解决方法和上述应用场景有效结合起来。
一、宏语言在目标收益率倒算核心输入参数的应用
财务模型的基本逻辑是通过输入假设条件,计算出项目内部收益率以及股权内部收益率等关键指标。但在投资项目评价中,财务模型经常需要根据股权内部收益率去倒算项目收入、项目建设投资等核心输入参数。为了解释倒算的基本原理,下面以宏语言自动迭代计算满足目标股权内部收益率要求的电价为例,说明整个计算过程。使用Do While Loop循环语句和宏语言里预设的GoalSeek函数,计算出符合预期内部收益率的电价。
在财务模型里,还需要计算项目的内部收益率,即融资前的内部收益率。依然使用Do While Loop,同时需要利用利率转换开关,剔除利息产生的税盾对项目现金流的影响。当利率转换开关关闭时,计算项目的自有现金流,以此来计算项目的内部收益率。打开利率开关后,计算项目在有杠杆下的自有现金流。两者的差值即为融资利息带来的税盾。
二、宏语言在敏感性分析中的应用
财务模型的敏感性因子一般包含项目工期、建设成本、运营成本、通胀率、利率、汇率等。通过使用宏语言,可以自动计算各敏感因子在不同情形下对应的关键指标,并将计算结果整体呈现在敏感性分析表中。
在进行敏感性分析时,例如某一敏感因子有多种假设情形。可以利用For循环语句进行多次相同的计算,当多次计算结束时返回初始值。在逐次计算和结算结果呈现时,可以利用宏语言里预设的Offset公式,实现自动向下或向右计算。当有多个敏感因子时,重复使用For语句分别依次进行敏感性计算。如果敏感因子较多且有多种假设情形需要分析,使用ScreenUpdating语句关闭屏幕更新,以提高运行速度。
财务模型里经常会出现循环引用的问题,除本文分析的总投资额计算和可用于偿债的现金流计算之外,还会存在其他的情形。使用宏语言处理循环引用问题可以使模型更加稳定,而准确分析各种循环引用产生的原因则是使用宏语言解决此类问题的基础。相比手动进行敏感性分析和使用试错法进行倒算核心输入参数,使用宏语言进行自动计算可以提升财务分析的效率、灵活性和准确度。

(作者单位:中国电建集团国际工程有限公司)

311_1629085268702.jpg
回复

使用道具 举报

Copyright © 2001-2013 Comsenz Inc. Powered by Discuz! X3.4 京公网安备 11010802035448号 ( 京ICP备19053597号-1,电话18600416813,邮箱1479971814@qq.com ) 了解Tax100创始人胡万军 优化与建议 隐私政策
快速回复 返回列表 返回顶部