主要内容

波特西姆

相关资产收益的蒙特卡罗模拟

描述

实例

RetSeries= portsim (ExpReturn,ExpCovariance,暴民)模拟股票的相关收益纳斯特资产超过暴民连续观测间隔。资产收益率模拟为常数漂移、常数波动随机过程的比例增量,从而近似连续时间几何布朗运动。

实例

RetSeries= portsim (___,RetIntervals,努姆,方法)除了前面语法中的输入参数外,还使用一个或多个可选参数指定选项。

例子

全部崩溃

此示例显示了确切的预期模拟方法。

考虑一个由五种资产组成的投资组合,其预期回报率、标准差和基于每日资产回报率的相关矩阵如下(其中ExpReturn西格马斯除以100将百分比转换为回报)。

ExpReturn=[0.0246 0.0189 0.0273 0.0141 0.0311]/100;Sigmas=[0.9509 1.4259 1.5227 1.1062 1.0877]/100;相关性=[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];

将相关性和标准偏差转换为协方差矩阵。

expconvariance=corr2cov(西格玛,相关性)
扩展协方差=5×510-3× 0.0904 0.0597 0.0686 0.0456 0.0709 0.0597 0.2033 0.1649 0.1232 0.0674 0.0686 0.1649 0.2319 0.1175 0.0816 0.0456 0.1232 0.1175 0.1224 0.0516 0.0709 0.0674 0.0816 0.0516 0.1183

假设一个日历年有252个交易日,并模拟两年内每日收益的两个样本路径(实现)。自ExpReturnExpCovariance是每天表达的吗重间隔=1

StartPrice=100;NumObs=504;%两个日历年的日收益NumSim = 2;RetIntervals = 1;%一个交易日NumAssets=5;

为了说明方法之间的区别,请从相同的随机数状态开始,用每种方法模拟两条路径。

rng (“默认”);RetExact=portsim(ExpReturn、exp协方差、NumObs、,...退休间隔,“准确”);rng (0);RetExpected = portsim(ExpReturn, ExpCovariance, numbs,...退休间隔,“预期的”);

比较平均值和协方差重新精确输入(ExpReturnExpCovariance),您会发现它们几乎完全相同。

在这一点上,,重新精确RetExpected都是504×5×2数组。现在假设由五种资产组成的加权相等的投资组合,并创建投资组合回报数组,其中每列表示五种资产模拟回报的相应样本路径的投资组合回报。投资组合数组PortRetExactPortRetExpected是504乘2的矩阵。

权重=1(NumAssets,1)/NumAssets;PortRetExact=零(NumObs,NumSim);PortRetExpected=零(NumObs,NumSim);对于i = 1:NumSim PortRetExact(:,i) = RetExact(:,:,i) *权重;PortRetExpected(:,i) = RetExpected(:,:,i) * Weights;终止

最后,将模拟的投资组合收益转换为价格,并绘制数据。特别要注意的是确切的方法匹配预期收益和协方差,每个样本路径的最终投资组合价格实际上是相同的预期模拟方法。虽然本示例检查投资组合,但同样的方法也适用于单个资产。因此,确切的当需要唯一路径以达到相同的终端价格时,模拟是最合适的。

PortExact = ret2tick (PortRetExact,...repmat(StartPrice,1,NumSim));PortExpected=ret2tick(PortRetExpected,...repmat(StartPrice,1,NumSim));子地块(2,1,1),地块(PortExact,“-r”)伊拉贝尔(“投资组合价格”)标题(“精确方法”)子地块(2,1,2)、地块(PortExpected、,“- b”)伊拉贝尔(“投资组合价格”)标题(“预期方法”)

图中包含2个轴对象。标题为精确方法的轴对象1包含2个类型为line的对象。标题为Expected Method的axis对象2包含2个类型为line的对象。

这个例子显示了两者之间的相互作用ExpReturn,ExpCovarianceRetIntervals.回想一下波特西姆在一段时间间隔内模拟相关资产回报dt,由方程给出

D s s = μ D T + σ D Z = μ D T + σ ε D T ,

哪里s是资产价格,μ是预期的回报率,σ是资产价格的波动性,以及ε表示标准正态分布的随机抽取。

时间增量dt是由可选输入决定的RetIntervals,作为显式输入参数或默认情况下作为单位时间增量。无论ExpReturn,ExpCovarianceRetIntervals必须一致。例如,如果ExpReturnExpCovariance年,那么RetIntervals一定有好几年了。这一点经常被误解。

来说明它们之间的相互作用ExpReturn,ExpCovarianceRetIntervals,考虑一个由五种资产组成的投资组合,其预期回报率、标准差和基于每日资产回报率的相关矩阵如下。

ExpReturn=[0.0246 0.0189 0.0273 0.0141 0.0311]/100;Sigmas=[0.9509 1.4259 1.5227 1.1062 1.0877]/100;相关性=[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];

将相关性和标准差转换为每日收益的协方差矩阵。

expconvariance=corr2cov(Sigmas,相关性);

假设每个日历年有252个交易日,并模拟四年期间每日收益的单一样本路径ExpReturnExpCovariance输入表示为每日,设置重间隔=1

StartPrice=100;NumObs=1008;%每日收益的四个日历年RetIntervals = 1;%一个交易日NumAssets=长度(ExpReturn);randn(“国家”, 0);RetSeries1 = portsim(ExpReturn, ExpCovariance, numbs,...重新间隔,1,“预期的”);

现在对每天的数据进行年化,从而通过乘法改变数据的周期性ExpReturnExpCovariance除以252再除以RetIntervals到252年(RetIntervals=一年的1/252)。将随机数生成器重置为其初始状态,可以重新生成结果。

