蒙特卡洛模拟法及其Matlab案例

一 蒙特卡洛模拟法简介

蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增高。由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度的计算机为前提条件的,因此只是在近些年才得到广泛推广。

这个术语是二战时期美国物理学家Metropolis执行曼哈顿计划的过程中提出来的。

蒙特卡洛模拟方法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。

二 蒙特卡洛模拟法求解步骤

应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。

解题步骤如下:

1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致

2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。

3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。

4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。

5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。

三 蒙特卡洛模拟法的应用领域

蒙特卡洛模拟法的应用领域主要有:

1.直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标。

2.蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。

3.MCMC:这是直接应用蒙特卡洛模拟方法的推广,该方法中随机数的产生是采用的马尔科夫链形式。

四 资产组合模拟

假设有五种资产,其日收益率(%)分别为

0.0246 0.0189 0.0273 0.0141 0.0311

标准差分别为

0.9509 1.4259, 1.5227, 1.1062, 1.0877

相关系数矩阵为

1.0000 0.4403 0.4735 0.4334 0.6855

0.4403 1.0000 0.7597 0.7809 0.4343

0.4735 0.7597 1.0000 0.6978 0.4926

0.4334 0.7809 0.6978 1.0000 0.4289

0.6855 0.4343 0.4926 0.4289 1.0000

假设初始价格都为100,模拟天数为504天,模拟线程为2,程序如下

%run.m

ExpReturn = [0.0246 0.0189 0.0273 0.0141 0.0311]/100; %期望收益

Sigmas = [0.9509 1.4259, 1.5227, 1.1062, 1.0877]/100;%标准差

Correlations = [1.0000 0.4403 0.4735 0.4334 0.6855

0.4403 1.0000 0.7597 0.7809 0.4343

0.4735 0.7597 1.0000 0.6978 0.4926

0.4334 0.7809 0.6978 1.0000 0.4289

0.6855 0.4343 0.4926 0.4289 1.0000

];%相关系数

ExpCov = corr2cov(Sigmas, Correlations);%协方差

StartPrice = 100;%初始价格

NumObs = 504;

NumSim = 2;

RetIntervals = 1;

NumAssets = 5;

%开始模拟

randn('state', 0);

RetExact = portsim(ExpReturn, ExpCov, NumObs, RetIntervals, NumSim);

Weights = ones(NumAssets, 1)/ NumAssets;

PortRetExact = zeros(NumObs, NumSim);

for i = 1:NumSim

PortRetExact(:, i) = RetExact(:,:,i)*Weights;

end

PortExact = ret2tick(PortRetExact, repmat(StartPrice, 1, NumSim));

plot(PortExact, '-r');

一 蒙特卡洛模拟法简介

蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增高。由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度的计算机为前提条件的,因此只是在近些年才得到广泛推广。

这个术语是二战时期美国物理学家Metropolis执行曼哈顿计划的过程中提出来的。

蒙特卡洛模拟方法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。

二 蒙特卡洛模拟法求解步骤

应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。

解题步骤如下:

1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致

2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。

3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。

4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。

5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。

三 蒙特卡洛模拟法的应用领域

蒙特卡洛模拟法的应用领域主要有:

1.直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标。

2.蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。

3.MCMC:这是直接应用蒙特卡洛模拟方法的推广,该方法中随机数的产生是采用的马尔科夫链形式。

四 资产组合模拟

假设有五种资产,其日收益率(%)分别为

0.0246 0.0189 0.0273 0.0141 0.0311

标准差分别为

0.9509 1.4259, 1.5227, 1.1062, 1.0877

相关系数矩阵为

1.0000 0.4403 0.4735 0.4334 0.6855

0.4403 1.0000 0.7597 0.7809 0.4343

0.4735 0.7597 1.0000 0.6978 0.4926

0.4334 0.7809 0.6978 1.0000 0.4289

0.6855 0.4343 0.4926 0.4289 1.0000

假设初始价格都为100,模拟天数为504天,模拟线程为2,程序如下

%run.m

ExpReturn = [0.0246 0.0189 0.0273 0.0141 0.0311]/100; %期望收益

Sigmas = [0.9509 1.4259, 1.5227, 1.1062, 1.0877]/100;%标准差

Correlations = [1.0000 0.4403 0.4735 0.4334 0.6855

0.4403 1.0000 0.7597 0.7809 0.4343

0.4735 0.7597 1.0000 0.6978 0.4926

0.4334 0.7809 0.6978 1.0000 0.4289

0.6855 0.4343 0.4926 0.4289 1.0000

];%相关系数

