使用深度学习与赫斯顿模型近似障碍期权价格
这个例子展示了如何使用深度学习工具箱™来训练网络,得到预测障碍期权价格与赫斯顿模型。
障碍期权
的障碍期权是期权收益取决于标的资产穿过预定的触发值(屏障)期间的生活选择。障碍期权是有吸引力的,因为他们是便宜比相应的香草选项。
赫斯顿模型
赫斯顿模型是布莱克-斯科尔斯模型的一个扩展,在波动(方差的平方根)不再是假定为常数,并遵循随机方差(CIR)的过程。赫斯顿模型允许建模中的隐含波动率微笑观察市场,选择相同的到期日期显示增加波动性的选择变得更加内在价值(ITM)或价外(移动)。
随机微分方程是:
在哪里
——连续无风险利率
——资产价格
——资产价格差异
——初始资产价格的方差
——长期方差水平
——方差均值回归的速度
波动的方差
-维纳过程之间的相关性 和
障碍期权价格通常使用蒙特卡罗模拟计算赫斯顿因为没有可用的封闭解。然而,蒙特卡罗模拟计算昂贵,当定价工具对金融市场、定价速度是至关重要的。这个例子演示了使用香草神经网络加快学习障碍期权定价的蒙特卡罗模拟结果。神经网络提供了一个高效的近似技术。虽然离线训练是耗费时间,在线定价是快。
定义参数
专注于一个障碍,淘汰赛看涨期权,首先决定定价参数的范围。考虑一个按比例缩小的现货价格(moneyness)而不是两个独立的参数 (资产现货价格) (罢工)。障碍水平也相应价值。
%选择参数范围。%第一个值定义了下界%,第二个值是上界。moneyness = (0.6 - 1.2);% S0 / K成熟= (0.05 - 2);upBarrier = (0.6 - 1.3);%屏障/ K%模型参数范围率= 0.05 [0];kappa = (0.3 - 2);θ= (0.05 - 0.2);σ= (0.05 - 0.5);v0 = (0.05 - 0.2);ρ= (-0.9 - -0.1);%看涨期权参数optSpec =“电话”;exerciseStyle =“欧洲”;barriertype =“uo”;%仿真参数nTrials = 1000;%设置随机发生器再现性的种子。% rng(“违约”)
收集数据
样本参数组合使用quasi-Monte卡洛抽样方法(sobolset
(统计和机器学习的工具箱))是基于Sobol序列具有良好的均匀性属性。Sobol序列先后使用的基础2形成更好的统一单位间隔的分区,然后重新排列在每个维度的坐标。
准= sobolset (9“跳过”,1024);准=争夺(准,“MatousekAffineOwen”);输入=准(1:24e4:);%初始240000个样本%的每个参数列号输入数组。iMoneyness = 1; iTime = 2;愤怒的= 3;iCorr = 4; iKappa = 5; iTheta = 6; iSigma = 7; iV0 = 8; iBarrier = 9;输入(:,iMoneyness) =输入(:,iMoneyness) * (moneyness (2) -moneyness (1) + moneyness (1);% Moneyness S0 / K输入(:,iTime) =输入(:,iTime) *(成熟度(2)成熟(1)+(1)成熟;%的成熟时间输入(:,愤怒的)=输入(:,愤怒的)*(率(2)率(1)+ (1);%的速度输入(:,iCorr) =输入(:,iCorr) *(ρ(2)ρ(1)+ρ(1);%的相关性输入(:,iKappa) =输入(:,iKappa) *(卡帕(2)卡帕(1)+卡帕(1);%均值回归的速度输入(:,iTheta) =输入(:,iTheta) *(θ(2)θ(1)+θ(1);%长期方差输入(:,iSigma) =输入(:,iSigma) *(σ(2)σ(1)+σ(1);%的波动方差输入(:,iV0) =输入(:,iV0) * (v0 (2) v0 (1) + (1);%初始方差V0输入(:,iBarrier) =输入(:,iBarrier) * (upBarrier (2) -upBarrier (1) + upBarrier (1);% UPbarrier / K
消除障碍的参数组合水平并不比最初的现货价格。
%障碍水平应该高于最初的现货价格。无效的=输入(:,iBarrier) < =输入(:,iMoneyness);输入(无效的,:)= [];
使用蒙特卡罗模拟计算障碍期权价格
在您创建的参数空间,计算的价格障碍
(金融工具的工具箱)选择使用基于对象的蒙特卡罗模拟定价框架在金融工具的工具箱™。具体地说,使用ratecurve
(金融工具的工具箱),赫斯顿
(金融工具的工具箱),障碍
(金融工具的工具箱),AssetMonteCarlo
(金融工具的工具箱)创建对象需要价格障碍
(金融工具的工具箱)选择。为了避免等待蒙特卡罗模拟,加载示例通过设置价格计算doMCPricing
旗帜假
。
doMCPricing = false;如果doMCPricing%计算使用AssetMonteCarlo价格定价的人。解决= datetime (2021、2、1);价格=南(大小(输入,1),1);为i = 1:尺寸(输入,1)AssetPrice =输入(我iMoneyness);罢工= 1;障碍=输入(我iBarrier);V0 =输入(我iV0);ThetaV =输入(我iTheta);Kappa =输入(我iKappa);SigmaV =输入(我iSigma);RhoSV =输入(我iCorr);率=输入(我,愤怒的);ExerciseDate = daysadd(结算、圆(输入(我iTime) * 365), 0); ZeroCurve = ratecurve(“零”、结算、ExerciseDate率);hestonModel = finmodel (“赫斯顿”V0 = V0, ThetaV = ThetaV Kappa = Kappa SigmaV = SigmaV RhoSV = RhoSV);MCPricer = finpricer (“AssetMonteCarlo”DiscountCurve = ZeroCurve模型= hestonModel SpotPrice = AssetPrice,…SimulationDates =[解决:天(2):ExerciseDate, ExerciseDate], numTrials = nTrials);CallBarrier = fininstrument (“障碍”ExerciseDate = ExerciseDate =罢工,罢工OptionType = optSpec,…Barriertype = Barriertype Barriervalue =屏障,ExerciseStyle = ExerciseStyle);价格(我)=价格(MCPricer CallBarrier);结束其他的%加载计算价格的例子。负载(“DeepLearningBarrierHeston.mat”,“输入”,“价格”)结束
如果你不使用示例通过设置价格计算doMCPricing
旗帜假
,下面的柱状图显示了评估时间的分布每一个人障碍期权应用蒙特卡罗方法。这个柱状图展示了它大约需要0.46秒来计算一个障碍期权价格。在这个例子中,nTrials
被设置为1 e3
试验的数量在蒙特卡罗模拟计算单个期权价格。的总时间计算样本量30000障碍期权的价格大约是3.9小时,这取决于处理器速度。
定义神经网络
不同的网络架构可以帮助的任务使用赫斯顿障碍期权定价模型。选择神经网络架构需要平衡计算时间与精度。这个示例使用多个全层和漏ReLU激活。
numFeatures =大小(输入,2);层= [featureInputLayer (numFeatures正常化=“zscore”)fullyConnectedLayer (32, WeightsInitializer =“他”)leakyReluLayer fullyConnectedLayer (32, WeightsInitializer =“他”)leakyReluLayer fullyConnectedLayer (32, WeightsInitializer =“他”)leakyReluLayer fullyConnectedLayer (1 WeightsInitializer =“他”)leakyReluLayer regressionLayer];
可视化网络
你可以想象网络使用深层网络设计师应用程序或analyzeNetwork
函数。
deepNetworkDesigner (layerGraph(层)
列车网络的
训练神经网络通过使用trainNetwork
函数。函数创建一个抵抗集测试训练网络,分配一组验证监测期间过度拟合训练。默认情况下,trainNetwork
使用GPU如果可用;否则,它使用一个CPU。培训在GPU需要并行计算工具箱™和支持GPU设备。万博1manbetx信息,请参阅深度学习与MATLAB在多个gpu。
n =大小(价格,1);c = cvpartition (n,坚持= 1/5);%将1/5的数据集进行测试XTrain =输入(培训(c):);%的4/5的输入进行训练YTrain =价格(培训(c):);%的4/5培训的目标XTest =输入(测试(c):);%的1/5输入进行测试欧美=价格(测试(c):);%测试目标的1/5nTrain =大小(XTrain, 1);idx = randperm (nTrain、地板(nTrain * 0.1));% 10%验证数据XValidation = XTrain (idx:);XTrain (idx:) = [];YValidation = YTrain (idx:);YTrain (idx:) = [];选择= trainingOptions (“亚当”,…MaxEpochs = 30,…洗牌=“every-epoch”,…情节=“没有”,…Verbose = false,…VerboseFrequency = 50,…MiniBatchSize = 265,…ValidationData = {XValidation, YValidation},…ValidationFrequency = 50,…ValidationPatience =正无穷,…L2Regularization e = 1.9,…InitialLearnRate = 8.8 e - 3,…LearnRateSchedule =“分段”,…LearnRateDropPeriod = 4,…LearnRateDropFactor = 0.128,…SquaredGradientDecayFactor = 0.55,…GradientDecayFactor = 0.62);%选择。ExecutionEnvironment = " gpu”;使用GPU时%doTraining = false;如果doTraining%训练网络。网= trainNetwork (XTrain、YTrain层,选择);其他的%的pretrained网络负载的例子。负载(“DeepLearningBarrierHeston.mat”,“净”)结束
为了避免等待训练,加载pretrained网络通过设置doTraining
旗帜假
。训练网络使用analyzeNetwork
,设置doTraining
旗帜真正的
。的培训进展窗口显示了进步时情节
在trainingOptions
是设置为训练进步
。
测试网络
训练后的网络模型,您可以使用预测
功能评估测试数据集包含30000障碍期权培训网络。相比直方图使用蒙特卡洛模拟计算障碍期权价格蒙特卡罗模拟需要0.46秒价格每个障碍期权价格30000障碍期权(3.9小时),网络模型训练,后一个数据集包含障碍期权评估30000秒。
%如果GPU上测试,然后将数据转换成一个gpuArray。如果选择。ExecutionEnvironment = =“图形”& & canUseGPU XTest = gpuArray (XTest);结束YPred =预测(净,XTest);
评估网络的性能,计算均方误差(MSE)值。
mseTest =意味着((欧美- YPred) ^ 2)。
mseTest =单2.9402 e-06
下面的柱状图显示了预测的误差分布障碍期权价格使用深度学习工具箱™对障碍期权价格计算使用金融工具的工具箱™。
图直方图(欧美,YPred Binwidth = 1)的军医包含(的误差分布)ylabel (“计数”)
阴谋的计算和预测价格显示了赫斯顿网络的性能模型使用的测试数据。
图绘制(欧美、YPred“。”,[min(欧美),max(欧美)],[min(欧美),max(欧美)],“r”)包含(按比例缩小的实际价格的)ylabel (按比例缩小的预测价格的)标题(“测试数据预测”)
引用
[1]格拉汉姆·古德费勒,我。,Y. Bengio, and A. Courville.深度学习。麻省理工学院出版社,2016年。
[2]Niederreiter, H。“随机数生成和Quasi-Monte卡洛方法”。工业与应用数学学会的,1992年。
另请参阅
障碍
(金融工具的工具箱)|赫斯顿
(金融工具的工具箱)|AssetMonteCarlo
(金融工具的工具箱)|深层网络设计师|trainNetwork
|trainingOptions