主要内容

基于标准蒙特卡罗和拟蒙特卡罗模拟的美式篮子期权定价

建立资产收益的胖尾行为模型,并评估替代联合分配对一篮子期权价格的影响。利用可分离多元几何布朗运动(GBM)过程的各种实现,通常被称为多维市场模式,该示例使用Longstaff & Schwartz的技术模拟了一个股票指数投资组合的风险中性样本路径和一篮子看跌期权的价格。

此外,这个例子还说明了随机微分方程(SDE)体系结构的显著特征,包括

  • 比较布朗运动和布朗联结的自定义随机数生成函数

  • 期末处理函数,构成一个股票指数篮子,并基于Longstaff & Schwartz的最小二乘方法为基础篮子的美国期权定价

  • 分段概率分布与极值理论(EVT)

  • 拟蒙特卡罗模拟应用于一“绿带运动”对象使用simByEuler

这个例子还突出了波动性和利率缩放的重要问题。它说明了如何通过处理每日或年度化数据来获得相同的结果。有关EVT和copula的更多信息,请参见用极值理论和copula评价市场风险(计量经济学工具箱)

建模框架概述

本例的最终目的是比较由不同噪声过程产生的篮子期权价格。第一个噪声过程是一个传统的布朗运动模型,其指数组合价格过程由相关高斯随机抽取驱动。作为一种替代方法,将布朗运动基准与高斯运动和Student运动驱动的噪声过程进行比较tcopula,统称为布朗连系动词

联结函数是一种边缘均匀分布的多元累积分布函数(CDF)。尽管copula的理论基础已经建立了几十年,但在过去几年里,copula的受欢迎程度急剧上升,主要是作为一种建模非高斯投资组合风险的技术。

尽管存在众多的族,但所有的copula都代表了一种统计装置,用于建模两个或多个随机变量之间的依赖结构。此外,重要的统计数据,如等级相关而且尾巴的依赖是给定联结子的性质,并因其边缘的单调变换而不变。

这些联结图产生因变量,这些因变量随后被转换为单个变量(边界)。这种转换是通过具有广义帕累托尾的半参数概率分布来实现的。

要模拟的风险中性市场模型是

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

无风险利率,r,假设在期权的整个生命周期内为常数。因为这是一个可分离多元模型,无风险收益是一个对角矩阵,其中相同的无风险收益适用于所有指标。为了简化模型及其相关的数据收集,忽略了股息收益率。

相比之下,曝光矩阵的规格,σ,取决于驱动来源的不确定性如何建模。你可以直接将其建模为布朗运动(相关的高斯随机数隐式映射到高斯边缘),也可以将其建模为布朗联结(相关的高斯或t显式映射到半参数边界的随机数)。

由于单变量分布的CDF和CDF逆(分位数函数)都是单调变换,因此,耦合函数提供了一种方便的方法来模拟边缘不相似且任意分布的因变量。此外,由于copula定义了一个给定的依赖结构,而不考虑其边界,所以copula参数的校准通常比联合分布函数的估计更容易。

一旦你模拟了样本路径,期权就会通过Longstaff & Schwartz的最小二乘回归方法来定价模拟评估美式期权:一种简单的最小二乘方法,《金融研究评论》,2001年春季版。这种方法使用最小二乘来估计期权在不立即执行的情况下的预期收益。它通过回归未来收到的贴现期权现金流与所有货币样本路径相关的下标的当前价格来实现这一点。延续函数由一个简单的三阶多项式估计,其中回归中的所有现金流和价格均由期权行权价格归一化,提高了数值稳定性。

导入支持的历史数据集

加载3个月Euribor的每日历史数据集,2001年2月07日至2006年4月24日的交易日期,以及以下代表性大型股票指数的收盘指数水平:

  • TSX综合(加拿大)

  • CAC - 40(法国)

  • DAX指数(德国)

  • 日经225指数(日本)

  • 富时100指数(英国)

  • 标准普尔500指数(美国)

清晰的负载Data_GlobalIdx2日期= datetime(日期,“ConvertFrom”“datenum”);

下面的图说明了这些数据。具体来说,这些图显示了每个指数和Euribor无风险利率代理的相对价格变动。每个指标的初始水平已归一化为统一,以方便与历史记录的相对表现进行比较。

