基于FFT和FRFT的Merton76模型的期权价格和敏感性
使用optSensByMertonFFT
校准FFT打击网格的灵敏度,计算选项灵敏度,并绘制选项灵敏度面。
定义期权变量和Merton76模型参数
AssetPrice = 80;速率= 0.03;分裂米德尔= 0.02;optspec =“呼叫”;Sigma=0.16;平均值j=0.02;JumpVol=0.08;JumpFreq=2;
不指定“Strike”,计算整个FFT(或FRFT) Strike网格的期权价格
计算选项敏感性,并输出相应的打击。如果罢工
输入为空([]
),将在整个FFT(或FRFT)打击网格上计算期权敏感性。FFT(或FRFT)打击网格被确定为exp(原木走向网格)
,其中原木走向网格的每列都有NumFFT
要点LogStrikeStep
大约以每个元素为中心的间距日志(AssetPrice)
。的默认值NumFFT
是2 ^ 12。除了第一个输出中的灵敏度外,可选的最后一个输出还包含相应的罢工。
解决= datenum (截止2017年6月29日的);成熟= DATEMNTH(定居,6);罢工= [];未指定% Strikeδ,kout] = Optsensbymertonfft(速率,assetprice,sold,成熟,optspec,strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”);%显示FFT打击网格上的最低和最高打击值格式(Kout (1) Kout(结束)
ans =1×210138× 0.0000 1.8798
%显示了罢工的子集和相应的选择敏感性范围= (2046:2052);δ(范围)][Kout(范围)
ans =7×250.4929 0.9895 58.8640 0.9801 68.6231 0.8816 80.0000 0.5283 93.2631 0.1551 108.7251 0.0241 126.7505 0.0025
改变FFT(或FRFT)点数并与之进行比较Optsensbymertoni
尝试不同数量的FFT(或FRFT)点,并将结果与数值积分进行比较optSensByMertonFFT
,它使用FFT(或FRFT)技术在整个罢工范围内快速计算,Optsensbymertoni
函数使用直接的数值积分,它通常较慢,特别是在多次打击时。但是,计算的值Optsensbymertoni
可以作为调整设置的基准optSensByMertonFFT
。
%尝试使用较少数量的FFT点%(例如,用于更快的性能或更小的内存占用空间)NumFFT = 2 ^ 10;%小于默认值2^12罢工= [];%打击没有指定(将使用整个FFT打击网格)δ,kout] = Optsensbymertonfft(速率,assetprice,sold,成熟,optspec,strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”那...“NumFFT”, NumFFT);%与数值积分法的比较范围=(510:516);罢工= Kout(范围);DeltaFFT =δ(范围);DeltaNI = optSensByMertonNI(利率,资产价格,结算,到期,OptSpec, Strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”);错误= abs (DeltaFFT-DeltaNI);table(Strike, DeltaFFT, DeltaNI, Error)
ans =7×4表Strike DeltaFFT DeltaNI Error ______ __________ __________ __________ 12.696 0.89726 0.99002 0.092766 23.449 0.93421 0.99002 0.05581 43.312 0.94691 0.99001 0.043093 80 0.50983 0.52827 0.018446 147.76 0.004147 0.00019101 0.003956 272.93 0.001071 1.547e-09 0.001071 504.11 0.00030521 5.7578e-10 0.00030521
进一步调整FFT(或FRFT)
如果值在输出DeltaFFT
明显不同于DeltaNI
试着调整适应optSensByMertonFFT
设置,例如特征菲尔特
那LogStrikeStep
那NumFFT
那阻尼因子
,等等。注意if (LogStrikeStep
*特征菲尔特
)是2π/NumFFT
,使用FFT。否则,使用FRFT。
罢工= [];%打击未指定(将使用整个FFT或FRFT打击网格)δ,kout] = Optsensbymertonfft(速率,assetprice,sold,成熟,optspec,strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”那...“NumFFT”,numfft,“特色FCNSTEP”,0.065,'logstrikestep',0.001);%与数值积分法的比较罢工= Kout(范围);DeltaFFT =δ(范围);DeltaNI = optSensByMertonNI(利率,资产价格,结算,到期,OptSpec, Strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”);错误= abs (DeltaFFT-DeltaNI);table(Strike, DeltaFFT, DeltaNI, Error)
ans =7×4表“UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0.51953 0.51953 3.7503e-12
%保存最终的FFT(或FRFT)打击网格以备将来参考。为%例子,它提供有关罢工输入范围的信息%其中FFT(或FRFT)操作有效。FFTStrikeGrid = Kout;MinStrike = FFTStrikeGrid (1)%罢工不能低于Minstrike
Minstrike = 47.9437.
MaxStrike = FFTStrikeGrid(结束)%罢工不能大于maxstrike
MaxStrike=133.3566
计算一次打击的选项灵敏度
一旦确定所需的FFT(或FRFT)设置,使用罢工
输入以指定罢工而不是提供空数组。如果指定的罢工与FFT(或FRFT)击打网格上的值不匹配,则输出在指定的罢工上插入。
解决= datenum (截止2017年6月29日的);成熟= DATEMNTH(定居,6);罢工= 80;Delta = Optsensbymertonfft(速度,assetprice,sold,成熟,optspec,strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”那...“NumFFT”,numfft,“特色FCNSTEP”,0.065,'logstrikestep', 0.001)
δ= 0.5283
计算罢工向量的期权敏感性
使用罢工
输入以指定罢工。
解决= datenum (截止2017年6月29日的);成熟= DATEMNTH(定居,6);罢工=(76:2:84)';Delta = Optsensbymertonfft(速度,assetprice,sold,成熟,optspec,strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”那...“NumFFT”,numfft,“特色FCNSTEP”,0.065,'logstrikestep', 0.001)
三角洲=5×10.6727 0.6013 0.5283 0.4565 0.3883
计算相同长度的打击矢量和日期矢量的期权敏感性
使用罢工
输入以指定罢工。此外,成熟
输入可以是向量,但它必须匹配罢工
矢量如果是扩展输出
名称 - 值对参数未设置为“对”
。
解决= datenum (截止2017年6月29日的); 到期日=日期(结算,[12 18 24 30 36]);%五个地方罢工= [76 78 80 82 84]'% 5的罢工Delta = Optsensbymertonfft(速度,assetprice,sold,成熟,optspec,strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”那...“NumFFT”,numfft,“特色FCNSTEP”,0.065,...'logstrikestep', 0.001)矢量输出中%五个值
三角洲=5×10.6419 0.5907 0.5565 0.5311 0.5110
展开表面的输出
设定扩展输出
的名称-值对参数“对”
将输出扩展为NStrikes
——- - - - - -NMaturities
矩阵。在这种情况下,它们是方形矩阵。
δ,kout] = Optsensbymertonfft(速率,assetprice,sold,成熟,optspec,strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”那...“NumFFT”,numfft,“特色FCNSTEP”,0.065,...'logstrikestep', 0.001,“ExpandOutput”,真正的)%(5 x 5)矩阵输出
三角洲=5×50.6419 0.6305 0.6245 0.6245 0.6173 0.5173 0.5922 0.5907 0.5905 0.5905 0.5905 0.5422 0.5507 0.5565 0.5607 0.5565 0.5607 0.5637 0.4927 0.5112 0.5229 0.5312 0.5372 0.4447 0.4720 0.4898 0.5220 0.4898 0.5229 0.4898 0.5220 0.5110
kout =5×576 76 76 76 76 78 78 78 78 78 78 80 80 80 80 80 82 82 82 82 82 82 84 84 84 84 84 84 84 84 84 84 84 84 84 84 84 84 84 84 84
计算一个方向向量和一个不同长度的日期向量的选项敏感性
当扩展输出
是“对”
那NStrikes
不一定要匹配NMaturities
。也就是说,输出NStrikes
——- - - - - -NMaturities
矩阵可以是矩形的。
解决= datenum (截止2017年6月29日的);成熟= DATEMNTH(定居,12 *(0.5:0.5:3)');% 6个期限罢工=(76:2:84)';% 5的罢工Delta = Optsensbymertonfft(速度,assetprice,sold,成熟,optspec,strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”那...“NumFFT”,numfft,“特色FCNSTEP”,0.065,...'logstrikestep', 0.001,“ExpandOutput”,真正的)%(5 x 6)矩阵输出
三角洲=5×60.6727 0.6419 0.6305 0.6245 0.6204 0.6173 0.6013 0.5922 0.5907 0.5905 0.5905 0.5905 0.5283 0.5422 0.5507 0.5565 0.5607 0.5637 0.4565 0.4927 0.5112 0.5229 0.5311 0.5372 0.3883 0.4447 0.4725 0.4898 0.5020 0.5110
计算期权敏感性的打击矢量和资产价格矢量
当扩展输出
是“对”
,输出也可以是一个NStrikes
——- - - - - -NAssetPrices
矩形矩阵接受资产价格的向量。
解决= datenum (截止2017年6月29日的);成熟= DATEMNTH(定居,12);%单一成熟ManyAssetPrices = [70 75 80 85];%四项资产价格罢工=(76:2:84)';% 5的罢工Delta = Optsensbymertonfft(Rate,ManyAssetprices,Sold,成熟,Optspec,Strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,“超出规格”那“δ”那...“NumFFT”,numfft,“特色FCNSTEP”,0.065,...'logstrikestep', 0.001,“ExpandOutput”,真正的)% (5 × 4)矩阵输出
三角洲=5×40.3796 0.5157 0.6419 0.7472 0.3315 0.4637 0.5922 0.7043 0.2874 0.4137 0.5422 0.6592 0.2474 0.3664 0.4927 0.6128 0.2117 0.3224 0.4447 0.5657
打印选项敏感曲面
使用罢工
输入以指定罢工。增加…的价值NumFFT
支持更金宝app广泛的罢工。此外,成熟
输入可以是一个向量。集扩展输出
到“对”
输出曲面NStrikes
——- - - - - -NMaturities
矩阵。
解决= datenum (截止2017年6月29日的);成熟= DATEMNTH(定居,12 * [1/12 0.25(0.5:0.5:3)]);时间=弗拉克(定居,到期);罢工=(2:2:200)';增加“NumFFT”以支持更大范围的攻击金宝appNumFFT = 2 ^ 13;[Delta, Gamma, Rho, Theta, Vega] = optSensByMertonFFT(...利率,资产价格,结算,到期,OptSpec, Strike,...Sigma, MeanJ, JumpVol, jumpfrequency,“分割收益”,分配收益率,...“NumFFT”,numfft,“特色FCNSTEP”,0.065,'logstrikestep', 0.001,...“超出规格”, (“δ”那“伽玛”那“ρ”那“θ”那“织女星”],...“ExpandOutput”, 真的);[x,y] = meshgrid(次,罢工);数字;冲浪(x,y,delta);标题(“三角洲”);Xlabel(“期权到期年数”);伊莱贝尔(“罢工”);查看(-112,34);xlim([0 *(结束)]);
图;冲浪(X、Y、Gamma)标题(“伽马”)xlabel(“期权到期年数”) ylabel (“罢工”)视图(-112年,34);xlim([0 *(结束)]);
图;冲浪(X,Y,Rho)标题(的ρ)xlabel(“期权到期年数”) ylabel (“罢工”)视图(-112年,34);xlim([0 *(结束)]);
数字;冲浪(x,y,theta)标题('theta')xlabel(“期权到期年数”) ylabel (“罢工”)视图(-112年,34);xlim([0 *(结束)]);
数字;冲浪(x,y,Vega)标题(“织女星”)xlabel(“期权到期年数”) ylabel (“罢工”)视图(-112年,34);xlim([0 *(结束)]);
率
-不断复合无风险利率连续复合无风险利率,指定为标量十进制值。
数据类型:双
assetprice.
-当前标的资产价格目前的基础资产价格,指定为使用标量的数值或aninst.
——- - - - - -1
或NColumns
——- - - - - -1
向量。
有关正确尺寸的更多信息,请参见assetprice.
,请参见名称-值对参数扩展输出
。
数据类型:双
成熟
-期权到期日选项成熟日期,指定为aninst.
——- - - - - -1
或NColumns
——- - - - - -1
使用串行日期号、日期字符向量、日期时间数组或字符串数组的向量。
有关正确尺寸的更多信息,请参见成熟
,请参见名称-值对参数扩展输出
。
数据类型:双
|字符
|datetime
|一串
optspec.
-期权的定义“呼叫”
或“把”
|带值字符串数组“电话”
或“放”
选项的定义,指定为ninst.
——- - - - - -1
或NColumns
——- - - - - -1
使用字符向量或带值字符串数组的单元格数组的向量“呼叫”
或“把”
。
有关正确尺寸的更多信息,请参见optspec.
,请参见名称-值对参数扩展输出
。
数据类型:细胞
|一串
罢工
-期权执行价格价值期权执行价格值,指定为ninst.
——- - - - - -1
那NRows
——- - - - - -1
那NRows
——- - - - - -NColumns
执行价格向量。
如果此输入是空数组([]
),在整个FFT(或FRFT)击打网格上计算的期望价格,该网格被确定为exp(原木走向网格)
。对数击球网格的每列都有“NumFFT”
要点'logstrikestep'
大约以每个元素为中心的间距日志(AssetPrice)
。
有关正确尺寸的更多信息,请参见罢工
,请参见名称-值对参数扩展输出
。
数据类型:双
西格玛
-标的资产波动率下属资产的波动率,指定为标量数值。
数据类型:双
MeanJ
-随机百分比跳跃大小的平均值随机百分比跳跃大小的平均值(j),指定为标量十进制值日志
(1+j)为正态分布,平均值为(日志
(1+MeanJ
)-0.5 *JumpVol
^2)和标准差JumpVol
。
数据类型:双
JumpVol
-标准差日志
(1+j的)标准差日志
(1+j) 在哪里j
是随机百分比跳转大小,指定为标量十进制值。
数据类型:双
JumpFreq
-泊松跃迁过程的年频率泊松跃迁过程的年频率,用标量数值表示。
数据类型:双
指定可选的逗号分离对名称,值
参数。名称
是参数名称和价值
为对应值。名称
必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen
。
[价格,SplayOut] = Optsensbymertonfft(利率,AssetPrice,Sold,成熟,Optspec,Strike,Sigma,Vilicj,Jumpvol,JumpFreq,'基础',7)
基础
-仪器的日计数基础0.
(默认)|数字值:0.
那1
那2
那3.
那4.
那6.
那7.
那8.
那9.
那10
那11
那12
那13
仪器的日计数,指定为逗号分隔对组成“基础”
和使用支持的值的标量:金宝app
0=实际值/实际值
1 = 30/360(SIA)
2 =实际/ 360
3=实际值/365
4 = 30/360(PSA)
5 = 30/360(ISDA)
6 = 30/360(欧洲)
7=实际值/365(日语)
8=实际/实际(ICMA)
9 =实际/ 360(ICMA)
10 =实际/365 (ICMA)
11 = 30/360e (icma)
12=实际值/365(ISDA)
13=公共汽车/252
有关更多信息,请参见基础。
数据类型:双
分裂堤
-持续复合标的资产收益率0.
(默认)|数字连续复合标的资产收益率,用逗号分隔的对表示,由“分割收益”
和标量数值。
数据类型:双
OutSpec
-定义输出["价格"]
(默认)|带值字符串数组“价格”
那“δ”
那“伽玛”
那“织女星”
那“ρ”
,“θ”
|带有值的字符向量的单元格数组“价格”
那“δ”
那'伽玛'
那'vega'
那'rho'
,“西塔”
定义输出,指定为逗号分隔对,由“超出规格”
和一个n
-借-1
或者一个1
——- - - - - -n
包含受支持值的字符向量的字符串数组或单元格数组。金宝app
笔记
“织女星”
为对初始波动率的敏感性,根号为(V0
).
例子:超出规格=[“价格”、“增量”、“伽马”、“织女星”、“rho”、“θ”]
数据类型:一串
|细胞
NumFFT
-特征函数变量中的网格点数量4096
(默认)|数字特征函数变量和log-strike网格中每一列的网格点数,指定为逗号分隔对,由“NumFFT”
和标量数值。
数据类型:双
特征菲尔特
-特征函数可变网格间距0.01
(默认)|数字特征函数可变网格间距,指定为逗号分隔对组成“特色FCNSTEP”
和标量数值。
数据类型:双
阻尼因子
-Carr-Madan配方的阻尼因子1.5
(默认)|数字Carr-Madan配方的阻尼因子,指定为逗号分隔对,由“DampingFactor”
和标量数值。
数据类型:双
交
-正交类型“辛普森”
(默认)|带有值的字符向量:'辛普森'
或“梯形”
|字符串数组具有值:“辛普森”
或“梯形”
求积的类型,指定为逗号分隔对,由“交”
以及值为的单个字符向量或字符串数组'辛普森'
或“梯形”
。
数据类型:字符
|一串
扩展输出
-标志要扩展输出假
(产出是ninst.
——- - - - - -1
矢量)(默认)|有值的逻辑真正的
或假
扩展输出的标志,指定为逗号分隔对,由“ExpandOutput”
和一个逻辑:
真正的
-如果真正的
,则输出为NRows
——- - - - - -NColumns
矩阵。NRows
每列的罢工数是由罢工
输入。例如,罢工
可以是NRows
——- - - - - -1
矢量,或者NRows
——- - - - - -NColumns
矩阵。如果罢工
是空的,NRows
等于NumFFT
。NColumns
由大小决定assetprice.
那解决
那成熟
,optspec.
,它们都必须是标量或NColumns
——- - - - - -1
向量。
假
-如果假
,则输出为ninst.
——- - - - - -1
向量。此外,输入罢工
那assetprice.
那解决
那成熟
,optspec.
必须是标量或ninst.
——- - - - - -1
向量。
数据类型:逻辑
一种香草选项是只包含最标准组件的选项类别。
普通期权有一个到期日和直接的执行价。美式期权和欧式期权都属于普通期权。
普通期权的收益如下:
一个电话:
对于看跌期权:
在哪里:
圣是目前底层资产的价格T.。
K.为执行价格。
有关更多信息,请参见常规期权。
默顿跳跃扩散模型(Merton(1976))是布莱克-斯科尔斯模型的另一种扩展,其中通过在泊松过程中加入跳跃扩散参数来模拟资产价格的突然移动(上下)。
随机微分方程是:
哪里
R.为连续无风险利率。
问:是持续的股息产量。
W.T.这是韦纳过程。
j随机百分比跳转大小是否取决于发生的跳转,其中ln
(1+j)通常以平均分布
和标准偏差δ,和(1+j)具有对数正态分布:
μ.j是什么意思j(μ.j> -1)。
δ是标准偏差ln
(1+j)为了(δ≥0)。
ƛP.是泊松过程的年频率(强度)P.T.(ƛP.≥0)。
σ.资产价格的波动是(σ.> 0)。
特征功能 为了j= 1(资产价格)和j= 2(风险中性度量)为:
哪里
φ.为特征函数变量。
τ.是成熟的时候了吗τ.=T.-T.).
一世为单位虚数(一世2= -1).
Carr和Madan(1999)公式是对Heston(1993)框架的一种流行的修改实施。
而不是计算概率P.1和P.2作为中间步骤,Carr和Madan提出了另一个表达式,使其傅里叶反变换直接给出期权价格本身。
哪里
R.为连续无风险利率。
问:是持续的股息产量。
S.T.资产价格是多少T.。
τ是到成熟的时间(τ =T.-T.).
呼叫(K.)买入价是在罢工吗K.。
把(K.)是罢工的价格K.。
一世为单位虚数(一世2= -1).
φ是特征函数变量。
α为阻尼因子。
你为集成的特征函数变量,其中ϕ = (你- (α+1)一世).
F2(φ)是特征功能P.2。
P.2是概率S.T.>K.在风险中性测度下的模型。
为了将FFT或FRFT应用于该公式,积分的特征函数变量,你,被离散为NumFFT
(N.)点的步长特征菲尔特
(δ.你),以及伐木罢工K.被离散化N.具有步长的点LogStrikeStep
(δ.K.).
离散的积分特征函数变量,你j(j= 1,2,3,......,N.),最小值为0,最大值为(N.1)(Δ你),它近似于从0到无穷大的连续积分范围。
离散对数走向网格,K.N.(N.= 1, 2, 3,N.)的近似中心围绕ln
(S.T.),最小值为
最大值为
最小允许罢工是什么
最大允许冲击为
作为离散化的结果,看涨期权的表达式变为
哪里
Δ你是用于积分的离散化特征函数变量的步长。
ΔK.是离散的对数罢工的一步尺寸。
N.是FFT或FRFT点数。
W.j是用于近似积分的求积权重。
如果ΔK.和Δ你受以下约束:
否则,函数使用Chourdakis(2005)中描述的FRFT方法。
[1] Bates, D. S. <跳跃和随机波动:德国马克期权中隐含的汇率过程>。金融研究综述。卷9。1号。1996.
[2] 使用快速傅立叶变换的期权估价中国计算金融杂志。第2卷,第4期,1999年。
Cont, R.和P. Tankov。具有跳跃过程的财务建模。查普曼与霍尔/CRC出版社,2004。
[4] 使用分数FFT的期权定价中国计算金融杂志。2005.
[5] Merton,R。“选项定价潜在股票回报是不连续的。”金融经济学杂志。卷3。1976.
optByHestonFFT
|optSensByHestonFFT
|optByHestonNI
|Optsensbyhestonni.
|OptbyBatesfft.
|OptsensbyBatesfft.
|optByBatesNI
|Optsensbybatesni.
|optByMertonFFT
|optByMertonNI
|Optsensbymertoni
您单击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
你也可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获得最佳网站性能。其他MathWorks国家网站未优化您所在地的访问。