主要内容

IRMonteCarlo

创建IRMonteCarlo利率工具使用的定价对象HullWhiteBraceGatarekMusielaBlackKarasinski,或LinearGaussian2F模型

描述

创建并定价地板上交换掉期期权FloatBondFixedBondFixedBondOptionFloatBondOptionOptionEmbeddedFixedBond,或OptionEmbeddedFloatBond具有HullWhiteBraceGatarekMusielaSABRBraceGatarekMusielaBlackKarasinski,或LinearGaussian2F模型和IRMonteCarlo使用此工作流的定价方法:

  1. 使用fininstrument要创建FixedBondFloatBond地板上交换掉期期权FixedBondOptionFloatBondOptionOptionEmbeddedFixedBond,或OptionEmbeddedFloatBond仪对象。

  2. 使用finmodel要指定HullWhiteBlackKarasinski,或LinearGaussian2F的模型地板上交换掉期期权FloatBondFixedBondFixedBondOptionFloatBondOptionOptionEmbeddedFixedBond,或OptionEmbeddedFloatBond仪对象。

    使用finmodel要指定BraceGatarekMusielaSABRBraceGatarekMusiela的模型地板上FloatBondFixedBondFixedBondOptionFloatBondOptionOptionEmbeddedFixedBond,或OptionEmbeddedFloatBond仪对象。

  3. 当使用HullWhiteBlackKarasinski,或LinearGaussian2F模型,使用finpricer要指定IRMonteCarlo对象的价格地板上交换掉期期权FloatBondFixedBondFixedBondOptionFloatBondOptionOptionEmbeddedFixedBond,或OptionEmbeddedFloatBond仪对象。

    当使用BraceGatarekMusielaSABRBraceGatarekMusiela模型,使用finpricer要指定IRMonteCarlo对象的价格地板上FloatBondFixedBondFixedBondOptionFloatBondOptionOptionEmbeddedFixedBond,或OptionEmbeddedFloatBond仪对象。

有关此工作流的详细信息,请参见开始使用基于对象的金融工具定价框架的工作流程

有关可获得的工具、模型和定价方法的更多信息地板上交换掉期期权FloatBondFixedBondFixedBondOptionFloatBondOptionOptionEmbeddedFixedBond,或OptionEmbeddedFloatBond仪器,看到选择仪器,模型和价格

创建

描述

例子

IRMonteCarloPricerObj= finpricer (PricerType模型=模型,DiscountCurve= ratecurve_obj,SimulationDates= simulation_dates)创建一个IRMonteCarlo对象PricerType并设置属性使用所需的名称-值参数模型DiscountCurve,SimulationDates

例子