nIndices =大小(数据,2)1;% #索引价格=数据(:,1:end-1);收益率=数据(:,结束);日有效产量%收益率= 360 * log(1 +收益率);%连续复利年化收益率情节(日期、ret2tick (tick2ret(价格,“方法”“连续”),“方法”“连续”)包含(“日期”) ylabel (的索引值)标题(“标准化每日收市指数”)传说(系列{1:end-1},“位置”“西北”

图中包含一个axes对象。标题为Normalized Daily Index closure的axis对象包含6个类型为line的对象。这些对象代表(TSX)加拿大TSX综合指数,(CAC)法国CAC 40, (DAX)德国DAX, (NIK)日本日经225,(富时)英国富时100,(SP)美国标准普尔500。

Plot(日期,100 *收益率)“日期”) ylabel (的年化收益率(%))标题(无风险利率(3个月欧元银行间拆放款利率连续复利)

图中包含一个axes对象。标题为Risk Free Rate (3-Month Euribor continuous - compound)的axis对象包含一个类型为line的对象。

极值理论与分段概率分布

为了准备联结模型,分别描述每个指数的收益分布。虽然每个回归序列的分布可以用参数表示,但使用具有广义帕累托尾的分段分布拟合半参数模型是有用的。这使用极值理论来更好地描述每个尾巴的行为。

统计和机器学习工具箱™软件目前支持两种与EVT相关的单变量概率分布,EVT是一种用于建模金融数据(如资产回报和保险损失)的长尾行为的统计工具:

  • 广义极值(GEV)分布,它使用一种称为阻塞最大值或最小值方法。这种方法将历史数据集划分为一组子区间或块,记录每个块中最大或最小的观测值,并将其拟合到GEV分布。

  • 广义帕累托(GP)分布,使用的建模技术称为超过数点的分布峰值超过阈值方法。这种方法对历史数据集进行排序,并将超过指定阈值的观测值与GP分布相匹配。

下面的分析强调了帕累托分布,它在风险管理应用中被广泛使用。

假设我们想要创建一个完整的统计描述,描述任意一个股票指数的每日资产回报的概率分布。假设这种描述是由一个分段半参数分布提供的,其中每个尾部的渐近行为是由一个广义帕累托分布所表征的。

最终,一个联结器将被用来产生随机数来驱动模拟。CDF和CDF逆变换将捕获模拟收益的波动率,作为SDE扩散项的一部分。每个指数的平均收益受无风险率的控制,并纳入SDE的漂移项。下面的代码段将每个索引的返回居中(即提取平均值)。

因为下面的分析使用极值理论来描述每个股票指数收益序列的分布,它有助于检查特定国家的细节:

返回= tick2ret(价格,“方法”“连续”);%将价格转换为回报返回=返回-平均值(返回);退货%居中指数= 3;%德国存储在第3列情节(日期(2:结束),返回(:,指数))包含(“日期”) ylabel (“返回”)标题(“日对数中心收益:”系列{指数}])

图中包含一个axes对象。标题为Daily对数居中回报(DAX)的轴线对象:德语DAX包含一个类型为line的对象。

注意,可以更改此代码段以检查任何国家的详细信息。

利用这些居中收益,估计具有高斯核的每个指数的经验的,或非参数的CDF。这平滑了CDF估计,消除了未平滑样本CDF的阶梯模式。尽管非参数核CDF估计非常适合分布的内部(大部分数据都在那里被发现),但当应用到上尾和下尾时,它们往往表现不佳。为了更好地估计分布的尾部,将EVT应用于每个尾部的收益。

具体来说,要找到上限和下限阈值,以便为每个尾部保留10%的回报。然后通过最大似然将每个尾部的极端收益超出相关阈值的数量拟合为帕累托分布。

下面的代码段创建一个类型的对象paretotails对于每个索引返回序列。这些帕累托尾对象将参数帕累托下尾、非参数核平滑内部和参数帕累托上尾的估计封装起来,为每个指标构造一个复合半参数CDF。

