主要内容

掉期期权

掉期期权仪对象

描述

创建和定价掉期期权使用此工作流的仪器对象:

  1. 使用fininstrument创建一个掉期期权仪器对象。

  2. 使用Finmodel.指定HullWhiteBlackKarasinski黑色的正常或者SABR模型掉期期权乐器。

  3. 使用finpricer指定正常SABR黑色的HullWhite或者IRTree定价方法掉期期权乐器。

有关此工作流的更多信息,请参见与流程中使用基于对象的框架定价金融工具入门

有关可用模型定价方法的详细信息,并掉期期权仪器,看选择仪器,模型和价格

创建

描述

例子

SwaptionInstrument= fininstrument (InstrumentType,'罢工“strike_value,”ExerciseDate”,exercice_date)创建一个掉期期权通过指定对象InstrumentType并设置属性用于指定的名称-值对参数罢工ExerciseDate.想了解更多信息掉期期权仪器,看更多关于

例子

SwaptionInstrument= fininstrument (___名称,值设置可选属性除了前面语法中要求的参数外,还使用了其他的名称-值对。例如,SwaptionInstrument = fininstrument(“掉期期权”、“罢工”,0.67,“ExerciseDate”,datetime(2019, 30),“交换”,Swap_obj,“OptionType”、“放”、“ExerciseStyle”,“欧洲”、“名称”、“swaption_instrument”)创建一个掉期期权把工具的打击0.67和欧洲演习。可以指定多个名称-值对参数。

输入参数

全部展开

仪器类型,指定为值为的字符串“掉期期权”或者一个值为的字符向量“掉期期权”

数据类型:字符|字符串

掉期期权名称-值对的观点

指定必需的和可选的逗号分隔的对名称,值参数。名称参数名和价值是相应的价值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:SwaptionInstrument = fininstrument( “掉期期权”, '罢工',67 'ExerciseDate',日期时间(2019,1,30), '交换',Swap_obj, 'OptionType', “放”, 'ExerciseStyle', “欧洲”,'名称', “swaption_instrument”)
要求掉期期权名称-值对的观点

全部展开

选项击值,指定为逗号分隔的一对组成的“罢工”和标量非负的十进制值。

数据类型:

选项执行日期,指定为逗号分隔对,由“ExerciseDate”以及标量日期时间、串行日期号、日期字符向量或日期字符串。

请注意

对于欧洲来说,只有一个选择ExerciseDate在期权到期日。

如果使用日期字符向量或日期字符串,则格式必须是可识别的DateTime.因为ExerciseDate属性存储为日期时间。

数据类型:|字符|字符串|DateTime.

标的对象,指定为逗号分隔的对,由“交换”和一个标量对象。

数据类型:对象

可选掉期期权名称-值对的观点

全部展开

选项类型,指定为逗号分隔的一对组成的“OptionType”以及标量字符串或字符向量。

数据类型:字符|字符串

选项练习样式,指定为逗号分隔对组成“ExerciseStyle”以及标量字符串或字符向量。

请注意

当你指定作为标的资产的工具掉期期权仪器和使用正常SABR黑色的或者HullWhite定价的人,仪器LegType必须是(“固定”、“浮动”)或者(“浮动”,“固定”)掉期期权仪器ExerciseStyle必须是“欧洲”

数据类型:字符串|字符

用户定义的名称为仪器,指定为逗号分隔的一对组成的“名字”以及标量字符串或字符向量。

数据类型:字符|字符串

属性

全部展开

期权行权价值,返回标非负十进制值。

数据类型:

选项执行日期,作为日期时间返回。

数据类型:DateTime.

对象,作为标量返回对象。

数据类型:对象

期权型,带的值作为字符串返回“电话”或者“把”

数据类型:字符串

行使选择权的风格,用的值作为字符串返回“欧洲”

数据类型:字符串

用户定义的仪器名称,作为字符串返回。

数据类型:字符串

例子

全部折叠

这个例子展示了定价a的工作流程掉期期权仪器使用时SABR模型和A.SABR定价方法。

创造ratecurve对象

创建A.ratecurve对象使用ratecurve

解决= datetime(2018、9、15);类型=“零”;ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';zeroates = Settle + ZeroTimes;myRC = ratecurve (“零”,沉淀,零氮酸盐,零)
myRC = ratecurve具有属性:类型: “零” 配混:-1基础:0日期:[10×日期时间]价格:[10×双]结清:15九月2018 InterpMethod: “线性” ShortExtrapMethod: “下一个” LongExtrapMethod:“此前”

创造仪对象

使用fininstrument要创建底层的仪器对象。

交换= fininstrument (“交换”“成熟”datetime (2027 3 15),“LegRate”[0 0],“LegType”......“浮动”“固定”],“名义上”, 100,StartDate可以的,日期时间(2022,3,15),“名字”“swap_instrument”
交换=交换与属性:LegRate: [0 0] LegType:[“浮动”“固定”]重置:[2 2]基础:[0 0]名义:100 LatestFloatingRate:[南南]ResetOffset: [0 0] DaycountAdjustedCashFlow: [0 0] ProjectionCurve: [0 x0 ratecurve] BusinessDayConvention:(“实际”“实际”)假期:NaT EndMonthRule: [1] StartDate可以:15 - 3月- 2022成熟:15 - 3月- 2027的名字:“swap_instrument”

创造掉期期权仪对象

使用fininstrument创建一个掉期期权仪器对象。

掉期期权= fininstrument (“掉期期权”“罢工”, 0.02,“ExerciseDate”,日期时间(2022,3,15),“交换”交换,“名字”“swaption_option”
Swap =交换属性:OptionType: "call" exercisstyle: "european" exercisdate: 15-Mar-2022 Strike: 0.0200 Swap: [1x1 fininstrument。交换)的名字:“swaption_option”

创造SABR模型对象

使用Finmodel.创建一个SABR模型对象。

SabrModel = finmodel (“SABR”“阿尔法”,0.032,“测试版”, 0.04,的ρ、。08“怒江”, 0.49,“转变”,0.002)
SabrModel = SABR的属性:Alpha: 0.0320 Beta: 0.0400 Rho: 0.0800 Nu: 0.4900 Shift: 0.0020

创造SABR定价的人对象

使用finpricer创建一个SABR对象,并使用ratecurve对象的'DiscountCurve'名称-值对的论点。

outPricer = finpricer (“分析”'型号'SabrModel,'DiscountCurve'myRC)
outPricer = SABR with properties:SABR]

价格掉期期权仪器

使用价格来计算价格掉期期权乐器。

价格=价格(outPricer互换期权)
价格= 10.8558

这个例子展示了定价a的工作流程掉期期权仪器使用时黑色的模型和A.黑色的定价方法。

创造ratecurve对象

创建A.ratecurve对象使用ratecurve

解决= datetime(2018、9、15);类型=“零”;ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';zeroates = Settle + ZeroTimes;myRC = ratecurve (“零”,沉淀,零氮酸盐,零)
myRC = ratecurve具有属性:类型: “零” 配混:-1基础:0日期:[10×日期时间]价格:[10×双]结清:15九月2018 InterpMethod: “线性” ShortExtrapMethod: “下一个” LongExtrapMethod:“此前”

创造仪对象

使用fininstrument要创建底层的仪器对象。

交换= fininstrument (“交换”“成熟”datetime (2027 3 15),“LegRate”[0 0],“LegType”......“浮动”“固定”],“名义上”, 100,StartDate可以的,日期时间(2022,3,15),“名字”“swap_instrument”
交换=交换与属性:LegRate: [0 0] LegType:[“浮动”“固定”]重置:[2 2]基础:[0 0]名义:100 LatestFloatingRate:[南南]ResetOffset: [0 0] DaycountAdjustedCashFlow: [0 0] ProjectionCurve: [0 x0 ratecurve] BusinessDayConvention:(“实际”“实际”)假期:NaT EndMonthRule: [1] StartDate可以:15 - 3月- 2022成熟:15 - 3月- 2027的名字:“swap_instrument”

创造掉期期权仪对象

使用fininstrument创建一个掉期期权仪器对象。

掉期期权= fininstrument (“掉期期权”“罢工”, 0.02,“ExerciseDate”,日期时间(2022,3,15),“交换”交换,“名字”“swaption_option”
Swap =交换属性:OptionType: "call" exercisstyle: "european" exercisdate: 15-Mar-2022 Strike: 0.0200 Swap: [1x1 fininstrument。交换)的名字:“swaption_option”

创造黑色的模型对象

使用Finmodel.创建一个黑色的模型对象。

BlackModel = finmodel (“黑色”“波动”,0.032,“转变”,0.002)
BlackModel =黑色与性能:波动:0.0320转变:0.0020

创造黑色的定价的人对象

使用finpricer创建一个黑色的对象,并使用ratecurve对象的'DiscountCurve'名称-值对的论点。

outPricer = finpricer (“分析”'型号'BlackModel,'DiscountCurve'myRC)
outPricer =黑色与属性:型号:[1x1的finmodel.Black] DiscountCurve:[1x1的ratecurve]

价格掉期期权仪器

使用价格来计算价格掉期期权乐器。

价格=价格(outPricer互换期权)
价格= 3.3116

这个例子展示了定价a的工作流程掉期期权仪器使用时HullWhite模型和一个IRTree定价方法。

创造ratecurve对象

创建A.ratecurve对象使用ratecurve

解决= datetime(2018、9、15);类型=“零”;ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20 30])]';ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293 0.0307]';zeroates = Settle + ZeroTimes;myRC = ratecurve (“零”,沉淀,零氮酸盐,零)
myRC = ratecurve具有属性:类型: “零” 配混:-1基础:0日期:[10×日期时间]价格:[10×双]结清:15九月2018 InterpMethod: “线性” ShortExtrapMethod: “下一个” LongExtrapMethod:“此前”

