1.4 EXCEL风险模拟基础
1.4.1 什么是风险
利用EXCEL进行风险模拟,一个重要的基础,就是首先需要了解什么是风险?也就是说需要先明确,我们将对什么进行模拟。
目前,学术界对风险的概念还没有统一的定义,由于对风险的理解和认识不同,或对风险的研究的角度不同,不同的学者对风险概念有着不同的解释,在本书中,笔者使用的风险概念是指,风险即事件在未来是否发生或发生结果的不确定性。这种概念的使用比较普遍,比如A. H. Mowbray (1995)就称风险为不确定性;C. A. Williams(1985)将风险定义为在给定的条件和某一特定的时期,未来结果的变动;March&Shapira认为,风险是事物可能结果的不确定性,可由收益分布的方差测度;Brnmiley认为风险是公司收入流的不确定性;Markowitz和Sharp等将证券投资的风险定义为该证券资产的各种可能收益率的变动程度,并用收益率的方差来度量证券投资的风险,通过量化风险的概念改变了投资大众对风险的认识。
“风险”一词的由来,最为普遍的一种说法,是说在远古时期,以打鱼捕捞为生的渔民们,每次出海前都要祈祷,祈求神灵保佑自己能够平安归来,其中主要的祈祷内容就是让神灵保佑自己在出海时能够风平浪静、满载而归;他们在长期的捕捞实践中,深深的体会到“风”必然给他们带来的无法预测和无法确定的危险,由此他们认识到,在出海捕捞打鱼的生活中,“风”即意味着“险”,因此有了“风险”一词的由来。而另一种说法,认为“风险”一词(RISK)一词是舶来品,有人认为来自阿拉伯语、有人认为来源于西班牙语或拉丁语,但比较权威的说法是来源于意大利语的“RISQUE”一词。在早期的使用中,也是被理解为客观的危险,体现为自然现象或者航海遇到礁石、风暴等事件。大约到了19世纪,在英文的使用中,风险一词常常用法文拼写,主要是用于与保险有关的事件上。
风险的具体类型实际上是多种多样的,常用的分类主要有以下几种:
按照风险的性质划分,有纯粹风险和投机风险。前者是指只有损失机会而没有获利可能的风险,后者是指既有损失的机会也有获利可能的风险。
按照产生风险的环境划分,有静态风险和动态风险。前者是指自然力的不规则变动或人们的过失行为导致的风险,后者是指社会、经济、科技或政治变动产生的风险。
按照风险发生的原因划分,有自然风险、社会风险和经济风险。自然风险是指由自然因素和物力现象所造成的风险。社会风险是指由个人或团体在社会上的行为导致的风险。经济风险是指在经济活动过程中,因市场因素影响或者管理经营不善导致经济损失的风险,具体又可分为投资风险、金融风险和经营风险等等。
按照风险致损的对象划分,有财产风险、人身风险和责任风险。财产风险如各种财产损毁、灭失或者贬值的风险,人身风险如个人的疾病、意外伤害等造成残疾、死亡的风险,
责任风险则是指,按照法律或者有关合同规定,因行为人的行为或不作为导致他人财产损失或人身伤亡,应由行为人所负经济赔偿责任导致的风险。
人们重视风险与风险管理,源于风险的属性。风险的基本属性包括自然属性、社会属性和经济属性。
(一)自然属性。风险是由客观存在的自然现象所引起的,大自然是人类生存、繁衍生息的基础。自然界通过地震、洪水、雷电、暴风雨、滑坡、泥石流、海啸等运动形式给人类的生命安全和经济生活造成损失,对人类构成风险。自然界的运动是有其规律的,人们可以发现、认识和利用这些规律,降低风险事故发生的概率,减少损失的程度。
(二)社会属性。不同的社会环境下,风险的内容不同。风险是在一定社会环境下产生的,这是风险的社会属性。风险事故的发生与一定的社会制度、技术条件、经济条件和生产力等都有一定的关系。例如战争、冲突、瘟疫、经济危机、恐怖袭击、车祸等都是受社会发展规律影响和支配的。
(三)经济属性。风险的经济属性强调风险发生后所产生的经济后果,即风险与经济的相关联性。只有当灾害事故对人身安全和经济利益造成损失时,才体现出风险的经济属性。也才因此称为风险。否则,不定义为风险。例如股市风险、信用风险、企业的生产经营风险等,都可能造成相关的经济损失。
风险通常具有以下一些主要特征。
(一)风险存在的客观性。风险是客观存在的,是不以人的意志为转移的。风险的客观性是保险产生和发展的自然基础。人们只能在一定的范围内改变风险形成和发展的条件,降低风险事故发生的概率,减少损失程度,而不能彻底消除风险。
(二)风险的损失性。风险发生后必然会给人们造成某种损失,然而对于损失的发生人们却无法预料和确定。人们只能在认识和了解风险的基础上严防风险的发生和减少风险所造成的损失,损失是风险的必然结果。
(三)风险损失发生的不确定性。风险是客观的、普遍的,但就某一具体风险损失而言其发生是不确定的,是一种随机现象。例如,火灾的发生是客观存在的风险事故,但是就某一次具体火灾的发生而言是不确定的,也是不可预知的,需要人们加强防范和提高防火意识。
(四)风险存在的普遍性。风险在人们生产生活中无处不在、无时不有,并威胁着人类的生命和财产的安全,如地震灾害、洪水、火灾、意外事故的发生等。随着人类社会的不断前进和发展,人类将面临更多新的风险,风险事故造成的损失也可能越来越大。
(五)风险的社会性。没有人和人类社会,就谈不上风险。风险与人类社会的利益密切相关,总是关联着人类的生存与发展,具有社会性。随着风险的发生,人们在日常经济和生活中将遭受经济上的损失或身体上的伤害,企业将面临生产经营和财务上的损失。
(六)风险发生的可测性。单一风险的发生虽然具有不确定性,但对总体风险而言,风险事故的发生是可测的,即运用概率论和大数法则对总体风险事故的发生是可以进行统计分析的,以研究风险的规律性。风险事故的可测性为保险费率的厘定提供了科学依据。
(七)风险的可变性。世间万物都处于运动、变化之中,风险也是如此。风险的变化,有量的增减,有质的改变,还有旧风险的消失和新风险的产生。风险因素的变化主要是由科技进步、经济体制与结构的转变、政治与社会结构的改变等方面的变化引起的。
1.4.2 EXCEL模拟中的常用函数
要利用Excel进行模拟,首先需要掌握随机事件模拟的一些常用函数的功用,这是首先必须具备的一个基础。这些常用函数包括:
(1)随机数生成函数RAND( )和RANDBETWEEN()
RAND( )函数的功能是生成一个0和1之间的随机数,不包括两端的0和1。该函数使用时,括号里面为空。
如果要生成两个具体数值之间的随机数,比如要在A1单元格生成(m,n)之间的随机数,可以在A1单元格输入A1“=m+(n-m)*RAND()”。
生成两个数值之间的随机数,在Excel中还可以使用函数RANDBETWEEN()完成。该函数使用的方式是RANDBETWEEN(bottom,top),括号里第一个数为最小数,第二个数为最大数。该函数的特点是生成的随机数是两个数之间的整数值,无需取整,且包括两端的数值(但是使用该函数需注意,该函数须在据菜单下运行加载宏加载“分析工具库”方可)。
(2)取整函数INT()和TRUNC()
INT()函数函数使用的语法是INT(Number),意思是将函数中的数字向下舍入到最接近的整数。如INT(8.9)=8,INT(-8.9)=-9。将该函数与RAND函数结合用于均匀分布的变量或具有等差数列特征的变量的赋值具有很大的方便性。
与INT函数具有近似功能的是TRUNC()函数。该函数使用的格式是TRUNC(number,num-digits),意思是将指定的数截取为整数或指定位数的小数,只取整数部分,不四舍五入,第二个数字省略即取整数,如TRUNC(-8.9)=-8,TRUNC(-8.99,1)=-8.9。
如果需要四舍五入,则需要用到函数ROUND(),其格式是:ROUND(number,num-digits),第一个数十需要舍入的数,第二个数是舍入后的位数。如ROUND(8.89,1)=8.9,ROUND(-8.89,1)=-8.9 。
(3)点数函数COUNT()和COUNTIF( )
COUNT()函数的功能是就是点数,也就是统计某行或某列数值个数,即括号里面只要告诉需要点数的单元格的起始位置即可。
函数COUNTIF( )常用于计算要统计的区域中满足给定条件的单元格的数目或某个数出现的频数。 其语法格式是COUNTIF(range,criteria) ,其中 Range 为需要统计计算的满足条件的单元格数目(或需要统计频数)的单元格区域。 Criteria 为确定哪些单元格将被计算在内的条件,其形式可以为数字、表达式或文本,比如条件可以表示为“32”、"=32"、">32" 或 "apples"等等。注意条件一定要放在引号里。
(4)频数统计函数 FREQUENCY()
FREQUENCY函数的功能是用于统计某个区域中数据的频数分布,通常都以一列垂直数组返回。例如,使用函数 FREQUENCY 可以计算在给定的考试分数范围内考生得到的每个分数的个数。由于函数 FREQUENCY 返回一个数组,所以必须以数组公式的形式输入。语法为FREQUENCY (data_array , bins_array)。Data_array 为一数组或对一组数值的引用,是用来计算频数的对象。如果 data_array 中不包含任何数值,函数 FREQUENCY 返回零数组。Bins_array 为间隔的数组或对间隔的引用,该间隔用于对 data_array 中的数值进行分组,也就是频数的分组范围。比如,数组可以是50,100,150,200等等,每个数值给出的是分组区间的上限,即50的统计区间为0~50,200的统计范围为151~200等等。如果 bins_array 中不包含任何数值,函数 FREQUENCY 返回 data_array 中元素的个数。
(5)条件赋值函数IF()
该函数使用的格式是,IF(logical_test,value_if_true,value_if_false),括号中需先给出一个逻辑判断式,比如B1>=5,当判断为真时,给值1,判断不真时,给值2。需注意的是,该函数可以嵌套,但最多可以嵌套七层。
函数IF()有时也可用于进行统计,这在后面将会用到。
(6)概率分布函数NORMINV()
函数NORMINV( )叫作正态分布的反函数,使用该函数可返回给定概率时相应的临界点,即相应随机变量的值。其语法格式为NORMINV(a,b,c),其中,a为正态分布的概率,其值介于0和1之间,也可以用函数Rand()生成,b为数学期望,c为标准差。比如,“Norminv(0.975,0,1)”=1.96。
相应地,如果要得到T分布的变量(临界值)可用Tinv()函数,要得到F分布的变量(临界值)可用Finv()函数,要得到gege'vge'vs卡方分布的变量(临界值)可用Chiinv()函数。
正态分布表的临界值(概率)可以通过函数Normsdist()得到其补数。二项式分布的临界值(概率)可以通过函数BINOMDIST(a,b,c,d)得到,其中a=k,b=n,c=p,d为True或False,为True时给出累积概率,为False给出变量概率。泊松分布的临界值(概率)可以通过函数POISSON(a,b,c)得到,其中a=k,b=,即二项式分布中的n×p,c与二项式分布中的d相同。
(7)求和函数SUM()和SUMIF()
函数SUM用于计算指定区域即给定行或给定列的和,可直接使用EXCEL工具栏上的“”图标完成。SUMIF用于条件求和,使用的格式为:“=SUMIF(range,criteria,sum_range)”,其中range为条件判断区域,criteria为需判断的条件,条件需要放在英文双引号内,sum_range是求和的区域。
(8)求均值函数AVERAGE()
该函数用于计算指定区域即给定行或给定列的均值。
1.4.3 EXCEL表格的分区
利用EXCEL进行风险模拟,最后需要的一个重要的基础,就是要善于对一个EXCEL表格进行分区。
一张2003版的EXCEL表的最大行数为65536行,最大列数为256列。为了方便模拟的运行,通常可以将一张EXCEL表主要的分为三个区域。一个是“数据输入区”,简称“输入区”,主要用于对模拟过程中需要改变数值的数据的输入。另一个就是“统计分析”区,简称“统计区”,用于对模拟结果进行统计分析。这两个区域根据需要输入和统计的数据的多少,通常都可安排在一张表的前10行或前20行,分左右两块,输入区在前,统计区在后。另一个区域就是“实验区”,也就是模拟工作区。这个区域通常都安排在一张表的第10行或第20行以下。具体每个区域的大小都可以根据模拟的实际需要来确定,一般的参考分区参见图3。
图3 Excel模拟表的参考分区