运用蒙特卡罗模拟进行风险分析
蒙特卡罗模拟由著名的摩纳哥赌城而得名,他是一种非常强有力的方法学。对专业人员来说,这种模拟为方便的解决困难而复杂的实际问题开启了一扇大门。估计蒙特卡罗模拟最著名的早期使用是诺贝尔奖物理学家Enrico Fermi(有时也说是原子弹之父)在1930年的应用,那时他用一种随机方法来计算刚发现的中子的性质。蒙特卡罗模拟是曼哈顿计划所用到的模拟的核心部分,在20世纪50年代蒙特卡罗模拟就用在Los Alamos国家实验室发展氢弹的早期工作中,并流行于物理学和运筹学研究领域。兰德公司和美国空军是这个时期主要的两个负责资助和传播蒙特卡罗方法的组织,今天蒙特卡罗模拟也被广泛应用于不同的领域,包括工程,物理学,研发,商业和金融。
简而言之,蒙特卡罗模拟创造了一种假设的未来,它是通过产生数以千计甚至成千上万的样本结果并分析他们的共性实现的。在实践中,蒙特卡罗模拟法用于风险分析,风险鉴定,敏感度分析和预测。模拟的一个替代方法是极其复杂的随机闭合数学模型。对一个公司的分析,使用研究生层次的高等数学和统计学显然不合逻辑和实际。一个出色的分析家会使用所有他或她可得的工具以最简单和最实际的方式去得到相同的结果。任何情况下,建模正确时,蒙特卡罗模拟可以提供与更完美的数学方法相似的答案。此外,有许多实际生活应用中不存在闭合模型并且唯一的途径就是应用模拟法。那么,到底什么是蒙特卡罗模拟以及它是怎么工作的?
什么是蒙特卡罗模拟?
今天,高速计算机使许多过去看来棘手的复杂计算成为可能。对科学家,工程师,统计学家,管理者,商业分析家和其他人来说,计算机使创建一个模拟现实的模型成为可能,这有助于做出预测,其中一种方法应用于模拟真实系统,它通过调查数以百计甚至数
以千计的可能情况来解释随机性和未来不确定性。结果通过编译后用于决策。这就是蒙特卡罗模拟的全部内容。
形式最简单的蒙特卡罗模拟是一个随机数字生成器,它对预测,估计和风险分析都很有用。一个模拟计算模型的许多情况,这通过反复地从预先定义的特定变量概率分布中采集数据并将之应用于模型来实现。因为所有的情况都产生相应的结果,每种情况都可以蕴含一种预测。预测的是你定义为重要模型结果的事项(通常含有公式或函数)。
将蒙特卡罗模拟法想象为从一个大篮子里可放回的反复拿出高尔夫球。拦在的大小和形状取决于分布输入假定(例如,一个均值为100,标准方差为10的正态分布,均匀分布或者三角分布),这里有些篮子相对较深或者更对称,可使特定的球更顺利的被拿出。反复拿出的球数取决于模拟试验的次数。对一个具有多重相关假设的大模型,不妨将它想象为一个巨大的篮子,很多婴儿筐放在里面。每个婴儿筐都有自己的一套彩色高尔夫球在四周跳动。有时这些婴儿筐之间相互连接(如果变量之间相关),迫使高尔夫球协力跳动,而在其他不相关情况下,这些球则彼此独立的跳动。每次从模型内的相互作用中拿出的球都列出并记录下来,以提供一个该模拟的预测输出结果。
模拟为何重要
一个解释模拟重要性的例子在图4.1和图4.2的案例说明中可以看到,叫做平均值缺陷。这个例子非常值得深入研究。它说明了一个分析者在不进行模拟的情况下可能被误导而做出错误的决策。假设你是销售易腐商品商店的老板,你需要做出一个决定以确定当前的最优库存。你新雇用的分析者成功的下载了5年的月度历史销售数据,并且她估计出平均值为五个单位。然后你决定当前的最优库存就是五个单位。你已经犯了平均值缺陷的错误。如此例所示,这个错误发生的明显原因就是历史需求分布是高偏度的而成本结构确
是对称的。例如,假设你在参加一个会议,你的老板问你去年每个人赚了多少钱。你做了一个快速调查,发现工资范围从$60,000到$150,000不等。快速计算之后你发现平均值是$100,000.然后你老板告诉你他去年赚了$20,000,000!整个组的平均值一下子就变成了$15,000,000。这个$15,000,000显然不可能代表你的同事去年赚了这么多钱。这种情况下,中位值可能更合适。这里你可以看到仅仅使用平均值会导致高度误导性的结果。
继续这个例子,图4.2说明了怎么使用模拟法计算正确的存货水平。这里使用的方法是非参数拔靴模拟。之所以是非参数是因为在这种模拟法中没有制定分布参数。不同于蒙特卡罗参数模拟中需要假设特定的预设分布(正态,三角,对数正态一类的)及其所要求的参数(均值,标准方差,等等),非参数模拟利用数据本身来说明一件事情。
假设你搜集了5年来的历史需求水平并把每个月的需求量写在一个高尔夫球上。把
所有60个高尔夫球扔进一个大篮子并随机混合。随机拿出一个高尔夫球并在纸上写下它的值,然后将球放回篮子并再次混合。这样做60次并计算平均值。这一过程是单独的一个分组试验。可放回地完成整个过程数千次。这几千个平均值的分布就代表模拟预测的结果。所期待的模拟结果就是这几千个平均值的平均值。图4.2显示了从非参数模拟得到的一个分布。如你所见,经营成本最小是的最优存货率是9单位,远远不同于之前图4.1中计算出来的五单位。
很明显,每种方法都有它的有点和缺陷。非参数模拟可以方便的通过风险模拟®的常用分布来实现,它使用历史数据来描述事实并预测未来。然而,参数分布迫使模拟出来的结果服从规则分布,这是大多数情况下人们所期待的。不像非参数模拟要求的必须考虑剔除杂乱数据(例如,离群值和谬值),参数模拟每次都是重新开始。
蒙特卡罗模拟是一种参数模拟,模拟开始之前要求有特定的分布参数。替代方法是非参数模拟,它用原始历史数据来描述事实并且模拟的运行不需要分布参数。
模拟与传统分析比较
图4.3介绍了一些用来处理不确定性和风险的传统方法。这些方法包括执行敏感度分析,情境分析和概率情境。下一步是易用蒙特卡罗模拟,它可以被看作是不确定性和风险的一种扩展。图4.4说明了一种应用更高级的蒙特卡罗模拟作预测的方法。图4.4中的例子显示了蒙特卡罗模拟到底可以多复杂,而这取决于其用途。从以下网站
www.realoptionsvaluation.com.cn 下载的软件有一个随机过程模块,它运用了这些更复杂的随机预测模型,包括布朗运动,均值回归和随机漫步模型。
应用和EXCEL进行模拟
可以通过Excel实现模拟。然而,更高级的模拟软件比如执行这种人物效率更高并且有预先设置在模拟中的附加特性。现在我们介绍使用Excel和进行蒙特卡罗参数模拟和非参数资助模拟。
图4.5和图4.6中的例子显示了在一系列概率假设基础上运用Excel执行有限次数模拟。我们假设已经完成了一系列的情景分析,并得到了九个结果值,其各自的发生概率也已计算出来。运用Excel对这样一个情境分析建立模拟的第一步是理解Excel函数“RAND()”。这个函数就是一个简单的随机数字生成器,Excel用它来从0到1的均匀分布中随机生成数字。然后用假设中指定的概率把数字0到1转换成范围或区间。例如,如果$362,995的发生概率是55%,我们就可以生成一个从0.00到0.55的区间。类似地,对下一个值$363,522我们可以生成0.56到0.65的区间,这个的发生概率是10%,等等。在这些区间的基础上就可以建立非参数模拟。
图4.5说明了一个5000套试验的例子。每组试验需要模拟100次;也就是说,在每组模拟试验中,Excel用函数VLOOKUP(RAND(),$D$16:$F$24,3)可放回的随机抽取原始数字,这个函数先将RAND()函数产生的值与D16到F24区域的第一列数据相匹配,然后抽取第三列中相应的数据。然后计算每组试验中采样数据的平均值。这5000组试验的平均值的分布就可以得到,频率分布图显示在图4.5底部。根据中心极限定理,这些样本均值的平均值将在极限意义上逼近真正的总体均值。此外,当进行足够多组试验时,分布将非常逼近正态分布。显然,在Excel中人工运行这种非参数模拟是相当乏味的。一个替代方案是使用中的常用分布,它做的是同样的事情但是速度更快且效率更高。第六章,潘多拉的工具箱,更详细的展示了一些模拟工具。
非参数模拟是一个强有力的工具但是只有当数据可得时才适用。显然,越多的数据存在,模拟结果的精度和置信度就更高。然而,当数据不存在或一个有效的系统过程支持
着数据集(例如,物理学,工程学,经济关系)时,参数模拟可能更合适,它使用精确的概率分布。
Excel函数RAND()用来从0到1的均匀分布中随机生成数字。RAND()*(B-A)用来从A到B的均匀分布中随机生成数字。NORMSINV(RAND())从均值为1,方差为0的标准正态分布中随机生成数字。
用Excel模拟简单问题简单而且高效。然而,当产生更复杂的问题时,比如下面将要介绍的这个,就需要使用更专业的模拟软件。就是这样一个软件。在图4.7的例子中,单元格“Revenue”,“Opex”,“FCF/EBITDA Multiple”和“Revenue Growth Rate”(深灰色)是假定单元格,我们在里面填上分布的输入假定,比如变量遵循的分布类型和有哪些参数。例如,在分析该公司历史收入数据的基础上,我们可以说收入服从一个均值为$1010,标准方差为$100的正态分布。净现值(NPV)单元格是预测结果单元格,就是说,这些单元格的结果就是我们想要的最终分析结果。参见第五章,试用,以得到更多安装和启动软件的细节。
因篇幅问题不能全部显示,请点此查看更多更全内容