IRMonteCarloPricerObj= finpricer (___名称=值设置可选属性在前面的语法中,除了必需的参数之外,使用其他的名称-值参数。例如,IRMonteCarloPricerObj = finpricer("irmontecarlo",Model=HWModel,DiscountCurve=ratecurve_obj,SimulationDates=[datetime(2018,1,30);datetime (2019, 30)], NumTrials = 500)创建一个IRMonteCarlo对象使用HullWhite模型。您可以指定多个名称-值参数。

输入参数

全部展开

价格类型,指定为具有值的字符串“IRMonteCarlo”或者一个带有值的字符向量“IRMonteCarlo”

数据类型:字符|字符串

名称-值参数

指定必需的和可选的参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:IRMonteCarloPricerObj = finpricer("irmontecarlo",Model=HWModel,DiscountCurve=ratecurve_obj,SimulationDates=[datetime(2018,1,30);datetime (2019, 30)], NumTrials = 500)

要求IRMonteCarlo名称-值参数

全部展开

模型对象,指定为模型和先前创建的名称HullWhiteBlackKarasinskiLinearGaussian2FBraceGatarekMusiela,或SABRBraceGatarekMusiela模型对象。使用创建模型对象finmodel

数据类型:对象

ratecurve用于现金流贴现的对象,指定为DiscountCurve和先前创建的名称ratecurve对象。

请注意

指定单位ratecurve对象DiscountCurve.如果你用的是非平坦的ratecurve对象,软件中使用的速率ratecurve对象在成熟并且假设在利率期权的整个生命周期内价值是恒定的。

数据类型:对象

模拟日期,指定为SimulationDates以及使用日期时间数组、字符串数组或日期字符向量的标量或向量。

要支持万博1manbetx现有代码,IRMonteCarlo也接受序列号作为输入,但不建议使用。

可选IRMonteCarlo名称-值参数

全部展开

模拟试验,指定为NumTrials和独立采样路径的标量数。

数据类型:

相关随机变量,指定为RandomNumbers和一个NSimulationDates——- - - - - -NBrownians——- - - - - -NTrials三维时间序列阵列。三维时间序列数组有以下字段:

  • Z- - - - - -NSimulationDates——- - - - - -NBrownians——- - - - - -NTrials相关随机变量的3D时间序列数组,用于生成驱动模拟的布朗运动向量(即维纳过程)。

数据类型:结构体

属性

全部展开

此属性是只读的。

模型对象,作为对象返回。

数据类型:对象

ratecurve对象用于贴现现金流,返回为ratecurve对象。

数据类型:对象

模拟日期,作为datetime数组返回。

数据类型:datetime

模拟试验,作为独立样本路径的标量数返回。

数据类型:

相关随机变量,返回为NSimulationDates——- - - - - -NBrownians——- - - - - -NTrials三维时间序列阵列。

数据类型:结构体

对象的功能

价格 计算利率工具的价格IRMonteCarlo定价的人

例子

全部折叠

这个例子展示了为一个对象定价的工作流FixedBond仪器在使用HullWhite模型和IRMonteCarlo定价方法。

创建FixedBond仪对象

使用fininstrument要创建FixedBond仪对象。

固定b =仪表(“FixedBond”成熟= datetime(2022、9、15),CouponRate = 0.05, =“fixed_bond”
FixB = FixedBond与属性:CouponRate: 0.0500周期:2基础:0结束月规则:1本金:100 daycountadjuststedcashflow: 0 BusinessDayConvention:“实际”假期:NaT发行日期:NaT FirstCouponDate: NaT LastCouponDate: NaT StartDate: NaT到期日期:15 sep -2022名称:“fixed_bond”

创建HullWhite模型对象

使用finmodel要创建HullWhite模型对象。

HullWhiteModel = finmodel(“HullWhite”α= 0.32σ= 0.49)
HullWhiteModel = HullWhite属性:阿尔法:0.3200西格玛:0.4900

创建ratecurve对象

创建一个ratecurve对象使用ratecurve

Settle = datetime(2019,1,1);类型=“零”;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]';ZeroDates = Settle + ZeroTimes;比率曲线(“零”、结算、ZeroDates ZeroRates)
myRC =带有属性的利率曲线:类型:“零”复合:-1基础:0日期:[10x1 datetime]利率:[10x1 double]结算:01- 01- 2019 InterpMethod:“线性”ShortExtrapMethod:“下一个”LongExtrapMethod:“上一个”

创建IRMonteCarlo定价的人对象

使用finpricer要创建IRMonteCarloprice对象和使用ratecurve对象的“DiscountCurve”名称-值对参数。

outPricer = finpricer(“IRMonteCarlo”模型= HullWhiteModel DiscountCurve = myRC SimulationDates = ZeroDates)
outPricer = HWMonteCarlo with properties: NumTrials: 1000 RandomNumbers: [] DiscountCurve: [1x1 ratecurve] SimulationDates: [01- july -2019 01- january -2020 01- january -2021…型号:[1x1 finmodel。]HullWhite]

价格FixedBond仪器

使用价格来计算的价格FixedBond乐器。

[Price,outPR] = Price (outprice,FixB,[“所有”])
价格= 115.0303
outPR = priceresult with properties:结果:[1x4表]PricerData: [1x1 struct]
outPR。结果
ans =1×4表价格三角洲伽马织女星  ______ _______ ______ ____ 115.03 -397.13 1430.4 0

这个例子展示了为一个对象定价的工作流仪器在使用LinearGaussian2F模型和IRMonteCarlo定价方法。

创建仪对象

使用fininstrument要创建仪对象。

CapOpt = fininstrument(“帽子”成熟= datetime(2022、9、15),罢工= 0.01,= 2,重置名称=“cap_option”
CapOpt = Cap with properties: Strike: 0.0100成熟度:15-Sep-2022 ResetOffset: 0重置:2 Basis: 0 Principal: 100 ProjectionCurve: [0x0 ratecurve] DaycountAdjustedCashFlow: 0 BusinessDayConvention: "actual" Holidays: NaT Name: "cap_option"

创建LinearGaussian2F模型对象

使用finmodel要创建LinearGaussian2F模型对象。

线性高斯2fmodel = finmodel(“LinearGaussian2F”α= 0.07,Sigma1 = 0.01, Alpha2 = 0.5, Sigma2 = 0.006, = -0.7)的相关性
线性高斯2fmodel =线性高斯2f与属性:Alpha1: 0.0700 Sigma1: 0.0100 Alpha2: 0.5000 Sigma2: 0.0060相关性:-0.7000

创建ratecurve对象

创建一个ratecurve对象使用ratecurve

Settle = datetime(2019,1,1);类型=“零”;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]';ZeroDates = Settle + ZeroTimes;比率曲线(“零”、结算、ZeroDates ZeroRates)
myRC =带有属性的利率曲线:类型:“零”复合:-1基础:0日期:[10x1 datetime]利率:[10x1 double]结算:01- 01- 2019 InterpMethod:“线性”ShortExtrapMethod:“下一个”LongExtrapMethod:“上一个”

创建IRMonteCarlo定价的人对象

使用finpricer要创建IRMonteCarloprice对象和使用ratecurve对象的“DiscountCurve”名称-值对参数。

outPricer = finpricer(“IRMonteCarlo”模型= LinearGaussian2FModel DiscountCurve = myRC SimulationDates = ZeroDates)
outPricer = G2PPMonteCarlo with properties: NumTrials: 1000 RandomNumbers: [] DiscountCurve: [1x1 ratecurve] SimulationDates: [01- july -2019 01-Jan-2020 01-Jan-2021…型号:[1x1 finmodel。]LinearGaussian2F]

价格仪器

使用价格来计算的价格和敏感性乐器。

[Price,outPR] = Price (outprice,CapOpt,[“所有”])
价格= 1.2156
outPR = priceresult with properties:结果:[1x4表]PricerData: [1x1 struct]
outPR。结果
ans =1×4表价格三角洲伽马织女星  ______ ______ _____ ________________ 126.5 - -157.38 1.2156 - 131.37 11048

这个例子展示了为一个对象定价的工作流地板上仪器在使用BraceGatarekMusiela模型和IRMonteCarlo定价方法。

创建地板仪器对象

使用fininstrument要创建地板上仪对象。

FloorOpt = fininstrument(“地板”成熟= datetime(2022、9、15),罢工= 0.05,= 1,重置名称=“floor_option”
FloorOpt = Floor with properties: Strike: 0.0500成熟度:15-Sep-2022 ResetOffset: 0重置:1 Basis: 0 Principal: 100 ProjectionCurve: [0x0 ratecurve] DaycountAdjustedCashFlow: 0 BusinessDayConvention:“实际”节假日:NaT名称:"floor_option"

创建BraceGatarekMusiela模型对象

使用finmodel要创建BraceGatarekMusiela模型对象。

BGMVolFunc = @ (t) ((1) * (2) t +)。* exp (* t)——(3)+ (4);BGMVolParams = [.]3 -。02.7.14];numRates = 20;VolFunc(1:numRates-1) = {@(t) BGMVolFunc(BGMVolParams,t)};Beta = .08;CorrFunc = @(i,j,Beta) exp(-Beta*abs(i-j));相关性= CorrFunc(meshgrid(1:numRates-1)',meshgrid(1:numRates-1),Beta);BGM = finmodel“BraceGatarekMusiela”波动率= VolFunc =相关性,相关性期= 1);

创建ratecurve对象

创建一个ratecurve对象使用ratecurve

Settle = datetime(2019,1,1);类型=“零”;ZeroTimes = [calmonths(6) calyears([1 2 3 4 5 7 10 20])]';ZeroRates = [0.0052 0.0055 0.0061 0.0073 0.0094 0.0119 0.0168 0.0222 0.0293]';ZeroDates = Settle + ZeroTimes;比率曲线(“零”、结算、ZeroDates ZeroRates)
myRC =带有属性的利率曲线:类型:“零”复合:-1基础:0日期:[9x1 datetime]利率:[9x1 double]结算:01- 01- 2019 InterpMethod:“线性”ShortExtrapMethod:“下一个”LongExtrapMethod:“上一个”

创建IRMonteCarlo定价的人对象

使用finpricer要创建IRMonteCarloprice对象和使用ratecurve对象的“DiscountCurve”名称-值对参数。

outPricer = finpricer(“IRMonteCarlo”模型= BGM DiscountCurve = myRC SimulationDates = ZeroDates)
outPricer = BGMMonteCarlo with properties: NumTrials: 1000 RandomNumbers: [] DiscountCurve: [1x1 ratecurve] SimulationDates: [01- july -2019 01-Jan-2020 01-Jan-2021…型号:[1x1 finmodel。]BraceGatarekMusiela]

价格地板上仪器

使用价格来计算的价格和敏感性地板上乐器。

[Price,outPR] = Price (outprice,FloorOpt,[“所有”])
价格= 14.7975
outPR = priceresult with properties:结果:[1x3表]PricerData: [1x1 struct]
outPR。结果
ans =1×3表价格三角洲γ  ______ _______ ______ 14.797 -398.43 1399.5

这个例子展示了为一个对象定价的工作流FixedBond仪器在使用BlackKarasinski模型和IRMonteCarlo定价方法。

创建FixedBond仪对象

使用fininstrument要创建FixedBond仪对象。

固定b =仪表(“FixedBond”成熟= datetime(2022、9、15),CouponRate = 0.05, =“fixed_bond”
FixB = FixedBond与属性:CouponRate: 0.0500周期:2基础:0结束月规则:1本金:100 daycountadjuststedcashflow: 0 BusinessDayConvention:“实际”假期:NaT发行日期:NaT FirstCouponDate: NaT LastCouponDate: NaT StartDate: NaT到期日期:15 sep -2022名称:“fixed_bond”

创建BlackKarasinski模型对象

使用finmodel要创建BlackKarasinski模型对象。

BlackKarasinskiModel = finmodel(“BlackKarasinski”“α”, 0.02,“σ”, 0.34)
BlackKarasinskiModel = BlackKarasinski属性:阿尔法:0.0200西格玛:0.3400

创建ratecurve对象

创建一个ratecurve对象使用ratecurve

Settle = datetime(2019,1,1);类型=“零”;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]';ZeroDates = Settle + ZeroTimes;比率曲线(“零”、结算、ZeroDates ZeroRates)
myRC =带有属性的利率曲线:类型:“零”复合:-1基础:0日期:[10x1 datetime]利率:[10x1 double]结算:01- 01- 2019 InterpMethod:“线性”ShortExtrapMethod:“下一个”LongExtrapMethod:“上一个”

创建IRMonteCarlo定价的人对象

使用finpricer要创建IRMonteCarloprice对象和使用ratecurve对象的“DiscountCurve”名称-值对参数。

outPricer = finpricer(“IRMonteCarlo”模型= BlackKarasinskiModel DiscountCurve = myRC SimulationDates = datetime(2019、3、15)+ calmonths(0:6:48)”)
outPricer = BKMonteCarlo与属性:NumTrials: 1000 RandomNumbers: [] DiscountCurve: [1x1 ratecurve] SimulationDates: [15- march -2019 15-Sep-2019 15- march -2020…型号:[1x1 finmodel。]BlackKarasinski]

价格FixedBond仪器

使用价格来计算的价格FixedBond乐器。

[Price,outPR] = Price (outprice,FixB,[“所有”])
价格= 113.3046
outPR = priceresult with properties:结果:[1x4表]PricerData: [1x1 struct]
outPR。结果
ans =1×4表价格三角洲伽马织女星  _____ _______ ______ ____ 113.3 - -310.39 -26744 2.03

版本历史

R2021b中引入

全部展开