怎么用 Excel 做蒙特卡洛模拟

2024-05-11 21:25

1. 怎么用 Excel 做蒙特卡洛模拟

Excel 做蒙特卡洛模拟的具体操作步骤如下:
1、打开Excel表格,填写三个活动时间估算的乐观值,最可能值和悲观值。

2、分别计算三个活动的均值和标准差。
均值=(乐观值+4 * 最可能值 + 悲观值)/ 6,标准差=(悲观值-乐观值)/ 6。

3、计算出来的均值和标准差,对三个活动按照正态分布进行随机模拟。
公式:=INT(NORMINV(RAND(),$F$2,$G$2))。

4、将随机出来的值,进行固化。把上一步中红框的区域,按值复制一份。

5、3个活动均为FS的关系,三个互动的时间之和就等于总项目时间。

6、总工期考入新的Sheet,并进行从小到大的重新排序。

7、排序后的数据进行筛选,剔除重复数据,全部模拟出来工期的值。

8、进行频度统计,选中与总工期相对应的频度下面的单元格D2:D23。
输入公式“=FREQUENCY(A2:A101,C2:C23)”,然后按下Ctrl+Shift+Enter。

9、计算积累频度:每一个频度的积累频度=自身的频度+前面所有项的频度之和。

10、选择二维折线图,添加的空白折线图上右键选择数据区域,将累计频度改为蒙特卡洛模拟。

11、选择自己喜欢的样式,蒙特卡洛模拟生成的图表即可。

怎么用 Excel 做蒙特卡洛模拟

2. 怎么用 excel 做蒙特卡洛模拟

1、首先,我们来填入这三个活动时间估算的乐观值,最可能值和悲观值。
分别计算这三个活动的均值和标准差。
均值=(乐观值+4 * 最可能值 + 悲观值)/ 6
标准差=(悲观值-乐观值)/ 6
根据第二步计算出来的均值和标准差,对三个活动按照正态分布进行随机模拟。因为是测试项目,这里我们只进行随机100次。
公式:=INT(NORMINV(RAND(),$F$2,$G$2))
其中:NORMINV 正态分布;INT 去整; RAND() 取随机数;
2、将随机出来的值,进行固化。也就是将上一步中红框的区域,按值复制一份。以防止随机数在每次更改单元格后都会发生变化。
3、由于3个活动均为FS的关系,所以三个互动的时间之和就等于总项目时间。
将总工期考入新的Sheet,并进行从小到大的重新排序。
4、将排序后的数据进行筛选,剔除重复数据。从而的到全部模拟出来工期的值。
进行频度统计。首先选中与总工期相对应的频度下面的单元格D2:D23,然后输入公式“=FREQUENCY(A2:A101,C2:C23)”,然后按下Ctrl+Shift+Enter。如此会计算出模拟出来各个总工期的发生次数。
5、计算积累频度:每一个频度的积累频度=自身的频度+前面所有项的频度之和
选择二维折线图;
6、在添加的空白折线图上右键“选择数据区域”: 数据区域即总工期和积累频度两列。由于我们并不需要总工期呈现为曲线形式,在选择后的对话框中,将总工期删除,只保留累计频度。
将“累计频度改为“蒙特卡洛模拟”。
7、选择标轴C2:C23
最终选择一个好看的样式,展现辛苦生成的图表就可以啦。

注意事项:这里模拟的项目是一个只有3个首尾相接活动的简单项目。在实际项目中,必须考虑由于活动工期变化所导致的关键路径变化的情况。

3. ▲在Excel表格中怎么进行蒙特卡洛模拟

百度经验详细流程:
http://jingyan.baidu.com/article/fea4511a07ed55f7ba912565.html

▲在Excel表格中怎么进行蒙特卡洛模拟

4. 怎么用 Excel 做蒙特卡洛模拟?

下面试模拟一只股票价格的例子。假设股票价格的对数收益率服从正态分布,均值为0,每日变动标准差为0.1,模拟股票价格1年的路径,过程如下:

