simByEuler
随机微分方程的欧拉模拟(sd)钻
,BM
,“绿带运动”
,CEV
,圆形的
,HWV
,赫斯顿
,SDEDDO
,SDELD
,或SDEMRD
模型
描述
(
指定选项使用一个或多个名称-值对参数除了输入参数在前面的语法。路径
,次
,Z
)= simByEuler (___,名称,值
)
您可以执行quasi-Monte卡洛模拟使用名称-值的参数MonteCarloMethod
和QuasiSequence
。有关更多信息,请参见Quasi-Monte卡洛模拟。
例子
使用simByEuler模拟股票市场
加载数据并指定SDE的模型
负载Data_GlobalIdx2价格=(数据集。TSX数据集。CAC Dataset.DAX…数据集。尼克的数据集。FTSE Dataset.SP]; returns = tick2ret(prices); nVariables = size(returns,2); expReturn = mean(returns); sigma = std(returns); correlation = corrcoef(returns); t = 0; X = 100; X = X(ones(nVariables,1)); F = @(t,X) diag(expReturn)* X; G = @(t,X) diag(X) * diag(sigma); SDE = sde(F, G,“相关”,…相关性,“StartState”,X);
模拟单个路径超过一年
nPeriods = 249;% #模拟的观察dt = 1;%时间增量= 1天rng (142857“旋风”)(S, T) = simByEuler (nPeriods钻,“DeltaTime”,dt);
模拟10 SDE的试验和检验模型
rng (142857“旋风”)(S, T) =模拟(nPeriods钻,“DeltaTime”,dt,“nTrials”10);谁年代
类属性名称大小字节年代250 x6x10 120000双
画出路径
情节(T, S(:,: 1)),包含(“交易日”),ylabel (“价格”)标题(“多维市场模式的第一路径”)({传奇“加拿大”“法国”“德国”“日本”“英国”“我们”},…“位置”,“最佳”)
欧拉模拟一个圆形的对象
Cox-Ingersoll-Ross (CIR)短期汇率类直接来自SDE向均数回归漂移(SDEMRD
):
在哪里 是一个对角矩阵的元素是根对应的状态向量的元素。
创建一个圆形的
对象来表示模型:
。
CIR = CIR (0.2, 0.1, 0.05)%(速度、水平、σ)
CIR =类背景:Cox-Ingersoll-Ross - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -维度:状态= 1,布朗= 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -开始时间:0 StartState: 1相关:1漂移:漂移率函数F (t) X (t))扩散:扩散率函数G (t) X (t))模拟:模拟方法/函数simByEulerσ:0.05级:0.1速度:0.2
一年多使用模拟单一路径simByEuler
。
nPeriods = 249;% #模拟的观察dt = 1;%时间增量= 1天rng (142857“旋风”)(路径,次)= simByEuler (CIR、nPeriods“方法”,“higham-mao”,“DeltaTime”dt)
路径=250×11.0000 0.8613 0.7245 0.6349 0.4741 0.3853 0.3374 0.2549 0.1859 0.1814⋮
* =250×10 1 2 3 4 5 6 7 8 9⋮
Quasi-Monte卡洛模拟与simByEuler
使用CIR模型
Cox-Ingersoll-Ross (CIR)短期汇率类直接来自SDE向均数回归漂移(SDEMRD
):
在哪里 是一个对角矩阵的元素是根对应的状态向量的元素。
创建一个圆形的
对象来表示模型:
。
cir_obj = cir (0.2, 0.1, 0.05)%(速度、水平、σ)
cir_obj =类背景:Cox-Ingersoll-Ross - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -维度:状态= 1,布朗= 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -开始时间:0 StartState: 1相关:1漂移:漂移率函数F (t) X (t))扩散:扩散率函数G (t) X (t))模拟:模拟方法/函数simByEulerσ:0.05级:0.1速度:0.2
定义quasi-Monte卡洛模拟使用可选名称参数“MonteCarloMethod”
和“QuasiSequence”
。
(路径、时间、z) = simByEuler (cir_obj 10“ntrials”,4096,“方法”,“基本”,“montecarlomethod”,“准”,“quasisequence”,“sobol”);
Quasi-Monte卡洛模拟与simByEuler
使用赫斯顿模型
赫斯顿(赫斯顿
)类直接来自端漂移和扩散sdeddo
)。每个赫斯顿模型是一个二元复合模型,包括两个耦合的单变量模型:
创建一个赫斯顿
对象。
heston_obj =赫斯顿(0.1,0.2,0.1,0.05)%(返回、速度、水平、波动)
heston_obj =类赫斯顿:赫斯顿二元随机波动率- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -维度:状态= 2,布朗= 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -开始时间:0 StartState: 1 (2 x1双阵列)相关性:2 x2对角双重数组漂移:漂移率函数F (t) X (t))扩散:扩散率函数G (t) X (t))模拟:模拟方法/函数simByEuler返回:0.1速度:0.2级:0.1波动:0.05
定义quasi-Monte卡洛模拟使用可选名称参数“MonteCarloMethod”
和“QuasiSequence”
。
(路径、时间、z) = simByEuler (heston_obj 10“ntrials”,4096,“montecarlomethod”,“准”,“quasisequence”,“sobol”);
Quasi-Monte卡洛模拟与simByEuler
使用“绿带运动”模型
创建一个单变量“绿带运动”
对象来表示模型:
。
gbm_obj =“绿带运动”(0.25,0.3)% (B =回报,σ)
gbm_obj =类GBM:广义几何布朗运动- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -维度:状态= 1,布朗= 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -开始时间:0 StartState: 1相关:1漂移:漂移率函数F (t) X (t))扩散:扩散率函数G (t) X (t))模拟:模拟方法/函数simByEuler返回:0.25σ:0.3
“绿带运动”
对象显示参数B
更熟悉的返回
。
定义quasi-Monte卡洛模拟使用可选名称参数“MonteCarloMethod”
和“QuasiSequence”
。
(路径、时间、z) = simByEuler (gbm_obj 10“ntrials”,4096,“montecarlomethod”,“准”,“quasisequence”,“sobol”);
输入参数
MDL
- - - - - -随机微分方程模型
对象
随机微分方程模型,指定为一个钻
,bm
,“绿带运动”
,cev
,圆形的
,hwv
,赫斯顿
,sdeddo
,sdeld
,或sdemrd
对象。
数据类型:对象
NPeriods
- - - - - -数量的仿真时间
积极的标量整数
仿真时间,指定为一个积极的标量整数。的价值NPeriods
决定了模拟输出的行数。
数据类型:双
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:(路径,乘以,Z) = simByEuler (SDE, NPeriods DeltaTime, dt)
方法
- - - - - -方法来处理负值
“基本”
(默认)|特征向量和价值观“基本”
,“吸收”
,“反射”
,“partial-truncation”
,“full-truncation”
,或“higham-mao”
|字符串值“基本”
,“吸收”
,“反射”
,“partial-truncation”
,“full-truncation”
,或“higham-mao”
方法来处理负值,指定为逗号分隔组成的“方法”
和一个字符与支持向量或字符串值。万博1manbetx
请注意
的方法
参数是只支持在使用万博1manbetx圆形的
对象。创建一个的更多信息圆形的
对象,看到圆形的
。
数据类型:字符
|字符串
NTrials
- - - - - -模拟试验(样本路径)NPeriods
观察每一个
1
(单路径相关的状态变量)(默认)|积极的标量整数
模拟试验(样本路径)NPeriods
观察每个,指定为逗号分隔组成的“NTrials”
和积极的标量整数。
数据类型:双
DeltaTimes
- - - - - -积极的时间增量之间的观察
1
(默认)|标量|列向量
积极的时间增量之间的观察,指定为逗号分隔组成的“DeltaTimes”
和一个标量或NPeriods
——- - - - - -1
列向量。
DeltaTime
代表了熟悉的dt随机微分方程,并确定的时间模拟报告输出状态变量的路径。
数据类型:双
NSteps
- - - - - -中间的步骤在每个时间增量的数量dt(指定为DeltaTime
)
1
(表示没有中间评价)(默认)|积极的标量整数
中间的步骤在每个时间增量的数量dt(指定为DeltaTime
),指定为逗号分隔组成的“NSteps”
和积极的标量整数。
的simByEuler
每一次增量功能分区dt成NSteps
小区间的长度dt/NSteps
通过评估,改进模拟模拟状态向量NSteps−1
中间点。虽然simByEuler
不报告输出状态向量在这些中间点,改进提高精度允许仿真更接近底层连续时间过程近似。
数据类型:双
对立的
- - - - - -国旗表明是否simByEuler
使用对偶的抽样生成高斯随机变量
假
(没有反向取样)(默认)|逻辑值真正的
或假
标志指示是否simByEuler
使用反向抽样生成高斯随机变量驱动布朗运动向量(维纳过程)。这个参数被指定为逗号分隔组成的“反向”
和一个标量逻辑的价值真正的
或假
。
当你指定真正的
,simByEuler
执行抽样,这样所有小学和反向路径模拟并存储在连续匹配双:
奇怪的试验
(1、3、5、…)
对应于主高斯路径。即使试验
(2、4、6,…)
每一对派生的匹配反向路径是通过否定高斯吸引相应的主(奇数)试验。
请注意
如果您指定一个输入噪声过程(见Z
),simByEuler
忽略的价值对立的
。
数据类型:逻辑
Z
- - - - - -相关的随机噪声过程的直接规范用于生成布朗运动向量
生成相关高斯变量的基础上相关
的成员钻
对象(默认)|函数|相依随机变量的三维数组
依赖的随机噪声过程的直接规范用于生成布朗运动向量(维纳过程),驱动仿真。这个参数被指定为逗号分隔组成的“Z”
和一个函数或一个(NPeriods⨉NSteps)
——- - - - - -NBrowns
——- - - - - -NTrials
相依随机变量的三维数组。
请注意
如果您指定Z
作为一个函数,它必须返回一个NBrowns
——- - - - - -1
列向量,必须调用它有两个输入:
一个实值标量观测时间t。
一个
据nvar
——- - - - - -1
状态向量Xt。
数据类型:双
|函数
路径
- - - - - -国旗,表明输出数组路径
保存并返回
真正的
(默认)|逻辑值真正的
或假
国旗,表明输出数组路径
存储并返回,指定为逗号分隔两人组成的吗“路径”
和一个标量逻辑的价值真正的
或假
。
如果路径
是真正的
(默认值)或者是未指定的,simByEuler
返回路径
作为一个三维时间序列数组。
如果路径
是假
(逻辑0
),simByEuler
返回路径
输出数组为空矩阵。
数据类型:逻辑
MonteCarloMethod
- - - - - -蒙特卡罗方法模拟随机过程
“标准”
(默认)|字符串值“标准”
,“准”
,或“randomized-quasi”
|特征向量和价值观“标准”
,“准”
,或“randomized-quasi”
蒙特卡罗方法模拟随机过程,指定为逗号分隔组成的“MonteCarloMethod”
和一个字符串或字符向量与下列值之一:
“标准”
——蒙特卡洛使用伪随机数。“准”
——Quasi-Monte卡使用low-discrepancy序列。“randomized-quasi”
——随机quasi-Monte卡洛。
请注意
如果您指定一个输入噪声过程(见Z
),simByEuler
忽略的价值MonteCarloMethod
。
数据类型:字符串
|字符
QuasiSequence
- - - - - -低偏差序列驱动随机过程
“sobol”
(默认)|字符串值“sobol”
|特征向量和价值“sobol”
低偏差序列驱动随机过程,指定为逗号分隔组成的“QuasiSequence”
和一个字符串或字符向量与下列值之一:
“sobol”
——拟随机low-discrepancy序列,使用一个基地的两个先后形成细均匀分区单位间隔,然后重新排序每个维度的坐标
请注意
如果MonteCarloMethod
选项没有指定或指定为“标准”
,QuasiSequence
将被忽略。
数据类型:字符串
|字符
流程
- - - - - -期末序列过程或状态向量的调整
simByEuler
使没有调整并执行处理(默认)|函数|单元阵列的功能
序列的期末过程或状态向量的调整形式,指定为逗号分隔组成的“过程”
和一个函数或函数单元阵列的形式
的simByEuler
时间运行在每个插值处理功能函数。他们必须接受当前插值时间t,当前状态向量Xt,并返回一个状态向量调整输入状态。
如果你指定多个处理函数,simByEuler
在它们出现的顺序调用函数在单元阵列。你可以使用这个参数来指定边界条件,防止负面价格,积累数据,绘制图表等等。
数据类型:细胞
|函数
输出参数
路径
——模拟路径相关的状态变量
数组
模拟路径相关的状态变量,作为一个返回(NPeriods + 1)
——- - - - - -据nvar
——- - - - - -NTrials
三维时间序列数组。
对于一个给定的试验中,每一行路径
状态向量的转置Xt在时间t。当输入信号路径
=假
,simByEuler
返回路径
作为一个空矩阵。
次
-观测与模拟路径有关
列向量
观察时间与模拟路径有关,作为一个返回(NPeriods + 1)
——- - - - - -1
列向量。的每个元素次
与相应的行吗路径
。
Z
——独立随机变量用于生成布朗运动向量
数组
相依随机变量用于生成布朗运动向量驱动仿真(维纳过程),作为一个返回(NPeriods⨉NSteps)
——- - - - - -NBrowns
——- - - - - -NTrials
三维时间序列数组。
更多关于
对偶的抽样
模拟方法允许您指定一个流行方差减少技术对偶的抽样。
这种方法试图取代一个序列的随机观测与另一个相同的期望值,但较小的方差。在一个典型的蒙特卡罗模拟,每个样本路径是独立的,代表了一个独立的审判。然而,反向抽样生成成对样本路径。的第一个路径被称为主要路径,第二个的反向路径。任何一对独立于任何其他,但两条路径在每一对都是高度相关的。反向取样文学常常建议平均每一对的贴现回报,有效蒙特卡罗试验的数量减半。
这种技术试图降低方差诱导负输入配对样本之间的依赖,理想情况下导致消极依赖之间的配对样本的输出。消极的依赖程度越大,更有效的反向取样。
算法
这个函数模拟任何向量值的表单
地点:
X是一个据nvar——- - - - - -
1
状态向量的过程变量(例如,短期利率或股票价格)来模拟。W是一个NBrowns——- - - - - -
1
布朗运动向量。F是一个据nvar——- - - - - -
1
向量值函数漂移率。G是一个据nvar——- - - - - -NBrowns矩阵值扩散率函数。
simByEuler
模拟NTrials
样本路径据nvar
状态变量由相关NBrowns
布朗运动的风险来源NPeriods
连续观察时期,用欧拉方法近似的连续时间随机过程。
这个模拟引擎提供了一个潜在的广义连续时间过程的离散近似。仿真是直接从运动的随机微分方程。因此,离散时间过程只接近真正的连续时间过程
DeltaTime
接近零。输入参数
Z
允许您直接指定噪音的产生过程。这个过程优先于相关
参数的钻
对象和的值对立的
输入信号。如果你不指定一个值Z
,simByEuler
生成相关的高斯变量,有或没有反向取样要求。期末
流程
参数允许您提前终止一个给定的试验。在每个时间步长,simByEuler
测试状态向量Xt对于一个所有- - -南
条件。因此,信号给定的早期终止试验,状态向量的所有元素Xt必须南
。这个测试允许一个用户定义的流程
函数信号提前终止试验,并提供显著的性能优势在某些情况下(例如,穷困潦倒的障碍期权定价)。
引用
[1]Deelstra、g和f . Delbaen。“收敛的离散随机(利率)和随机漂移项过程。”应用随机模型和数据分析。1998年,14卷,没有。1,页77 - 84。
[2]海厄姆,德斯蒙德,Xuerong毛。“融合涉及向均数回归的平方根的蒙特卡罗模拟过程。”计算金融杂志上,8卷,不。3、2005年,35 - 61页。
[3]主啊,罗杰,et al。”比较偏向随机波动模型模拟方案。”定量金融学,10卷,不。2、2010年2月,页177 - 94
版本历史
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。