主要内容

创建和分析的工作流ratecurveparametercurve

使用ratecurveirbootstrap创建一个ratecurve对象。

创建一个比率曲线解决= datetime(2019、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 (“零”、结算、ZeroDates ZeroRates)
myRC = ratecurve with properties: Type: "zero"复利:-1基础:0日期:[10×1 datetime] rate: [10×1 double] Settle: 15-Sep-2019 InterpMethod: "linear" ShortExtrapMethod: "next" LongExtrapMethod: "previous"

使用zeroratesforwardrates,或discountfactorsratecurve对象。

CurveSettle = datetime(2019、9、15);% zeroratesoutZeroRates = zerorates (myRC CurveSettle + 30:30: CurveSettle + 720)% forwardratesoutForwardRates = forwardrates (myRC datetime(2019、12、15),datetime(2021、9、15),6、7)% discountfactorsoutDiscountFactors = discountfactors (myRC CurveSettle + 30:30: CurveSettle + 720)
outZeroRates = 1到14列0.0052 0.0052 0.0052 0.0052 0.0052 0.0052 0.0052 0.0053 0.0053 0.0054 0.0054 0.0055 0.0055 0.0056列15通过24 0.0056 0.0057 0.0057 0.0058 0.0058 0.0059 0.0059 0.0060 0.0060 0.0061 outForwardRates = 0.0062 outDiscountFactors =列1到14 0.9996 0.9991 0.9987 - 0.9983 0.9979 - 0.9974 0.9970 - 0.9965第15至24列

使用parametercurvefitNelsonSiegel,或fitSvensson创建一个parametercurve对象。

% parametercurvemyPC = parametercurve (“零”datetime(2019、9、15),@ (t) polyval (-0.0001 0.003 0.02, t),“参数”(-0.0001 0.003 0.02))
myPC = parametercurve with properties: Type: "zero" Settle: 15- 9 -2019 complex: -1 Basis: 0 FunctionHandle: @(t)polyval([-0.0001,0.003,0.02],t)
% fitNelsonSiegel解决= datetime(2017、9、15);成熟= [datetime(2019、9、15);datetime(2021、9、15);...datetime(2023、9、15);datetime(2026、9、7);...datetime(2035、9、15);datetime(2047、9、15)];CleanPrice = [100.1; 100.1; 100.8; 96.6; 103.3; 96.3);CouponRate = [0.0400; 0.0425; 0.0450; 0.0400; 0.0500; 0.0425);nInst =元素个数(CouponRate);债券(nInst 1) = fininstrument.FinInstrument;ii=1: nist Bonds(ii) = fininstrument(“FixedBond”“成熟”成熟度(ii),...“CouponRate”CouponRate (ii));结束NSModel = fitNelsonSiegel(结算、债券、CleanPrice)
FunctionHandle: @(t)fitF(Params,t) Parameters: [1.2473 -05 0.0362 0.0903 16.4263]
% fitSvensson解决= datetime(2017、9、15);成熟= [datetime(2019、9、15);datetime(2021、9、15);...datetime(2023、9、15);datetime(2026、9、7);...datetime(2035、9、15);datetime(2047、9、15)];CleanPrice = [100.1; 100.1; 100.8; 96.6; 103.3; 96.3);CouponRate = [0.0400; 0.0425; 0.0450; 0.0400; 0.0500; 0.0425);nInst =元素个数(CouponRate);债券(nInst 1) = fininstrument.FinInstrument;ii=1: nist Bonds(ii) = fininstrument(“FixedBond”“成熟”成熟度(ii),...“CouponRate”CouponRate (ii));结束SvenModel = fitSvensson(结算、债券、CleanPrice)
SvenModel =带有属性的参数曲线:类型:“零”Settle: 15- 9 -2017 compound: -1 Basis: 0 FunctionHandle: @(t)fitF(Params,t) Parameters: [2.2821 -41.8873 41.4090 -5.9589 0.3255 3.2356]

使用zeroratesdiscountfactorsforwardratesmyPCparametercurve对象。

% zeroratesCurveSettle = datetime (“15 - 9 - 2019”);outZeroRates = zerorates (myPC CurveSettle + 30:30: CurveSettle + 720)% discountfactorsCurveSettle = datetime (“15 - 9 - 2019”);outDiscountFactors = discountfactors (myPC CurveSettle + 30:30: CurveSettle + 720)% forwardratesoutForwardRates = forwardrates (myPC datetime(2019、9、15),datetime(2020、9、15),6、7)
outZeroRates = 1到14列0.0202 0.0205 0.0207 0.0210 0.0212 0.0215 0.0217 0.0219 0.0222 0.0224 0.0226 0.0229 0.0231 0.0233列15通过24 0.0235 0.0238 0.0240 0.0242 0.0244 0.0246 0.0249 0.0251 0.0253 0.0255 outDiscountFactors = 1到14列0.9983 0.9966 0.9949 0.9931 0.9913 0.9895 0.9876 0.9857 0.9838 0.9818 0.97980.9778 0.9757 0.9736列15至24

转换RateSpec到一个ratecurve对象

您可以创建RateSpec使用intenvsettoRateSpec从一个IRDataCurve对象。然后,您可以隐藏之前创建的RateSpec到一个ratecurve对象。

%假设有一个RateSpec解决= datetime (01 - 10月- 2019的);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;基础= 1;RateSpec = intenvset (startdate可以的解决,“EndDates”ZeroDates,...“利率”ZeroRates,“基础”基础)
RateSpec = struct with fields: FinObj: 'RateSpec'复合:2 Disc: [10×1 double] Rates: [10×1 double] EndTimes: [10×1 double] StartTimes: [10×1 double] EndDates: [10×1 double] StartDates: 737699 ValuationDate: 737699 Basis: 1 EndMonthRule: 1
%将速率espec转换为速率曲线myRC = ratecurve (“零”, RateSpec.EndDates RateSpec.ValuationDate RateSpec.Rates,...“复合”, RateSpec。复合,“基础”RateSpec.Basis)
myRC = ratecurve with properties: Type: "zero"复利:2 Basis: 1 date: [10×1 datetime] Rates: [10×1 double] Settle: 01-Oct-2019 InterpMethod: "linear" ShortExtrapMethod: "next" LongExtrapMethod: "previous"
检查折扣因素OldDF = intenvget (intenvset (RateSpec“EndDates”datetime (01 - 10月- 2024的)),“盘”) NewDF =折现因子(myRC,datetime(01 - 10月- 2024的))
NewDF = 0.9424

在这种情况下RateSpecratecurve都是相同的。这可能并不总是如此,因为yearfrac用于计算时间在ratecurvedate2time是用于计算aRateSpec.有关更多信息,请参见yearfrac与date2time之间的差异

另请参阅

||

相关的话题