用到两个内置函数,即用rand()来产生0到1之间的随机数,然后用norminv()来获得服从既定分布的随机数,即收益率样本=norminv(rand(), 0, 0.1)。假定股票价格的初始值是100元,那么模拟的价格就是 S=100 * exp(cumsum(收益率样本))。
其中的cumsum()不是Excel的内置函数,其意思就是收益率样本的累积,每个时刻的值都是当前样本及此前所有样本的和,如,收益率样本从单元格C3开始,当前计算C15对应的模拟价格,则模拟价格计算公式是:100 * exp(sum($C$3:C15))。
由此可以得到股票价格的一条模拟路径。
其他非正态分布也可以通过类似方式得到分布的抽样,即分布函数的逆函数,这些函数Excel都内置了。所以,做蒙特卡洛模拟的时候,关键是先确定所需模拟的分布,然后进行抽样,然后应用层面的各种公式就可以在抽样的基础上进行计算了。
根据上面提到的思路,其实可以很便捷地为期权做定价。下面就用蒙特卡洛方法为一个普通的欧式看涨期权定价(蒙特卡洛在为普通期权plain vanilla option定价时不占优势,因为相对于解析法而言计算量很大。但是,如果要给结构比较复杂的奇异期权定价时,可能蒙特卡洛法就比较实用,有时可能成为唯一的方法)。
1)假设这个期权是欧式看涨期权,行权价格为50元,标的股票当前的价格也是50元,期权剩余时间是1天。
2)假设标的股票的价格服从对数正态分布,即股票的每日收益率服从正态分布,均值为0,每日标准差为1%。
根据分布假设,首先用rand()函数产生在0到1之间的均匀分布样本。为了提高精确度,这里抽样的数量为1000个(其实1000个是很少的了,通常需要10万个甚至50万个,但是在Excel表格中操作这么多数字,不方便,这是Excel的不足之处)。
下一步,用norminv(probability, mean, std)函数来获得股票收益率分布的1000个抽样,其中的probability参数由rand()产生的抽样逐个代入,mean=0.0, std = 0.01。注意这里抽样得到的日度收益率。也就是说,这个样本对应的下一个交易日股票价格的收益率分布。
下一步,股票价格=50×exp(收益率样本),得到股票价格分布的抽样,有1000个样本。
根据我做的实验,这1000个样本的分布图形(histogram)跟对数正态分布是比较接近的,如下图所示:
图的横轴是股票价格,纵轴是样本中出现的频率。
得到了股票价格未来一天分布的样本之后,就可以以此样本来计算期权的价格了。
欧式看涨期权的定义为:
C=max(S-K,0)
所以,根据这个计算公式可以计算出在到期那天在特定的价格下期权的价值。在Excel中,相当于 期权价值=max(股票价格样本 - 50,0)。由此就可以得到了该期权未来1天价值的样本。
然后,将未来价值贴现回来(用无风险利率贴现,假设无风险利率为0.05,则贴现公式是=exp(-0.05/360)×期权价值,得到期权价格的1000个样本。
最后,对期权价格的1000个样本求平均,Excel函数average(期权价格样本),就可以得到期权的价格了。
我这里算出来的是:0.2015元。
而根据Black-Scholes期权定价公式算出来的理论价格则是0.2103元。二者比较接近,但是还是有差距。
而且,每次刷新Excel表格,就重新做一次模拟,得到的模拟价格变动比较大,有时是0.2043元,有时是0.1989元。由于这个抽样的数量比较小(1000个样本),所以估算的结果受到样本的影响会比较大。如果把抽样数量提高100倍甚至500倍,那么样本变动的影响可能会小一个或者两个数量级。但是计算量就大了,如果计算机性能不够高,那么利用Excel来做的话,比较困难。
这就是我的工作台:

最后,做完这个还是蛮有成就感的。

5. excel怎么实现蒙特卡罗模拟

http://club.excelhome.net/thread-182011-1-1.html
Excel 蒙特卡罗模拟
还有百度文库有相应的论文《基于Excel的蒙特卡罗模拟方法的实现》你可以看看。这个有点专业,只能帮你到这儿了

excel怎么实现蒙特卡罗模拟

6. 怎么用 Excel 做蒙特卡洛模拟

1、首先,填入这三个活动时间估算的乐观值,最可能值和悲观值。
分别计算这三个活动的均值和标准差。
均值=(乐观值+4
*
最可能值
+
悲观值)/
6
标准差=(悲观值-乐观值)/
6
根据第二步计算出来的均值和标准差,对三个活动按照正态分布进行随机模拟。因为是测试项目,这里我们只进行随机100次。
公式:=INT(NORMINV(RAND(),$F$2,$G$2))
其中:NORMINV
正态分布;INT
去整;
RAND()
取随机数;
2、将随机出来的值,进行固化。也就是将上一步中红框的区域,按值复制一份。以防止随机数在每次更改单元格后都会发生变化。
3、由于3个活动均为FS的关系,所以三个互动的时间之和就等于总项目时间。
将总工期考入新的Sheet,并进行从小到大的重新排序。
4、将排序后的数据进行筛选,剔除重复数据。从而的到全部模拟出来工期的值。
进行频度统计。首先选中与总工期相对应的频度下面的单元格D2:D23,然后输入公式“=FREQUENCY(A2:A101,C2:C23)”,然后按下Ctrl+Shift+Enter。如此会计算出模拟出来各个总工期的发生次数。
5、计算积累频度:每一个频度的积累频度=自身的频度+前面所有项的频度之和
选择二维折线图;
6、在添加的空白折线图上右键“选择数据区域”:
数据区域即总工期和积累频度两列。由于我们并不需要总工期呈现为曲线形式,在选择后的对话框中,将总工期删除,只保留累计频度。
将“累计频度改为“蒙特卡洛模拟”。
7、选择标轴C2:C23
最终选择一个好看的样式,展现辛苦生成的图表就可以啦。
注意事项:这里模拟的项目是一个只有3个首尾相接活动的简单项目。在实际项目中,必须考虑由于活动工期变化所导致的关键路径变化的情况。

7. 怎么用 Excel 做蒙特卡洛模拟

简单的办法,
取两列全部输入
=randbetween(0,1000000)/1000000,
取得0-1之间的随机数,
模拟随机点坐标
第三列
=if((A1*A1+B1*B1)<=1,
"A",
"B"),
判断点是否落在圆内。
在这赋值A,
否则为B
第四列=countif(C:C,
"A")
统计圆内点数
=countif(c:C,
"B")
统计圆外点数
两者相除就得出Pi值。
数量有限,所以偏差较大,
我得到的是
3.653244166。
而已。
如果用VBA,再加3个零估计会比较准确一点。

怎么用 Excel 做蒙特卡洛模拟

8. 怎么用 Excel 做蒙特卡洛模拟

简单的办法, 取两列全部输入 =randbetween(0,1000000)/1000000, 取得0-1之间的随机数, 模拟随机点坐标
第三列 =if((A1*A1+B1*B1)<=1, "A", "B"),  判断点是否落在圆内。 在这赋值A, 否则为B
第四列=countif(C:C, "A")  统计圆内点数
=countif(c:C, "B") 统计圆外点数
两者相除就得出Pi值。
数量有限,所以偏差较大, 我得到的是 3.653244166。 而已。 如果用VBA,再加3个零估计会比较准确一点。