创造仪对象

使用fininstrument要创建底层的仪器对象。

交换= fininstrument (“交换”“成熟”datetime (2027 3 15),“LegRate”[0 0],“LegType”......“浮动”“固定”],“名义上”, 100,StartDate可以的,日期时间(2022,3,15),“名字”“swap_instrument”
交换=交换与属性:LegRate: [0 0] LegType:[“浮动”“固定”]重置:[2 2]基础:[0 0]名义:100 LatestFloatingRate:[南南]ResetOffset: [0 0] DaycountAdjustedCashFlow: [0 0] ProjectionCurve: [0 x0 ratecurve] BusinessDayConvention:(“实际”“实际”)假期:NaT EndMonthRule: [1] StartDate可以:15 - 3月- 2022成熟:15 - 3月- 2027的名字:“swap_instrument”

创造掉期期权仪对象

使用fininstrument创建一个掉期期权仪器对象。

掉期期权= fininstrument (“掉期期权”“罢工”, 0.02,“ExerciseDate”,日期时间(2022,3,15),“交换”交换,“名字”“swaption_option”
Swap =交换属性:OptionType: "call" exercisstyle: "european" exercisdate: 15-Mar-2022 Strike: 0.0200 Swap: [1x1 fininstrument。交换)的名字:“swaption_option”

创造HullWhite模型对象

使用Finmodel.创建一个HullWhite模型对象。

HullWhiteModel = finmodel (“HullWhite”“阿尔法”,0.032,“σ”, 0.04)
HullWhiteModel = HullWhite与属性:阿尔法:0.0320西格玛:0.0400

创造IRTree定价的人对象

使用finpricer创建一个IRTree对象,并使用ratecurve对象的'DiscountCurve'名称-值对的论点。

outPricer = finpricer (“IRTree”'型号',HullWhiteModel,'DiscountCurve'myRC,“TreeDates”ZeroDates)
outPricer = HWBKTree with properties: Tree: [1x1 struct] TreeDates: [10x1 datetime] Model: [1x1 finmodel. outPricer = HWBKTree with properties: Tree: [1x1 struct] TreeDates: [10x1 datetime] Model: [1x1 finmodel. outPricer = HWBKTree折现曲线:[1x1率曲线]

价格掉期期权仪器

使用价格计算价格和敏感性的掉期期权乐器。

[Price, outPR] = Price (outPricer,Swaption,[“所有”])
价格= 14.6581
OUTPR = priceresult与性能:结果:[表1×4] PricerData:[1x1的结构]
outPR。结果
ans =1×4表价格维加伽玛三角洲______ ______ _______ _____ 14.658 321.44 -2261.6 142.2

这个例子展示了如何校准偏移SABR对于模型参数掉期期权仪器使用时SABR定价方法。

市场数据加载

%零线ValuationDate = datetime (“3月5日-2016”“场所”'EN_US');ZeroDates = datemnth(ValuationDate,[1 2 3 6 9 12 * [1 2 3 4 5 6 7 8 9 10 12]])';ZeroRates = [-0.33 -0.28 -0.24 -0.12 -0.08 -0.03 0.015 0.028......0.033 0.042 0.056 0.095 0.194 0.299 0.415 0.525]'/100;复合= 1;ZeroCurve = ratecurve (“零”, ZeroDates ValuationDate ZeroRates,“复合”复合)
ZeroCurve =带有属性的比率曲线:类型:" 0 "复利:1基础:0日期:[16x1 datetime]利率:[16x1 double]定值:2016年3月05日InterpMethod: "linear" ShortExtrapMethod: "next" LongExtrapMethod: "previous"
定义交换SwaptionSettle = datetime (“3月5日-2016”“场所”'EN_US');SwaptionExerciseDate = datetime (“3月5日,2017年”“场所”'EN_US');SwaptionStrikes = (-0.6:0.01:1.6) / 100;%加入排除罢工SwapMaturity = datetime (“5 - 3月- 2022“场所”'EN_US');标的掉期的期限optspec ='打电话'

通过创建计算正向交换速率仪器

使用fininstrument创建一个仪器对象。

LegRate = [0 0];交换= fininstrument (“交换”“成熟”SwapMaturity,“LegRate”LegRate,“LegType”[“固定”“浮动”],......“ProjectionCurve”,ZeroCurve,“StartDate可以”SwaptionExerciseDate)
交换=交换与属性:LegRate:[0 0] LegType:[ “固定”, “浮动”]复位:[2 2]基础:[0 0]名义:100 LatestFloatingRate:[楠楠] ResetOffset:[0 0] DaycountAdjustedCashFlow:[0 0] ProjectionCurve:[1×2 ratecurve] BusinessDayConvention:[ “实际”, “实际”]假期:自然科学EndMonthRule:[1 1]开始日期:05-MAR-2017到期日:05-MAR-2022名称: “”
ForwardValue = parswaprate(SWAP,ZeroCurve)
ForwardValue = 7.3271 e-04

加载市场引伸波幅数据

市场掉期波动率是以转移的黑色波动率来报价的0.8百分比变化。

StrikeGrid = (-0.5;-0.25;-0.125;0;0.125;0.25;0.5;1.0;1.5) / 100;MarketStrikes = ForwardValue + StrikeGrid; Shift = 0.008;%0.8%移MarketShiftedBlackVolatilities = [21.1;15.3;14.0;14.6;16.0;17.7;19.8;23.9;26.2] / 100;ATMShiftedBlackVolatility = MarketShiftedBlackVolatilities(StrikeGrid == 0);

校准移SABR模型参数

bet参数是预定在0.5.使用波动来计算隐含波动率。

β= 0.5;%校准阿尔法,卢和NUobjFun = @(X) marketshiftedblackvolatility - finpricer(“分析”'型号'......finmodel (“SABR”“阿尔法”X (1),“测试版”,β,的ρ, X (2),“怒江”,X(3),“转变”转变)......'DiscountCurve',ZeroCurve),SwaptionExerciseDate,ForwardValue,MarketStrikes);X = lsqnonlin(objFun,[0.5 0 0.5],[0 -1 0],[1 Inf文件Inf文件]);
当地最小的可能。lsqnonlin停止,因为在相对于其初始值的平方和最终的变化小于函数允差值。
α= X (1);ρ= X (2);ν= X (3);

创造SABR模型使用校准参数

使用Finmodel.创建一个SABR模型对象。

SABRModel = finmodel (“SABR”“阿尔法”,阿尔法,“测试版”,Beta版,的ρ,卢,“怒江”ν,“转变”转变)
SABRModel = SABR与性能:阿尔法:0.0135 Beta版:0.5000卢:0.4654怒江:0.4957转变:0.0080 VolatilityType: “黑”

创造SABR定价的人使用校准SABR模型和计算波动性

使用finpricer创建一个SABR对象,并使用ratecurve对象的'DiscountCurve'名称-值对的论点。

SABRPricer = finpricer(“分析”'型号'SABRModel,'DiscountCurve',ZeroCurve)
SABRPricer = SABR与属性:DiscountCurve:[1x1的ratecurve]型号:[1x1的finmodel.SABR]
sabrshiftedblackvolatility =波动性(SABRPricer, swaptionexercisdate, ForwardValue, SwaptionStrikes)
SABRShiftedBlackVolatilities =221×10.2978 0.2911 0.2848 0.2787 0.2729 0.2673 0.2620 0.2568 0.2518 0.2470⋮
图;图(MarketStrikes,MarketShiftedBlackVolatilities,“o”......SwaptionStrikes SABRShiftedBlackVolatilities);甘氨胆酸h =;线([0],[min (h.YLim), max (h.YLim)],“线型”“——”);ylim([0.13 0.31])xlabel(“罢工”);传奇(“市场行情”“转移SABR”“位置”“东南”);标题([“移黑波动(”num2str(* 100)转变,“%的移)”]);

图中包含一个坐标轴。标题为shift Black Volatility (0.8% shift)的轴包含3个类型为line的对象。这些对象代表市场报价,移位SABR。

价格掉期期权使用校准仪器SABR模型和SABR定价的人

%创建交换工具NumInst =长度(SwaptionStrikes);swap (NumInst, 1) = fininstrument(“掉期期权”......“罢工”SwaptionStrikes (1)“ExerciseDate”SwaptionExerciseDate (1)“交换”、交换);k = 1:NumInst Swaptions(k) = 1“掉期期权”“罢工”,SwaptionStrikes(K),......“ExerciseDate”SwaptionExerciseDate,“交换”交换,“OptionType”, OptSpec);结束掉期期权
掉期期权=221×1对象16x1带有属性的交换数组:OptionType exercisstyle exercisdate Strike Swap Name⋮
%使用SABR定价器的价格互换SwaptionPrices =价格(SABRPricer,互换期权);图;图(SwaptionStrikes,SwaptionPrices,“r”);甘氨胆酸h =;线([0],[min (h.YLim), max (h.YLim)],“线型”“——”);包含(“罢工”);标题(“掉期期权价格”);

图中包含一个坐标轴。与标题掉期期权价格的轴包含型线的2个对象。

更多关于

全部展开

介绍了R2020a