主要内容

分层抽样

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

z t Z t X t

分层抽样是一种方差缩减技术,将样本路径的比例限制为特定的子集(或地层)的样本空间。

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

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

该函数通过将单位间隔划分为等概率的bins来实现比例抽样,首先在每个bin中均匀分布一个随机数。一个标准的逆累积分布函数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_StratifiedRNG(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) *√rt(T);%分层布朗运动。
    3. 将终端值和输出路径绘制在同一张图上:

      plot(sampleTimes, X), hold(“上”)包含(的时间(年)), ylabel (“布朗状态”)标题(“终端分层:标准布朗运动”)图(T, WT,”。黑色的, t, wt,“阿黑”) (“关闭”

      图中包含一个轴对象。标题为“终端分层:标准布朗运动”的轴对象包含30个类型线的对象。

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

但是,可以使用相同的分层抽样函数对常参数几何布朗运动模型的终端价格进行分层。事实上,对于任何由布朗运动驱动的常参数模型,如果模型的终值是布朗运动终值的单调变换,则可以使用分层抽样函数对其终值进行分层。

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

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

欧洲银行间同业拆借利率的平均收益率代表无风险收益率。

  1. 假设从每日数据得到的相关信息是年化的,每个日历年包括252个交易日:

    负载Data_GlobalIdx2returns = tick2ret(Dataset.FTSE);Sigma = std(返回)*根号(252);rate = Dataset.EB3M;Rate = mean(360 * log(1 + Rate));
  2. 创建“绿带运动”模型使用“绿带运动”,假设富时100指数从100点开始:

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

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

    nSteps = 1;sampleTimes = cumsum([obj.]开始时间;...dt(ones(nPeriods * nSteps,1))/nSteps]);z = Example_StratifiedRNG(nPaths, sampleTimes);rng (10203“旋风”) [Y, Times] = obj.simBySolution(nPeriods,“nTrials”nPaths,...“DeltaTime”, dt,“nSteps”nSteps,“Z”, z);Y =挤压(Y);%重新排序到2-D数组plot(Times, Y) xlabel(的时间(年)), ylabel (“指数级”)标题(《富时100指数终端分层:几何布朗运动》

    图中包含一个轴对象。标题为富时100终端分层:几何布朗运动的轴对象包含10个类型为直线的对象。

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

提示

有关方差减少技术的另一个示例,请参见使用插值模拟利率

另请参阅

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

相关的例子

更多关于

Baidu
map