rng (“默认”);RetSeries2 = portsim(ExpReturn*252, ExpCovariance*252,...NumObs,Retimvals/252,1,“预期的”);

假设一个等权重的投资组合,计算与每个模拟收益系列相关的投资组合收益。

Weights = ones(NumAssets, 1)/NumAssets;PortRet1 = RetSeries2 * Weights;PortRet2 = RetSeries2 * Weights;

数据比较表明端口1端口2都是相同的。

这个例子展示了如何模拟一元几何布朗运动过程。它以赫尔的一个例子为基础,期权、期货和其他衍生品,第5版(见第236页示例12.2)。除了验证赫尔的示例外,它还通过相当大的蒙特卡罗模拟以图形方式说明了终端股票价格的对数正态性。

假设你持有的股票初始价格为20美元,年化预期回报率为20%,波动性为40%。模拟该股票在一整个日历年(252个交易日)中的每日价格过程。

StartPrice=20;ExpReturn=0.2;expConvariation=0.4^2;NumObs=252;NumSim=10000;RetIntervals=1/252;

RetIntervals以年表示,符合以下事实:ExpReturnExpCovariance按年度计算。而且ExpCovariance作为方差输入,而不是更常见的标准差(波动率)。

设置随机数生成器状态,并在252个交易日的整个日历年内模拟10000次股票回报试验(实现)。

rng (“默认”);RetSeries =挤(portsim(ExpReturn, ExpCovariance, NumObs,...退休间隔,“预期的”));

这个挤压函数用于重新格式化来自252——- - - - - -1.——- - - - - -10000数组更方便252——- - - - - -10000大堆(回顾波特西姆基本上是一个多变量模拟引擎)。

根据第236页赫尔方程12.4和12.5

E ( s T ) = s 0 E μ T v A. R ( s T ) = s 0 2. E 2. μ T ( E σ 2. T 1. )

将模拟收益率序列转换为价格序列,并计算最终股价的样本均值和方差。

股票价格=ret2tick(RetSeries,repmat(StartPrice,1,NumSim));SampMean=mean(股票价格(end,:))SampVar=var(股票价格(end,:)
SampMean=24.4489 SampVar=101.4243

将这些值与使用赫尔方程获得的值进行比较。

ExpValue = StartPrice*exp(ExpReturn) ExpVar =...StartPrice*StartPrice*exp(2*ExpReturn)*(exp((exp协方差))-1)
ExpValue=24.4281 ExpVar=103.5391

这些结果与赫尔示例12.2中显示的结果非常接近。

显示一个日历年后终端股价的样本密度函数。从样本密度函数看,终端股价的对数正态分布是明显的。

[count,BinCenter]=历史(股票价格(结束:),30);图形栏(BinCenter,count/sum(count),1,“r”)xlabel(“终端股票价格”)伊拉贝尔(“概率”)标题(“对数正态终端股价”)

输入参数

全部崩溃

每项资产的预期(平均)回报,指定为1.——- - - - - -纳斯特向量。

数据类型:

资产回报协方差,指定为纳斯特——- - - - - -纳斯特矩阵ExpCovariance必须对称且半正定(无负特征值)。回报的标准偏差为ExpSigma=sqrt(diag(exp协方差))如果ExpCovariance不是对称半正定矩阵,使用尼尔科尔为相关矩阵创建半正定矩阵。

数据类型:

返回时间序列中连续观测的数量,指定为正标量整数。如果暴民输入为空矩阵[],长度为RetIntervals使用。

数据类型:

(可选)观测间隔时间,指定为正标量或观测次数暴民——- - - - - -1.向量。如果RetIntervals时,所有的间隔都假定有长度1.

数据类型:

(可选)的模拟采样路径数(实现)暴民观察值,指定为正标量整数。的默认值努姆1.(b)单一实现暴民相关资产收益)。

数据类型:

(可选)蒙特卡罗模拟的类型,指定为具有以下值之一的字符向量:

  • “准确”(默认)生成相关资产回报,其中样本平均值和协方差与输入平均值匹配(ExpReturn)及协方差(ExpCovariance)规格。

  • “预期的”生成相关资产回报,其中样本均值和协方差在统计上等于输入均值和协方差规格。(样本均值和协方差的预期值等于输入均值。)(ExpReturn)及协方差(ExpCovariance)规范。)

无论是方法,返回的样本均值和协方差按适当比例缩放RetIntervals

数据类型:字符

输出参数

全部崩溃

相关的,正态分布的,比例资产回报的三维数组,返回为a暴民——- - - - - -纳斯特——- - - - - -努姆三维阵列。

一段时间间隔内的资产收益dt是由

D s s = μ D T + σ D Z = μ D T + σ ε D T ,

哪里s是资产价格,μ是预期的回报率,σ是资产价格的波动性,以及ε表示标准正态分布的随机抽取。

笔记

  • 方法“准确”,所有实现的样本平均值和协方差(按RetIntervals)匹配输入均值和协方差。当回报被转换成资产价格时,某一资产的所有终端价格就会趋于一致。虽然所有变现都是独立绘制的,但它们产生的终端资产价格相似。集方法“预期的”避免这种行为。

  • 投资组合的回报PortWts是由PortReturn = porttwts * RetSeries(:,:,1)',在那里PortWts是一个矩阵,其中每一行包含投资组合的资产分配港口收益对应于在PortWts,每一列对应于从第一个实现(第一个平面)中获得的一个观察值RetSeries.看到波特普portstats用于组合规范和优化。

参考文献

[1] 赫尔,J.C。期权、期货和其他衍生品。普伦蒂斯大厅,2003年。

在R2006a之前引入