tailFraction = 0.1;%分配给每个尾部的小数分数尾巴=细胞(nIndices, 1);帕累托尾部对象的% cell数组i = 1: nindexes tails{i} = paretotails(返回(:,i), tailFraction, 1 - tailFraction,“内核”);结束

得到的分段分布对象允许在CDF内部进行插值,并允许在每个尾部进行外推(函数评估)。外推允许对历史记录之外的分位数进行估计,这对于风险管理应用程序是非常宝贵的。

帕累托尾对象还提供了计算CDF和反CDF(分位数函数)的方法,以及查询分段分布各段间边界的累积概率和分位数的方法。

现在已经估计了分段分布的三个不同区域,用图形连接并显示结果。

下面的代码使用拟合所基于的数据以外的数据调用感兴趣的Pareto尾部对象的CDF和反向CDF方法。所引用的方法可以访问拟合状态。现在调用它们来选择和分析概率曲线的特定区域,充当强大的数据过滤机制。

图中还包含了一个相同标准差的零均值高斯CDF,以供参考。在某种程度上,期权价格的变化反映了每种资产的分布与正常曲线的不同程度。

minProbability = cdf(tails{index}, (min)返回(:,索引))));maxProbability = cdf(tail {index}, (max(返回(:,索引))));pLowerTail = linspace(minProbability, tailFraction, 200);%降低尾pUpperTail = linspace(1 - tailFraction, maxProbability, 200);%上尾巴pInterior = linspace(tailFraction, 1 - tailFraction, 200);%的室内情节(icdf(反面{指数},pLowerTail) pLowerTail,“红色”“线宽”, 2)网格plot(icdf(tails{index}, pInterior), pInterior,“黑”“线宽”, 2) plot(icdf(tails{index},木偶尾巴),木偶尾巴,“蓝”“线宽”, 2)极限=轴;X = linspace(限值(1),限值(2));Plot (x, normcdf(x, 0, std(返回(:,索引))),“绿色”“线宽”, 2) FIG = gcf;fig.Color = [1 1 1];持有包含(“集中返回”) ylabel (“概率”)标题(“Semi-Parametric /分段提供:”传奇系列{指数}])({“帕累托低尾”内核内部平滑的...“帕累托上尾巴”“具有相同\sigma的高斯”},“位置”“西北”

图中包含一个axes对象。标题为半参数/分段CDF的轴对象:(DAX)德语DAX包含4个类型为line的对象。这些对象代表帕累托下尾,核平滑内部,帕累托上尾,具有相同\sigma的高斯。

红色和蓝色分别显示的尾部下部和上部区域适合外推,而黑色显示的经过核平滑的内部区域适合内插。

连系动词校准

统计和机器学习工具箱软件包括校准和模拟高斯和t连系动词。

利用日指数收益,估计高斯和tcopula使用函数copulafit.自t当标量自由度参数(DoF)无穷大时,copula成为高斯copula,这两个copula实际上属于同一家族,因此共享一个线性相关矩阵作为基本参数。

虽然高斯联结矩阵的线性相关矩阵的标定是直接的,但是t连系动词。基于这个原因,统计和机器学习工具箱软件提供了两种技术来校准t连系动词:

  • 第一种方法在两步过程中执行最大似然估计(MLE)。内阶在给定自由度的固定值的情况下,使对数似然相对于线性相关矩阵最大化。这个条件最大化被放置在一维的自由度最大化中,从而使所有参数的对数似然最大化。在这一外部步骤中被最大化的函数称为自由度的剖面对数似然。

  • 第二种方法是对对数似然函数对线性相关矩阵求导,假设自由度是一个固定常数。得到的表达式是一个非线性方程,可以迭代求解相关矩阵。这种技术近似于自由度参数的剖面对数似然。这种方法通常比上面提到的真正的最大似然方法要快得多;然而,你不应该使用小或中等样本量,因为估计和置信极限可能不准确。

当均匀变量由各余量的经验CDF进行变换时,标定方法通常称为正则极大似然(CML)。下面的代码段首先通过上面推导的分段半参数cdf将日居中收益转换为均匀变量。然后拟合高斯和t转换后的数据的copula:

U = 0(大小(回报));i = 1: nIndices U (:, i) = cdf(反面{我},返回(:,我));%将每个边距转换为统一结束选择= statset (“显示”“关闭”“TolX”1的军医);[rhoT, DoF] = copulafit(“t”U“方法”“ApproximateML”“选项”、选择);rhoG = copulafit (“高斯”U);

估计的相关矩阵非常相似,但不完全相同。

corrcoef(返回)%日收益线性相关矩阵
ans =6×61.0000 0.4813 0.5058 0.4573 0.6526 0.4813 1.0000 0.8485 0.2261 0.8575 0.5102 0.5058 0.8485 1.0000 0.2001 0.7650 0.6136 0.1854 0.2261 0.2001 1.0000 0.2295 0.1439 0.4573 0.8575 0.7650 0.2295 1.0000 0.4617 0.6526 0.5102 0.6136 0.1439 0.4617 1.0000
rhoG%的线性相关矩阵的优化高斯联结
rhoG =6×61.0000 0.4745 0.5018 0.1857 0.4721 0.6622 0.4745 1.0000 0.8606 0.2393 0.8459 0.4912 0.5018 0.8606 1.0000 0.2126 0.7608 0.5811 0.1857 0.2393 0.2126 1.0000 0.1857 0.2393 0.2126 1.0000 0.2396 0.1494 0.4721 0.8459 0.7608 0.2396 1.0000 0.4518 0.6622 0.4912 0.5811 0.1494 0.4518 1.0000
rhoT优化t联结的%线性相关矩阵
rhoT =6×61.0000 0.4671 0.4858 0.1907 0.4734 0.6521 0.4671 1.0000 0.8871 0.2567 0.8500 0.5122 0.4858 0.8871 1.0000 0.2326 0.7723 0.5877 0.1907 0.2567 0.7723 1.0000 0.2503 0.1539 0.4734 0.8500 0.7723 0.2503 1.0000 0.4769 0.6521 0.5122 0.5877 0.1539 0.4769 1.0000

方法获得的相对较低的自由度参数tcopula校准,表明显著偏离高斯情况。

景深%标量自由度参数的t联结优化
景深= 4.8613

介体模拟

现在已经估计了联结参数,用函数来模拟联合相关的均匀变量copularnd

然后,通过外推帕累托尾和插值平滑的内部,转换从copularnd通过每个指数的逆向CDF来实现日居中收益。这些模拟的居中收益与从历史数据集获得的结果一致。假设收益在时间上是独立的,但在任何时间点上都具有给定联结所引起的相关性和秩相关。

方法模拟居中返回,从而演示了依赖结构t连系动词。然后使用统计和机器学习工具箱绘制了法国CAC 40和德国DAX的边缘直方图二维散点图scatterhist函数。选择法国和德国指数只是因为它们与可用数据的相关性最高。

nPoints = 10000;% #的模拟观察结果s = RandStream.getGlobalStream ();reset(s) R = 0 (nPoints, nindexes);%预分配模拟返回数组U = copularnd (“t”, rhoT, DoF, nPoints);%模拟U(0,1)从t联结j = 1: nindexes R(:,j) = icdf(tail {j}, U(:,j));结束h = scatterhist(R(:,2), R(:,3),“颜色”“r”“标记”“。”“MarkerSize”1);无花果= gcf;fig.Color = [1 1 1];日元= ylim (h (1));y3 = ylim (h (3));xlim (h(1),(-。1 .1]) ylim(h(1), [-.]1 .1]) xlim(h(2), [-.]1。1)ylim (h (3), ((y3 (1) + (-0.1 - y1 (1))) (y3 (2) + (0.1 - y1(2)))))包含(“法国”) ylabel (“德国”)标题('t Copula (\nu = 'num2str(景深,2)')'])

图中包含一个axes对象。轴对象的标题t空白C o p u l空白(nu空白=空白4。9)包含一个line类型的对象。

现在使用高斯联结来模拟和绘制居中返回。

reset(s) R = 0 (nPoints, nindexes);%预分配模拟返回数组U = copularnd (“高斯”、rhoG nPoints);%模拟U(0,1)由高斯联结j = 1: nindexes R(:,j) = icdf(tail {j}, U(:,j));结束h = scatterhist(R(:,2), R(:,3),“颜色”“r”“标记”“。”“MarkerSize”1);无花果= gcf;fig.Color = [1 1 1];日元= ylim (h (1));y3 = ylim (h (3));xlim (h(1),(-。1 .1]) ylim(h(1), [-.]1 .1]) xlim(h(2), [-.]1。1)ylim (h (3), ((y3 (1) + (-0.1 - y1 (1))) (y3 (2) + (0.1 - y1(2)))))包含(“法国”) ylabel (“德国”)标题(“高斯相关”

图中包含一个axes对象。标题为Gaussian Copula的axes对象包含一个类型为line的对象。

看看这两个数字。每个图的对应轴上的微型直方图之间有很强的相似性。这种相似性并非巧合。

两个copula模拟均匀随机变量,然后通过每个指数分段分布的逆向CDF转换为日居中收益。因此,任何给定指数的模拟收益都是同分布的,而不考虑copula。

然而,每个图的散点图表明了与给定联结相关的依赖结构,与直方图中显示的单变量边界相比,散点图是不同的。

再一次,copula定义了一个不考虑其边界的依赖结构,因此提供了许多不仅仅局限于校准的特征。

以传统的布朗运动模型为基础,利用高斯分布来模拟和绘制以中心为中心的回程图,以供参考。

reset(s) R = mvnrnd(0 (1, nindexes), cov(returns), nPoints);h = scatterhist(R(:,2), R(:,3),“颜色”“r”“标记”“。”“MarkerSize”1);无花果= gcf;fig.Color = [1 1 1];日元= ylim (h (1));y3 = ylim (h (3));xlim (h(1),(-。1 .1]) ylim(h(1), [-.]1 .1]) xlim(h(2), [-.]1。1)ylim (h (3), ((y3 (1) + (-0.1 - y1 (1))) (y3 (2) + (0.1 - y1(2)))))包含(“法国”) ylabel (“德国”)标题(高斯分布的

图中包含一个axes对象。标题为“高斯分布”的axis对象包含一个类型为line的对象。

基于Longstaff & Schwartz方法的美式期权定价

现在,copula已经被校准,比较一下从各种方法得到的平价美国篮子期权的价格。为了简化分析,假设:

  • 所有指数都是从100开始的。

  • 该投资组合持有每个指数的单一单位或份额,因此该投资组合在任何时候的价值都是各个指数的价值之和。

  • 该期权3个月后到期。

  • 从每日数据中得到的信息是年化的。

  • 每个日历年由252个交易日组成。

  • 每天模拟索引级别。

  • 该期权可在每个交易日结束时行使,与美式期权近似,称为百慕大期权。

现在计算所有模拟方法的通用参数:

Dt = 1 / 252;%时间增量= 1天= 1/252年收益率=数据(:,结束);日有效产量%收益率= 360 * log(1 +收益率);%连续复利年化收益率r =意味着(收益率);3M欧元同业拆息历史平均水平X = repmat(100, nindexes, 1);%初始状态向量罢工= (X)之和;创建一个平价购物篮nTrials = 100;% #独立试验nPeriods = 63;% #模拟周期:63/252 = 0.25年= 3个月

现在创建两个可分离的多维市场模型,其中无风险收益和波动暴露矩阵都是对角线的。

虽然两者都是具有相同风险中性收益的对角线GBM模型,但第一个模型由相关布朗运动驱动,并明确指定了居中收益的样本线性相关矩阵。然后用年化指数波动率或标准差的对角矩阵对这个相关的布朗运动过程进行加权。

作为另一种选择,同样的模型可以由一个不相关的布朗运动(标准布朗运动)通过指定相关作为单位矩阵,或者直接接受默认值。在这种情况下,曝光矩阵σ指定为指标返回协方差矩阵的低Cholesky因子。由于基于copula的方法模拟相关随机数,为了一致性选择对角线曝光形式。有关更多细节,请参见诱导相关性和相关性

Sigma = std(返回)*√(252);%的年化波动相关= corrcoef(回报);%相关高斯干扰GBM1 = gbm(diag(r(ones(1, nindexes))), diag(sigma),“StartState”, X,...“相关”、相关);

现在用单位矩阵建立由布朗联结驱动的第二个模型σ

GBM2 = gbm(diag(r(ones(1, nindexes))), eye(nindexes),“StartState”, X);

新创建的模型可能看起来不同寻常,但它突出了SDE体系结构的灵活性。

在处理copula时,通常允许随机数生成器函数Z(t,X)诱导copula的相关性(其中传统的线性相关概念是一种特殊情况),并通过半参数CDF和CDF逆变换诱导变化的幅度或尺度(类似于波动率或标准差),这是很方便的。由于每个指数的CDF和CDF反变换继承了历史收益的特征,这也解释了为什么现在的收益是居中的。

在以下部分中,像这样的语句:

z = Example_CopulaRNG(返回*根号(252),nperiod, '高斯');

z = Example_CopulaRNG(返回*根号(252),nperiod, 't');

拟合高斯和tCopula依赖结构,以及中心收益的半参数边际乘以每年交易日数的平方根(252)。这个比例并没有将日中心收益按年化。相反,它会缩放它们,使波动率保持与对角线的年化风险敞口矩阵一致σ之前创建的传统布朗运动模型(GBM1)。

在本例中,您还指定了一个周期结束处理函数,该函数接受时间和状态(t,X),并将样本时间和投资组合的值记录为所有指数的单一单位加权平均值。该函数还与其他函数共享这一信息,这些函数使用Longstaff & Schwartz的最小二乘回归方法,以恒定的无风险利率为美国期权定价。

f = Example_LongstaffSchwartz(nperiod, nTrials)
f =结构体字段:LongstaffSchwartz: @Example_LongstaffSchwartz/ save筐价格CallPrice: @Example_LongstaffSchwartz/getCallPrice PutPrice: @Example_LongstaffSchwartz/getPutPrice price: @Example_LongstaffSchwartz/ get筐价格

现在模拟三个月内股票指数价格的独立试验simByEuler方法用于标准蒙特卡罗模拟和拟蒙特卡罗模拟。模拟方法不要求输出;事实上,构成一篮子货币的个别指数的模拟价格是不必要的。为方便起见,报告看涨期权价格:

重置(s) simByEuler (GBM1 nPeriods,“nTrials”nTrials,“DeltaTime”, dt,...“过程”, f.LongstaffSchwartz);BrownianMotionCallPrice = f.CallPrice(罢工,r);BrownianMotionPutPrice = f.t putprice (strike, r);reset(s) f = Example_LongstaffSchwartz(nperiod, nTrials);simByEuler (GBM1 nPeriods,“nTrials”nTrials,“DeltaTime”, dt,...“过程”f.LongstaffSchwartz,...“MontecarloMethod”“准”);QuasiMonteCarloCallPrice = f.CallPrice(strike, r);QuasiMonteCarloPutPrice = f.t putprice (strike, r);reset(s) z = Example_CopulaRNG(返回*根号(252),nperiod,“高斯”);f = Example_LongstaffSchwartz(nperiod, nTrials);simByEuler (GBM2 nPeriods,“nTrials”nTrials,“DeltaTime”, dt,...“过程”f.LongstaffSchwartz,“Z”, z);GaussianCopulaCallPrice = f.CallPrice(strike, r);GaussianCopulaPutPrice = f.t putprice (strike, r);

现在重复联结模拟t连系动词结构的依赖。您对两个联结使用相同的模型对象;只有随机数生成器和期权定价函数需要重新初始化。

reset(s) z = Example_CopulaRNG(返回*根号(252),nperiod,“t”);f = Example_LongstaffSchwartz(nperiod, nTrials);simByEuler (GBM2 nPeriods,“nTrials”nTrials,“DeltaTime”, dt,...“过程”f.LongstaffSchwartz,“Z”, z);tCopulaCallPrice = f.CallPrice(strike, r);tCopulaPutPrice = f.t putprice (strike, r);

最后,比较从所有模型得到的美国看跌期权和看涨期权价格。

disp (' '

               
流(' #蒙特卡洛试炼:%8d\n'nTrials)
蒙特卡洛选拔赛:100
流(' # of Time period /Trial: %8d\n\n'nPeriods)
时间周期/试验数量:63
流('布朗运动美国呼叫篮价格:%8.4f\n'BrownianMotionCallPrice)
布朗运动美国呼叫篮价格:25.9456
流(“布朗运动美国看跌篮子价格:%8.4f\n\n”BrownianMotionPutPrice)
布朗运动美国看跌篮子价格:16.4132
流('准蒙特卡洛美国电话篮价格:%8.4f\n'QuasiMonteCarloCallPrice)
准蒙特卡洛美国呼叫篮价格:21.8202
流(“准蒙特卡洛美式看跌期权篮子价格:%8.4f\n\n”QuasiMonteCarloPutPrice)
准蒙特卡洛美式看跌期权篮子价格:19.7968
流('高斯联结美国呼叫篮价格:%8.4f\n'GaussianCopulaCallPrice)
高斯Copula美国呼叫篮价格:24.5711
流('高斯联结美国看跌篮子价格:%8.4f\n\n'GaussianCopulaPutPrice)
高斯Copula美国看跌期权篮子价格:17.4229
流(Copula美国电话篮价格:%8.4f\n'tCopulaCallPrice)
t Copula美国电话篮价格:22.6220
流(t Copula美式看跌期权篮子价格:%8.4f\n'tCopulaPutPrice)
t Copula美国看跌期权篮子价格:20.9983

这个分析只是一个小规模的模拟。如果用10万次试验重复模拟,可以得到以下结果:

蒙特卡洛试验:100000个时间周期/试验:63
Brownian Motion美国看跌期权篮子价格:16.4808准蒙特卡洛美国看涨期权篮子价格:20.1935准蒙特卡洛美国看跌期权篮子价格:16.4731
高斯Copula美国看跌期权篮子价格:16.4416
t Copula美国看跌期权篮子价格:16.7050

有趣的是,结果非常一致。从共生关系得到的看跌期权价格比布朗运动的价格高出不到1%。

关于波动和利率缩放的说明

同样的期权价格也可以通过非年化(在本例中为日)中心收益率和无风险利率得到,其中时间增量dt= 1天而不是1/252年。换句话说,投资组合价格仍将在每个交易日被模拟;数据的比例不同。

尽管没有执行,并且通过首先将随机流重置为其初始内部状态,以下代码段与日居中收益和无风险利率一起工作,并产生相同的期权价格。

高斯分布/布朗运动和每日数据:

重置(s)
f = Example_LongstaffSchwartz(nperiod, nTrials);GBM1 = gbm(diag(r(ones(1, nindexes))/252), diag(std(returns))“StartState”, X,...“相关”、相关);
simByEuler (GBM1 nPeriods,“nTrials”nTrials,“DeltaTime”, 1...“过程”, f.LongstaffSchwartz);
BrownianMotionPutPrice = f.PutPrice (strike, r/252)
重置(s)
f = Example_LongstaffSchwartz(nperiod, nTrials);GBM1 = gbm(diag(r(ones(1, nindexes))/252), diag(std(returns))“StartState”, X,...“相关”、相关);
simByEuler (GBM1 nPeriods,“nTrials”nTrials,“DeltaTime”, dt,...“过程”f.LongstaffSchwartz,...“MontecarloMethod”“准”);QuasiMonteCarloCallPrice = f.CallPrice(strike, r/252);QuasiMonteCarloPutPrice = f.t putprice (strike, r/252);

高斯Copula &日数据:

重置(s)
z = Example_CopulaRNG(返回,nperiod,“高斯”);f = Example_LongstaffSchwartz(nperiod, nTrials);GBM2 = gbm(diag(r(ones(1,nIndices))/252), eye(nIndices),“StartState”, X);
simByEuler (GBM2 nPeriods,“nTrials”nTrials,“DeltaTime”, 1...“过程”f.LongstaffSchwartz,“Z”, z);
GaussianCopulaCallPrice = f.c olprice (strike, r/252)

t Copula和每日数据:

重置(s)
z = Example_CopulaRNG(返回,nperiod,“t”);f = Example_LongstaffSchwartz(nperiod, nTrials);
simByEuler (GBM2 nPeriods,“nTrials”nTrials,“DeltaTime”, 1...“过程”f.LongstaffSchwartz,“Z”, z);
tCopulaCallPrice = f.c ulaputprice (strike, r/252)

另请参阅

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

相关的例子

更多关于

Baidu
map