ExpCov = corr2cov(Sigmas, Correlations);%协方差

StartPrice = 100;%初始价格

NumObs = 504;

NumSim = 2;

RetIntervals = 1;

NumAssets = 5;

%开始模拟

randn('state', 0);

RetExact = portsim(ExpReturn, ExpCov, NumObs, RetIntervals, NumSim);

Weights = ones(NumAssets, 1)/ NumAssets;

PortRetExact = zeros(NumObs, NumSim);

for i = 1:NumSim

PortRetExact(:, i) = RetExact(:,:,i)*Weights;

end

PortExact = ret2tick(PortRetExact, repmat(StartPrice, 1, NumSim));

plot(PortExact, '-r');


相关内容

  • 最优投资组合实验
  • <证券投资分析>上机实验 上机实验要求: 第6,8,10,12周星期三1,2节实验课,共分为四项上机实验项目,上机完成实验内容: 具体内容与步骤: (一)数据收集:3-5项股票的价格,上证指数(至少1年时间跨度),K线图,上市公司财务数据 中国股市股票组合的适宜规模为5-10种股票 为了 ...

  • 蒙特卡洛算法
  • 根据我的理解简单的说就是以部分估计整体,利用随机数来解决问题的方法称为 蒙特卡罗算法,记得课本上讲了个例题: 在数值积分法中,我们利用求单位圆的1/4的面积来求得Pi/4从而得到Pi .单 位圆的1/4面积是一个扇形,它是边长为1单位正方形的一部分(若能画图就好 了!)只要能求出扇行面积S1在正方形 ...

  • 计算机模拟在数学建模中的应用
  • 第 22 卷第 1 期 海南大学学报自然科学版 Vol . 22 No . 1 文章编号:1004 - 1729 (2004) 01 - 0089 - 07 计算机模拟在数学建模中的应用 欧宜贵 , 李志林 , 洪世煌 (海南大学信息科学技术学院 , 海南海口 570228) 摘 要: 阐述了计算机 ...

  • 布朗运动的计算机模拟
  • 摘 要:布朗运动及其相关研究已经从自然科学进一步渗透到社会科学.当前计算机技术的应用成为科学研究快速.准确解决问题的方法.基于单片机的自动图像采集系统,借助Matlab处理工具对实验数据进行分析.计算,为布朗运动的深入研究提供可靠的实验数据. 关键词:单片机:控制系统:布朗运动 布朗运动(Brown ...

  • 数学建模十大经典算法
  • 1.蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,是比赛时必用的方法) 2.数据拟合.参数估计.插值等数据处理算法(比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用Matlab 作为工具) 3.线性规划. ...

  • [成本会计实训]教案
  • <数学实验>教案 实验一:Matlab 基本操作 一.实验基本情况 [实验学时]2学时 [实验形式]实验室小课 [实验重点]Matlab 软件的一些基本操作和常用命令 [实验难点]Matlab 软件的一些基本操作和常用命令 [参考书] 1.张志涌等编,精通MATLAB6.5,北京航空航天 ...

  • 数理金融课程设计
  • 陕 西 科 技 大 学 数理金融 课程设计任务书 学院 专业 题目: 南山铝业--股票价格及期权分析 课程设计从 2012 年 5 月 29 日起到 2012 年 6 月 5 日 1.课程设计的内容和要求(包括原始数据.技术要求.工作要求等): ①绘制一个股价和时间的散点图(或拟合成曲线亦可):②估 ...

  • 蒲丰投针问题
  • 蒙特卡罗方法概述 § 8.2 引例:蒲丰投针问题 在用传统方法难以解决的问题中,有很大一部分可以用概率模型进行描述.由于这类模型含有不确定的随机因素,分析起来通常比确定性的模型困难.有的模型难以作定量分析,得不到解析的结果,或者是虽有解析结果,但计算代价太大以至不能使用.在这种情况下,可以考虑采用M ...

  • 第二章.数学模型的分类
  • 学习目标 (1) 了解数学建模的方法和步骤以及数学模型的分类. (2) 具备数学建模常用思维方法及能力. 根据研究目的,对研究的过程和现象(称为现实原型或原型)的主要特征.主要关系采用形式化的数学语言,概括地.近似地表达出来的一种结构.所谓"数学化",指的就是构造数学模型通过研究 ...