⑴ 什么是蒙特卡洛模拟( Monte Carlo simulation)
我们一直面对着不确定,不明确和变异。甚至我们无法获得信息,我们不能准确的预测未来。蒙特卡洛模拟( Monte Carlo simulation)让您看到了您决策的所有可能的输出,并评估风险,允许在不确定的情况下制定更好的决策。蒙特卡洛模拟( Monte Carlo simulation)是一种计算机数学技术,允许人们在定量分析和决策制定过程中量化风险。这项技术被专家们用于各种不同的领域,比如财经,项目管理,能源,生产,工程,研究和开发,保险,石油&天然气,物流和环境。蒙特卡洛模拟( Monte Carlo simulation)提供给了决策制定者大范围的可能输出和任意行动选择将会发生的概率。它显示了极端的可能性-最的输出,最保守的输出-以及对于中间路线决策的最可能的结果。这项技术首先被从事原子弹工作的科学家使用;它被命名为蒙特卡洛,摩纳哥有名的娱乐旅游胜地。它是在二战的时候被传入的,蒙特卡洛模拟( Monte Carlo simulation)现在已经被用于建模各种物理和概念系统。蒙特卡洛模拟( Monte Carlo simulation)是如何工作的蒙特卡洛模拟( Monte Carlo simulation)通过构建可能结果的模型-通过替换任意存在固有不确定性的因子的一定范围的值(概率分布)-来执行风险分析。它一次又一次的计算结果,每次使用一个从概率分布获得的不同随机数集。根据不确定数和为他们制定的范围,蒙特卡洛模拟( Monte Carlo simulation)能够在它完成计算前调用成千上万次的重复计算。蒙特卡洛模拟( Monte Carlo simulation)产生可能结果输出值的分布。通过使用概率分布,变量能够拥有不同结果发生的不同概率。概率分布是一种用来描述风险分析的变量中的不确定性的更加可行的方法。常用的概率分布包括:正态分布(Normal)-或"钟型曲线".用户简单的定义均值或期望值和标准差来描述关于均值的变异。在中部靠近均值的值是最有可能发生的值。它是对称的,可以用来描述多种自然现象,比如人的身高。可以通过正态分布描述的变量示例包括通货膨胀率和能源价格。对数正态分布(Lognormal)-值是正偏的,不像正态分布那样是对称的。它被用来代表不会小于零但可能有无限大正值的结果。可以通过对数正态分布描述的变量示例包括房地产价值,股票价格和石油储量。均匀分布(Uniform)-所有的值发生的机会相等,用户只需制定最小和最大值。可以通过均匀分布描述的变量示例包括一个新产品的制造费用或未来销售收入。三角分布(Triangular)-用户指定最小,最可能和最大值。在最可能附近的值最可能发生。可以通过三角分布描述的变量示例包括每时间单位内的过去销售历史和库存水平。PERT分布-用户指定最小,最可能和最大值,类似三角分布。在最可能附近的值最可能发生。然而在最可能和极值之间的值比三角分布更有可能发生;那就是说,the extremes are not as emphasized. 可以通过三角分布描述的变量示例包括在项目管理模型中的一项任务的持续时间。离散分布(Discrete)-用户指定最可能发生的值和每个值的可能性。比如关于诉讼结果的示例,20%的机会陪审团判决无罪,30%的机会陪审团判决有罪,40%的机会审批有效,10%的机会审批无效。在蒙特卡洛模拟( Monte Carlo simulation)过程中,值被从输入概率分布中随机抽取。每个样本集被称为一次迭代,从样本获得的结果被记录。蒙特卡洛模拟( Monte Carlo simulation)执行这样的操作成百上千次,可能结果形成一个概率分布。用这种方法,蒙特卡洛模拟( Monte Carlo simulation)生成了一个更加全面关于将会发生的结果的视图。它不仅仅告诉什么结果会发生,而且还有结果发生的可能性。蒙特卡洛模拟( Monte Carlo simulation)提供了许多超越确定性或"单点估计"分析的优势:概率结果,结果不仅显示会发生什么,而且还有每个结果发生的可能性图形化报告,因为蒙特卡洛模拟( Monte Carlo simulation)生成的数据,它很容易创建不同结果和他们发生机会的图形。这对于和其他投资者沟通结果是很重要的。敏感性分析,如果只有很少的一些案例,确定性分许就很难发现哪个变量对结果影响最大。在蒙特卡洛模拟( Monte Carlo simulation)中,很容易发现哪个输入对底线结果有最大的影响。情境分析,在确定性模型中,对于为不同输入值的不同组合建模来真实的查看不同情境的效果是很困难的。使用蒙特卡洛模拟( Monte Carlo simulation),分析员能够正确的查看当确定的输出发生时某个输入对应的值。这对于进一步的分析来说是无价的。相关性输入,在蒙特卡洛模拟( Monte Carlo simulation)中,可能要建模输入变量之间的相关关系。它对于准确的描绘在某些因子增长时,其它的因子是如何增长或下降的情况时是重要的。
⑵ 如何用python实现Markowitz投资组合优化
多股票策略回测时常常遇到问题。
仓位如何分配?
你以为基金经理都是一拍脑袋就等分仓位了吗?
或者玩点玄乎的斐波拉契数列?
OMG,谁说的黄金比例,让我看到你的脑袋(不削才怪)!!
其实,这个问题,好多好多年前马科维茨(Markowitz)我喜爱的小马哥就给出答案——投资组合理论。
根据这个理论,我们可以对多资产的组合配置进行三方面的优化。
1.找到有效前沿。在既定的收益率下使组合的方差最小。
2.找到sharpe最优的组合(收益-风险均衡点)
3.找到风险最小的组合
跟着我,一步两步,轻松实现。
该理论基于用均值和方差来表述组合的优劣的前提。将选取几只股票,用蒙特卡洛模拟初步探究组合的有效前沿。
通过最大Sharpe和最小方差两种优化来找到最优的资产组合配置权重参数。
最后,刻画出可能的分布,两种最优以及组合的有效前沿。
注:
文中的数据API来自量化平台聚宽,在此表示感谢。
原文见【组合管理】——投资组合理论(有效前沿)(包含正态检验部分)
0.导入需要的包
import pandas as pd
import numpy as np
import statsmodels.api as sm #统计运算
import scipy.stats as scs #科学计算
import matplotlib.pyplot as plt #绘图
1.选取几只感兴趣的股票
000413 东旭光电,000063 中兴通讯,002007 华兰生物,000001 平安银行,000002 万科A
并比较一下数据(2015-01-01至2015-12-31)
In[1]:
stock_set = ['000413.XSHE','000063.XSHE','002007.XSHE','000001.XSHE','000002.XSHE']
noa = len(stock_set)
df = get_price(stock_set, start_date = '2015-01-01', end_date ='2015-12-31', 'daily', ['close'])
data = df['close']
#规范化后时序数据
(data/data.ix[0]*100).plot(figsize = (8,5))
Out[1]:
2.计算不同证券的均值、协方差
每年252个交易日,用每日收益得到年化收益。计算投资资产的协方差是构建资产组合过程的核心部分。运用pandas内置方法生产协方差矩阵。
In [2]:
returns = np.log(data / data.shift(1))
returns.mean()*252
Out[2]:
000413.XSHE 0.184516
000063.XSHE 0.176790
002007.XSHE 0.309077
000001.XSHE -0.102059
000002.XSHE 0.547441
In [3]:
returns.cov()*252
Out[3]:
3.给不同资产随机分配初始权重
由于A股不允许建立空头头寸,所有的权重系数均在0-1之间
In [4]:
weights = np.random.random(noa)
weights /= np.sum(weights)
weights
Out[4]:
array([ 0.37505798, 0.21652754, 0.31590981, 0.06087709, 0.03162758])
4.计算预期组合年化收益、组合方差和组合标准差
In [5]:
np.sum(returns.mean()*weights)*252
Out[5]:
0.21622558669017816
In [6]:
np.dot(weights.T, np.dot(returns.cov()*252,weights))
Out[6]:
0.23595133640121463
In [7]:
np.sqrt(np.dot(weights.T, np.dot(returns.cov()* 252,weights)))
Out[7]:
0.4857482232609962
5.用蒙特卡洛模拟产生大量随机组合
进行到此,我们最想知道的是给定的一个股票池(证券组合)如何找到风险和收益平衡的位置。
下面通过一次蒙特卡洛模拟,产生大量随机的权重向量,并记录随机组合的预期收益和方差。
In [8]:
port_returns = []
port_variance = []
for p in range(4000):
weights = np.random.random(noa)
weights /=np.sum(weights)
port_returns.append(np.sum(returns.mean()*252*weights))
port_variance.append(np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252, weights))))
port_returns = np.array(port_returns)
port_variance = np.array(port_variance)
#无风险利率设定为4%
risk_free = 0.04
plt.figure(figsize = (8,4))
plt.scatter(port_variance, port_returns, c=(port_returns-risk_free)/port_variance, marker = 'o')
plt.grid(True)
plt.xlabel('excepted volatility')
plt.ylabel('expected return')
plt.colorbar(label = 'Sharpe ratio')
Out[8]:
6.投资组合优化1——sharpe最大
建立statistics函数来记录重要的投资组合统计数据(收益,方差和夏普比)
通过对约束最优问题的求解,得到最优解。其中约束是权重总和为1。
In [9]:
def statistics(weights):
weights = np.array(weights)
port_returns = np.sum(returns.mean()*weights)*252
port_variance = np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252,weights)))
return np.array([port_returns, port_variance, port_returns/port_variance])
#最优化投资组合的推导是一个约束最优化问题
import scipy.optimize as sco
#最小化夏普指数的负值
def min_sharpe(weights):
return -statistics(weights)[2]
#约束是所有参数(权重)的总和为1。这可以用minimize函数的约定表达如下
cons = ({'type':'eq', 'fun':lambda x: np.sum(x)-1})
#我们还将参数值(权重)限制在0和1之间。这些值以多个元组组成的一个元组形式提供给最小化函数
bnds = tuple((0,1) for x in range(noa))
#优化函数调用中忽略的唯一输入是起始参数列表(对权重的初始猜测)。我们简单的使用平均分布。
opts = sco.minimize(min_sharpe, noa*[1./noa,], method = 'SLSQP', bounds = bnds, constraints = cons)
opts
Out[9]:
status: 0
success: True
njev: 4
nfev: 28
fun: -1.1623048291871221
x: array([ -3.60840218e-16, 2.24626781e-16, 1.63619563e-01, -2.27085639e-16, 8.36380437e-01])
message: 'Optimization terminated successfully.'
jac: array([ 1.81575805e-01, 5.40387481e-01, 8.18073750e-05, 1.03137662e+00, -1.60038471e-05, 0.00000000e+00])
nit: 4
得到的最优组合权重向量为:
In [10]:
opts['x'].round(3)
Out[10]:
array([-0. , 0. , 0.164, -0. , 0.836])
sharpe最大的组合3个统计数据分别为:
In [11]:
#预期收益率、预期波动率、最优夏普指数
statistics(opts['x']).round(3)
Out[11]:
array([ 0.508, 0.437, 1.162])
7.投资组合优化2——方差最小
接下来,我们通过方差最小来选出最优投资组合。
In [12]:
#但是我们定义一个函数对 方差进行最小化
def min_variance(weights):
return statistics(weights)[1]
optv = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)
optv
Out[12]:
status: 0
success: True
njev: 7
nfev: 50
fun: 0.38542969450547221
x: array([ 1.14787640e-01, 3.28089742e-17, 2.09584008e-01, 3.53487044e-01, 3.22141307e-01])
message: 'Optimization terminated successfully.'
jac: array([ 0.3851725 , 0.43591119, 0.3861807 , 0.3849672 , 0.38553924, 0. ])
nit: 7
方差最小的最优组合权重向量及组合的统计数据分别为:
In [13]:
optv['x'].round(3)
Out[13]:
array([ 0.115, 0. , 0.21 , 0.353, 0.322])
In [14]:
#得到的预期收益率、波动率和夏普指数
statistics(optv['x']).round(3)
Out[14]:
array([ 0.226, 0.385, 0.587])
8.组合的有效前沿
有效前沿有既定的目标收益率下方差最小的投资组合构成。
在最优化时采用两个约束,1.给定目标收益率,2.投资组合权重和为1。
In [15]:
def min_variance(weights):
return statistics(weights)[1]
#在不同目标收益率水平(target_returns)循环时,最小化的一个约束条件会变化。
target_returns = np.linspace(0.0,0.5,50)
target_variance = []
for tar in target_returns:
cons = ({'type':'eq','fun':lambda x:statistics(x)[0]-tar},{'type':'eq','fun':lambda x:np.sum(x)-1})
res = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)
target_variance.append(res['fun'])
target_variance = np.array(target_variance)
下面是最优化结果的展示。
叉号:构成的曲线是有效前沿(目标收益率下最优的投资组合)
红星:sharpe最大的投资组合
黄星:方差最小的投资组合
In [16]:
plt.figure(figsize = (8,4))
#圆圈:蒙特卡洛随机产生的组合分布
plt.scatter(port_variance, port_returns, c = port_returns/port_variance,marker = 'o')
#叉号:有效前沿
plt.scatter(target_variance,target_returns, c = target_returns/target_variance, marker = 'x')
#红星:标记最高sharpe组合
plt.plot(statistics(opts['x'])[1], statistics(opts['x'])[0], 'r*', markersize = 15.0)
#黄星:标记最小方差组合
plt.plot(statistics(optv['x'])[1], statistics(optv['x'])[0], 'y*', markersize = 15.0)
plt.grid(True)
plt.xlabel('expected volatility')
plt.ylabel('expected return')
plt.colorbar(label = 'Sharpe ratio')
Out[16]:
⑶ 蒙特卡洛公式计算股价准确吗
蒙特卡洛公式计算股价准确。蒙特卡罗方法是由冯诺依曼和乌拉姆等人发明的,蒙特卡罗这个名字是出自摩纳哥的蒙特卡罗赌场,这个方法是一类基于概率的方法的统称,不是特指一种方法。蒙特卡罗方法也成统计模拟方法,是指使用随机数(或者更常见的伪随机数)来解决很多计算问题的方法。工作原理就是两件事:不断抽样、逐渐逼近。
⑷ 看到一篇讲投资组合信用风险的文章,里面说序贯蒙特卡洛方法,请问这种方法的详细解释,谢谢。
什么叫“序贯”?
蒙特卡洛方法是一种模拟方法,主要思想是在一个特定的样本中重复进行大量抽样,从而模拟出现实世界中的数据形态的一种方法,一般使用计算机进行。当然,样本是有要求的,抽样方法也是特定的。更详细的牵涉到比较深的数学,尤其是随机过程,还有计量经济学、统计。建议去看书,一两篇帖子说不清楚。
⑸ 下面的问题用蒙特卡洛模拟如何实现啊,想了解个基本过程
蒙特卡洛的基本原理就是通过计算机的计算能力进行大量实验。实验样本到达一定数量后,能得出接近结果的数值解。这个题目可以通过计算直接得出结果接近于正态分布,但可以用excel简单的说明下蒙特卡洛方法。
用excel的步骤基本如下:
1、第一列拉出各周期编号1至1000。(假设都是从第一行开始)
2、第二列作为随机种子,B1输入=rand()
3、第三列为根据既定价格及概率p值(回答里写的p值,但输入时应该是具体数值)判断购买与否,C1输入=if(B1<p,1,0)
4、第四列、五列展示周期开始、结束时剩余货物,即D1为50,E1输入=max(D1-C1,0),而后D2输入=E1,E2输入=max(D1-C1,0)。
5、每一列对应下拉(四、五列从第二行开始下拉)。
按这个步骤的话,就得出一个既定价格下,剩余产品数量随时间变化的表。
至于最后的利润也是可以根据这个算的。
不过以上的过程是基于对每个周期买的概率进行1000次蒙特卡洛模拟。
如果模拟的是这1000次周期的结果,那就直接用一列到位,对多列的结果进行统计。
第1列仍然编号,第2列直接整合上述234步,表示该周期初始货物存货,第1行50,第二行B2输入=IF(RAND()<p,MAX(B1-1,0),B1),这里用的p仍然是数值的表示,比如说概率是0.7,实际应该输入=IF(RAND()<0.7,MAX(B1-1,0),B1)
下拉,出现到1000步的初始货物存货,根据要求实际上是1000步后的结果,可以拉到1001行。这就用单列表示了整个货物变化过程,如果想要更多1000步的不同结果,把整个b列右拉即有更多结果。
⑹ 怎么用 Excel 做蒙特卡洛模Ƌ
下面是在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))。
由此可以得到股票价格的一条模拟路径。
------ 再来一个 --------
看到有人提到利用蒙特卡洛方法来估计圆周率Pi,挺有意思,也简单,所以就在Excel中做了一个实验。
基本原理在于在直角坐标系中的第一个象限中的一个单位圆,如下图所示:
在这个面积为1的正方形中,有四分之一的圆,圆的半径与正方向的边长都是1。那么根据圆的面积公式,这个图形中阴影部分的面积应该是 Pi/4。
下面开始进入蒙特卡洛的解法。
即,如果我们对这个正方形平面中的点进行均匀地抽样,随着抽样点的增多,那么落入阴影内的点的数量与总抽样数量的比,应该基本上等于阴影的面积Pi/4与整个正方形面积1的比,即Pi/4。用数学表示,就是
阴影内的样本点数量 ÷ 总数量 = Pi/4
所以,Pi = 4 × 阴影内的样本点数量 ÷ 总数量。
下面就在Excel中进行实验。
用rand()函数生成2000个随机数,作为随机样本点的X轴坐标,
再用rand()函数生成2000个随机数,作为随机样本点的Y轴坐标。
如此就得到了2000个随机样本点,这些点的X轴坐标和Y轴坐标都大于零且小于1,所以是在前面所说的正方形之中的点。
下一步,判断样本点是否处于阴影之内,由于这个阴影就是单位圆在直角坐标系第一想象的四分之一,所以圆阴影内的点都符合如下不等式:
翻译到Excel中,就是用IF函数来判断,例如:
IF(A2^2 + B2^2 <=1, 1, 0)
即,如果样本点在阴影中,得到1,否则得到0。这样就把样本点区分开来了。
最后,把所有得到的1和0加总,就知道所有样本点中处于阴影中样本点的数量了。
最后根据
Pi = 4 × 阴影内的样本点数量 ÷ 总数量
就可以算出Pi来了。
我这个试验中算出来的 Pi=3.142。
以下是样本点的散点图:
由于样本数量有限,所以计算出来的Pi的精度并不高。
以下是工作界面,挺简单的。
来源:知乎
⑺ 什么是蒙特卡洛模拟( Monte Carlo simulation)
蒙特卡洛模拟又称为随机抽样或统计试验方法,属于计算数学的一个分支,它是在上世纪四十年代中期为了适应当时原子能事业的发展而发展起来的。传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。
蒙特卡洛随机模拟法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。
蒙特卡洛随机模拟法 - 实施步骤抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。
基本原理思想
当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。
蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。可以把蒙特卡罗解题归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。
⑻ 蒙特卡洛模拟法
蒙特卡洛模拟技术,是用随机抽样的方法抽取一组满足输入变量的概率分布特征的数值,输入这组变量计算项目评价指标,通过多次抽样计算可获得评价指标的概率分布及累计概率分布、期望值、方差、标准差,计算项目可行或不可行的概率,从而估计项目投资所承担的风险。
蒙特卡洛模拟的步骤如下:
第一步,通过敏感性分析,确定风险变量。
第二步,构造风险变量的概率分布模型。
第三步,为各输入风险变量抽取随机数。
第四步,将抽得的随机数转化为各输入变量的抽样值。
第五步,将抽样值组成一组项目评价基础数据。
第六步,根据基础数据计算出评价指标值。
第七步,整理模拟结果所得评价指标的期望值、方差、标准差和它的概率分布及累计概率,绘制累计概率图,计算项目可行或不可行的概率。
蒙特卡洛模拟程序如图7-26所示。
图7-26 蒙特卡洛模拟程序图
【实训Ⅷ】某项目建设投资为1亿元,流动资金1000 万元,项目两年建成,第三年投产,当年达产。不含增值税年销售收入为5000万元,经营成本2000万元,附加税及营业外支出每年为50万元,项目计算期12 a。项目要求达到的项目财务内部收益率为15%,求内部收益率低于15%的概率。
由于蒙特卡洛模拟的计算量非常大,必须借助计算机来进行。本案例通过手工计算,模拟20次,主要是演示模拟过程。
(1)确定风险变量。通过敏感性分析,得知建设投资、产品销售收入、经营成本为主要风险变量。流动资金需要量与经营成本线性相关,不作为独立的输入变量。
(2)构造概率分布模型。建设投资变化概率服从三角形分布,其悲观值为1.3亿元、最大可能值为1亿元、乐观值为9000万元,如图7-27所示。年销售收入服从期望值为5000万元、σ=300万元的正态分布。年经营成本服从期望值为2000万元、σ=100 万元的正态分布。
图7-27 投资三角形分布图
建设投资变化的三角形分布的累计概率,见表7-16及图7-27所示。
表7-16 投资额三角形分布累计概率表
(3)对投资、销售收入、经营成本分别抽取随机数,随机数可以由计算机产生,或从随机数表中任意确定起始数后,顺序抽取。本例从随机数表(表7-20)中抽取随机数。假定模拟次数定为k=20,从随机数表中任意从不同地方抽取三个20 个一组的随机数,见表7-17。
表7-17 输入变量随机抽样取值
(4)将抽得的随机数转化为各随机变量的抽样值。
这里以第1组模拟随机变量产生做出说明。
1)服从三角形分布的随机变量产生方法。
根据随机数在累计概率表(表7-16)或累计概率图(图7-28)中查取。投资的第1个随机数为48867万元,查找累计概率0.48 867所对应的投资额,从表7-16中查得投资额在10300与10600之间,通过线性插值可得
第1个投资抽样值=10300+300×(48867-39250)/(52000-39250)=10526万元
2)服从正态分布的随机变量产生方法。
从标准正态分布表(表7-21)中查找累计概率与随机数相等的数值。例如销售收入第1个随机数06242,查标准正态分布表得销售收入的随机离差在-1.53与-1.54之间,经线性插值得-1.5348。
图7-28 投资的累计概率分布图
第1个销售收入抽样值=5000-1.5348×300≈4540万元。
同样,经营成本第一个随机数66 903相应的随机变量离差为0.4328,第一个经营成本的抽样值=2000+100×0.4328=2043万元。
3)服从离散型分布的随机变量的抽样方法。
本例中没有离散型随机变量。另举例如下,据专家调查获得的某种产品售价的概率分布见表7-18。
表7-18 某种产品售价的概率分布
根据上表绘制累计概率如图7-29所示。
若抽取的随机数为43252,从累计概率图纵坐标上找到累计概率为0.43252,划一水平线与累计概率折线相交的交点的横坐标值125元,即是售价的抽样值。
(5)投资、销售收入、经营成本各20个抽样值组成20组项目评价基础数据。
(6)根据20组项目评价基础数据,计算出20 个计算项目评价指标值,即项目财务内部收益率。
(7)模拟结果达到预定次数后,整理模拟结果按内部收益率从小到大排列并计算累计概率,见表7-19所示。
从累计概率表可知内部收益率低于15%的概率为15%,内部收益率高于15%的概率为85%。
图7-29 售价累计概率曲线
表7-19 蒙特卡洛模拟法累积概率计算表
①每次模拟结果的概率=1/模拟次数。