分层抽样

模拟方法允许您直接指定一个噪声过程,作为时间和状态的可调用函数:

z t Z t X t

分层抽样方差减少技术是否将样本路径的比例限制到特定的子集(或者地层)的样本空间。

这个例子指定了一个噪声函数来分层一个单变量股票价格序列的终端值。该函数从已知的初始条件出发,首先对一个标准布朗运动的终值进行分层,然后利用布朗桥绘制条件高斯样本,对过程从头到尾进行采样。

分层过程假设每条路径与单个分层终端值相关联,使得路径的数量等于层的数量。这种技术叫做比例抽样.这个示例类似于,但比中讨论的那个更复杂模拟利率.由于分层抽样需要未来的知识,它也需要更复杂的时间同步;具体来说,本例中的函数需要知道整个样本时间序列。有关更多信息,请参见示例Example_StratifiedRNG.m

该函数通过先绘制均匀分布在每个箱子中的随机数,将单位区间划分成等概率的箱子,从而实现比例抽样。一个标准的反向累积分布函数N (0, 1)高斯分布然后变换这些分层均匀的图形。最后,将得到的分层高斯图按终端时间的平方根缩放,以分层布朗运动的终端值。

噪声函数不会返回实际的布朗路径,而是高斯曲线Z (t, Xt驱动它。

这个例子首先对一个单变量、零漂移、单位方差率布朗运动(bm)模型:

d X t d W t

  1. 假设在三个月的时间内,每天模拟10条流程路径。还假设每个日历月和年分别由21个交易日和252个交易日组成:

    rng (10203“旋风”dt = 1 / 252;% 1天= 1/252年nPeriods = 63;% 3个月= 63个交易日T = nPeriods * dt;% 3个月= 0.25年nPaths = 10;模拟路径的% #Obj = bm(0,1,“StartState”, 0);sampleTimes = cumsum ([obj.StartTime;...dt ((nPeriods, 1))));z = example_stratifieddrng (nPaths, sampleTimes);
  2. 将分层抽样函数显式传递给模拟方法,模拟标准布朗路径:

    X = obj.simulate (nPeriods“DeltaTime”, dt,...“nTrials”nPaths,“Z”, z);
  3. 为方便起见,通过将三维输出重新排序为二维等效数组来重新排序输出样本路径:

    X =紧缩(X);
  4. 验证分层:

    1. 用比例抽样重新绘制均匀的图纸:

      rng (10203“旋风”) U = (((1:nPaths)' - 1 + rand(nPaths,1))/nPaths;
    2. 将其转换为标准布朗运动的终值:

      WT = norminv(U) *根号(T);分层布朗运动。
    3. 在同一张图上绘制终端值和输出路径:

      情节(sampleTimes X), (“上”)包含(的时间(年)), ylabel (“布朗状态”)标题(“终极分层:标准布朗运动”WT)情节(T,'.黑色的T WT“阿黑”) (“关闭”

每个示例路径的最后一个值(输出数组的最后一行)X)与布朗运动的分层终值对应的元素相一致。这是因为模拟模型和噪声产生函数都代表相同的标准布朗运动。

然而,可以使用相同的分层抽样函数对常参数几何布朗运动模型的终端价格进行分层。实际上,只要模型的终值是布朗运动终值的单调变换,就可以用分层抽样函数对由布朗运动驱动的任何常参数模型的终值进行分层。

为了说明这一点,加载数据集,并使用几何布朗运动(“绿带运动”)模型的常数参数:

d X t r X t d t + σ X t d W t

其中,欧元银行间同业拆借利率(Euribor)的平均收益率代表无风险回报率。

  1. 假设从每日数据中获得的相关信息是按年计算的,并且每个日历年包括252个交易日:

    负载Data_GlobalIdx2回报= tick2ret (Dataset.FTSE);标准差= std(returns) * sqrt(252);率= Dataset.EB3M;Rate = mean(360 * log(1 + Rate));
  2. 创建“绿带运动”模型使用“绿带运动”,假设富时100指数的起点是100:

    Obj = gbm(率,sigma,“StartState”, 100);
  3. 确定样本时间并模拟价格路径。

    接下来,NSteps指定每个时间增量内的中间时间步长的数目DeltaTime.每一个增量DeltaTime被划分到NSteps小区间的长度DeltaTime/NSteps每个,通过计算模拟状态向量来改进模拟NSteps1中间点。这种改进通过允许模拟更接近底层连续时间过程而不存储中间信息来提高精度:

    nSteps = 1;sampleTimes = cumsum (obj。开始时间;...dt ((nPeriods * nSteps, 1)) / nSteps]);z = example_stratifieddrng (nPaths, sampleTimes);rng (10203“旋风”) [Y, Times] = obj.simBySolution(nPeriods,“nTrials”nPaths,...“DeltaTime”, dt,“nSteps”nSteps,“Z”, z);Y =紧缩(Y);%重新排序为一个2-D数组情节(*,Y)包含(的时间(年)), ylabel (“指数级”)标题(《富时100指数终端分层:几何布朗运动》

虽然后一张图所示的布朗运动的终端值是正态分布的,上一张图所示的终端价格是对数正态分布的,但是每个图对应的路径是相似的。

提示

关于方差减少技术的另一个例子,请参见模拟利率

另请参阅

||||||||||||||||||||

相关的例子

更多关于