Инструмент ценового свопа из набора нулевых кривых и ценовых кросс-валютных свопов
[ цены своп инструмент. Можно использовать Price,SwapRate,AI,RecCF,RecCFDates,PayCF,PayCFDates]
= swapbyzero(RateSpec,LegRate,Settle,Maturity)swapbyzero для расчета цен на ванильные свопы, амортизацию свопов и форвардные свопы. Все входы либо скаляры, либо NINST-by- 1 векторы, если не задано иное. Любая дата может быть серийным номером даты или вектором символов даты. Необязательный аргумент может быть передан как пустая матрица [].
[ цена своп инструмента с дополнительными опциями, заданными одним или несколькими Price,SwapRate,AI,RecCF,RecCFDates,PayCF,PayCFDates]
= swapbyzero(RateSpec,LegRate,Settle,Maturity,Name,Value)Name,Value аргументы в виде пар. Можно использовать swapbyzero для расчета цен на ванильные свопы, амортизацию свопов, форвардные свопы и кросс-валютные свопы. Для получения дополнительной информации о парах "имя-значение" для свопов ванили, амортизации свопов и прямых свопов, смотрите Vanilla Swaps, Amortizing Swaps, Forward Swaps.
В частности, можно использовать пары "имя-значение" для FXRate, ExchangeInitialPrincipal, и ExchangeMaturityPrincipal для вычисления цены для валютных свопов. Для получения дополнительной информации о парах "имя-значение" для валютных свопов смотрите Переквалютные свопы.
Цена процентного свопа с фиксированной приемной ножкой и плавающей оплатой. Платежи производятся один раз в год, а условная основная сумма составляет $100. Значения для остальных аргументов:
Ставка купона для фиксированной стойки: 0.06 (6%)
Спред для плавающей ноги: 20 базисных точек
Дата урегулирования свопа: 01 января 2000 г.
Дата погашения свопа: 01 января 2003 г.
На основе приведенной выше информации установите необходимые аргументы и создайте LegRate, LegType, и LegReset матрицы:
Settle = '01-Jan-2000'; Maturity = '01-Jan-2003'; Basis = 0; Principal = 100; LegRate = [0.06 20]; % [CouponRate Spread] LegType = [1 0]; % [Fixed Float] LegReset = [1 1]; % Payments once per year
Загрузите файл deriv.mat, который обеспечивает ZeroRateSpec, структура процентной ставки, необходимая для ценообразования облигации.
load deriv.mat;Использование swapbyzero для вычисления цены свопа.
Price = swapbyzero(ZeroRateSpec, LegRate, Settle, Maturity,... LegReset, Basis, Principal, LegType)
Price = 3.6923
Используя предыдущие данные, вычислите ставку свопа, которая является ставкой купона для фиксированного участка, так что цена свопа в момент = 0 равна нулю.
LegRate = [NaN 20];
[Price, SwapRate] = swapbyzero(ZeroRateSpec, LegRate, Settle,...
Maturity, LegReset, Basis, Principal, LegType)Price = 0
SwapRate = 0.0466
В swapbyzero , если Settle не на дату сброса (и 'StartDate' не задан), датой вступления в силу считается предыдущая дата сброса перед Settle в порядок для вычисления начисленных процентов и грязной цены. В этом примере датой вступления в силу является ('15-Sep-2009' ), которая является предыдущей датой сброса перед ('08-Jun-2010' ) Settle дата.
Использование swapbyzero с аргументами пары "имя-значение" для LegRate, LegType, LatestFloatingRate, AdjustCashFlowsBasis, и BusinessDayConvention чтобы вычислить выход для Price, SwapRate, AI, RecCF, RecCFDates, PayCF, и PayCFDates:
Settle = datenum('08-Jun-2010'); RateSpec = intenvset('Rates', [.005 .0075 .01 .014 .02 .025 .03]',... 'StartDates',Settle, 'EndDates',{'08-Dec-2010','08-Jun-2011',... '08-Jun-2012','08-Jun-2013','08-Jun-2015','08-Jun-2017','08-Jun-2020'}'); Maturity = datenum('15-Sep-2020'); LegRate = [.025 50]; LegType = [1 0]; % fixed/floating LatestFloatingRate = .005; [Price, SwapRate, AI, RecCF, RecCFDates, PayCF,PayCFDates] = ... swapbyzero(RateSpec, LegRate, Settle, Maturity,'LegType',LegType,... 'LatestFloatingRate',LatestFloatingRate,'AdjustCashFlowsBasis',true,... 'BusinessDayConvention','modifiedfollow')
Price = -6.7259
SwapRate = NaN
AI = 1.4575
RecCF = 1×12
-1.8219 2.5000 2.5000 2.5137 2.4932 2.4932 2.5000 2.5000 2.5000 2.5137 2.4932 102.4932
RecCFDates = 1×12
734297 734396 734761 735129 735493 735857 736222 736588 736953 737320 737684 738049
PayCF = 1×12
-0.3644 0.5000 1.4048 1.9961 2.8379 3.2760 3.8218 4.1733 4.5164 4.4920 4.7950 104.6608
PayCFDates = 1×12
734297 734396 734761 735129 735493 735857 736222 736588 736953 737320 737684 738049
Цена трех свопов с помощью двух кривых процентной ставки. Во-первых, определите данные для структуры процентной ставки:
StartDates = '01-May-2012'; EndDates = {'01-May-2013'; '01-May-2014';'01-May-2015';'01-May-2016'}; Rates = [[0.0356;0.041185;0.04489;0.047741],[0.0366;0.04218;0.04589;0.04974]];
Создайте RateSpec использование intenvset.
RateSpec = intenvset('Rates', Rates, 'StartDates',StartDates,... 'EndDates', EndDates, 'Compounding', 1)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: [4x2 double]
Rates: [4x2 double]
EndTimes: [4x1 double]
StartTimes: [4x1 double]
EndDates: [4x1 double]
StartDates: 734990
ValuationDate: 734990
Basis: 0
EndMonthRule: 1
Посмотрите на Rates для двух кривых процентной ставки.
RateSpec.Rates
ans = 4×2
0.0356 0.0366
0.0412 0.0422
0.0449 0.0459
0.0477 0.0497
Определите инструменты подкачки.
Settle = '01-May-2012'; Maturity = '01-May-2015'; LegRate = [0.06 10]; Principal = [100;50;100]; % Three notional amounts
Цена трех свопов с помощью двух кривых.
Price = swapbyzero(RateSpec, LegRate, Settle, Maturity, 'Principal', Principal)Price = 3×2
3.9688 3.6869
1.9844 1.8434
3.9688 3.6869
RateSpec 1 на 2Оцените своп с помощью двух кривых процентной ставки. Во-первых, определите данные для двух структур процентных ставок:
StartDates = '01-May-2012'; EndDates = {'01-May-2013'; '01-May-2014';'01-May-2015';'01-May-2016'}; Rates1 = [0.0356;0.041185;0.04489;0.047741]; Rates2 = [0.0366;0.04218;0.04589;0.04974];
Создайте RateSpec использование intenvset.
RateSpecReceiving = intenvset('Rates', Rates1, 'StartDates',StartDates,... 'EndDates', EndDates, 'Compounding', 1); RateSpecPaying= intenvset('Rates', Rates2, 'StartDates',StartDates,... 'EndDates', EndDates, 'Compounding', 1); RateSpec=[RateSpecReceiving RateSpecPaying]
RateSpec=1×2 struct array with fields:
FinObj
Compounding
Disc
Rates
EndTimes
StartTimes
EndDates
StartDates
ValuationDate
Basis
EndMonthRule
Определите инструменты подкачки.
Settle = '01-May-2012'; Maturity = '01-May-2015'; LegRate = [0.06 10]; Principal = [100;50;100];
Цена трех свопов с помощью двух кривых.
Price = swapbyzero(RateSpec, LegRate, Settle, Maturity, 'Principal', Principal)Price = 3×1
3.9693
1.9846
3.9693
Чтобы вычислить скорость прямого свопа, установите StartDate Параметру к будущей дате и установите фиксированную ставку купона в LegRate вход в NaN.
Определите данные нулевой кривой и создайте нулевую кривую используя IRDataCurve.
ZeroRates = [2.09 2.47 2.71 3.12 3.43 3.85 4.57]'/100; Settle = datenum('1-Jan-2012'); EndDates = datemnth(Settle,12*[1 2 3 5 7 10 20]'); Compounding = 1; ZeroCurve = IRDataCurve('Zero',Settle,EndDates,ZeroRates,'Compounding',Compounding)
ZeroCurve = Type: Zero Settle: 734869 (01-Jan-2012) Compounding: 1 Basis: 0 (actual/actual) InterpMethod: linear Dates: [7x1 double] Data: [7x1 double]
Создайте RateSpec структуру, использующую toRateSpec способ.
RateSpec = ZeroCurve.toRateSpec(EndDates)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: [7x1 double]
Rates: [7x1 double]
EndTimes: [7x1 double]
StartTimes: [7x1 double]
EndDates: [7x1 double]
StartDates: 734869
ValuationDate: 734869
Basis: 0
EndMonthRule: 1
Вычислите ставку форвардного свопа (ставку купона для фиксированного участка), так чтобы цена форвардного свопа в момент = 0 равен нулю. Форвардный своп начинается через месяц (1-Feb-2012) и созревает через 10 лет (1 февраля-2022).
StartDate = datenum('1-Feb-2012'); Maturity = datenum('1-Feb-2022'); LegRate = [NaN 0]; [Price, SwapRate] = swapbyzero(RateSpec, LegRate, Settle, Maturity,... 'StartDate', StartDate)
Price = 0
SwapRate = 0.0378
BusinessDayConventionThe swapbyzero функция генерирует даты денежного потока на основе Settle и Maturity дат, при использовании Maturity дата как дата «якоря», с которой следует отсчитывать назад в регулярных интервалах. По умолчанию swapbyzero не отличает нерабочие дни от рабочих дней. Чтобы сделать swapbyzero перенести нерабочие дни в следующие рабочие дни, можно задать необязательный входной параметр имя-значение BusinessDayConvention со значением follow.
Определите данные нулевой кривой и создайте нулевую кривую используя IRDataCurve.
ZeroRates = [2.09 2.47 2.71 3.12 3.43 3.85 4.57]'/100; Settle = datenum('5-Jan-2012'); EndDates = datemnth(Settle,12*[1 2 3 5 7 10 20]'); Compounding = 1; ZeroCurve = IRDataCurve('Zero',Settle,EndDates,ZeroRates,'Compounding',Compounding); RateSpec = ZeroCurve.toRateSpec(EndDates); StartDate = datenum('5-Feb-2012'); Maturity = datenum('5-Feb-2022'); LegRate = [NaN 0];
Чтобы продемонстрировать необязательный вход BusinessDayConvention, swapbyzero сначала используется без, а затем с необязательным входным параметром имя-значение BusinessDayConvention. Заметьте, что при использовании BusinessDayConvention, все дни являются рабочими днями.
[Price1,SwapRate1,~,~,RecCFDates1,~,PayCFDates1] = swapbyzero(RateSpec,LegRate,Settle,Maturity,... 'StartDate',StartDate); datestr(RecCFDates1)
ans = 11x11 char array
'05-Jan-2012'
'05-Feb-2013'
'05-Feb-2014'
'05-Feb-2015'
'05-Feb-2016'
'05-Feb-2017'
'05-Feb-2018'
'05-Feb-2019'
'05-Feb-2020'
'05-Feb-2021'
'05-Feb-2022'
isbusday(RecCFDates1)
ans = 11x1 logical array
1
1
1
1
1
0
1
1
1
1
⋮
[Price2,SwapRate2,~,~,RecCFDates2,~,PayCFDates2] = swapbyzero(RateSpec,LegRate,Settle,Maturity,... 'StartDate',StartDate,'BusinessDayConvention','follow'); datestr(RecCFDates2)
ans = 12x11 char array
'05-Jan-2012'
'06-Feb-2012'
'05-Feb-2013'
'05-Feb-2014'
'05-Feb-2015'
'05-Feb-2016'
'06-Feb-2017'
'05-Feb-2018'
'05-Feb-2019'
'05-Feb-2020'
'05-Feb-2021'
'07-Feb-2022'
isbusday(RecCFDates2)
ans = 12x1 logical array
1
1
1
1
1
1
1
1
1
1
⋮
Оцените амортизационный своп с помощью Principal входной параметр для определения графика амортизации.
Создайте RateSpec.
Rates = 0.035; ValuationDate = '1-Jan-2011'; StartDates = ValuationDate; EndDates = '1-Jan-2017'; Compounding = 1; RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding);
Создайте инструмент свопа с помощью следующих данных:
Settle ='1-Jan-2011'; Maturity = '1-Jan-2017'; LegRate = [0.04 10];
Определите график амортизации свопов.
Principal ={{'1-Jan-2013' 100;'1-Jan-2014' 80;'1-Jan-2015' 60;'1-Jan-2016' 40; '1-Jan-2017' 20}};Вычислите цену амортизирующего свопа.
Price = swapbyzero(RateSpec, LegRate, Settle, Maturity, 'Principal' , Principal)Price = 1.4574
Оцените форвардный своп с помощью StartDate входной параметр для определения будущей начальной даты свопа.
Создайте RateSpec.
Rates = 0.0325; ValuationDate = '1-Jan-2012'; StartDates = ValuationDate; EndDates = '1-Jan-2018'; Compounding = 1; RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: 0.8254
Rates: 0.0325
EndTimes: 6
StartTimes: 0
EndDates: 737061
StartDates: 734869
ValuationDate: 734869
Basis: 0
EndMonthRule: 1
Рассчитать цену форвардного свопа, который начинается через год (1 января 2013 г.) и созревает через три года со ставкой форвардного свопа 4,27%.
Settle ='1-Jan-2012'; StartDate = '1-Jan-2013'; Maturity = '1-Jan-2016'; LegRate = [0.0427 10]; Price = swapbyzero(RateSpec, LegRate, Settle, Maturity, 'StartDate' , StartDate)
Price = 2.5083
Используя предыдущие данные, вычислите ставку форвардного свопа, ставку купона для фиксированного участка, так что цена форвардного свопа в момент = 0 равна нулю.
LegRate = [NaN 10]; [Price, SwapRate] = swapbyzero(RateSpec, LegRate, Settle, Maturity,... 'StartDate' , StartDate)
Price = 0
SwapRate = 0.0335
RateSpecЕсли Settle не находится на дате сброса примечания с плавающей скоростью, swapbyzero пытается получить последнюю плавающую скорость перед Settle от RateSpec или LatestFloatingRate параметр. Когда дата сброса для этой скорости выходит за область значений RateSpec (и LatestFloatingRate не задан), swapbyzero Не удается получить частоту для этой даты и генерирует ошибку. В этом примере показано, как использовать LatestFloatingRate входной параметр, чтобы избежать ошибки.
Создайте условие ошибки, когда инструмент подкачки StartDate не может быть определено из RateSpec.
Settle = '01-Jan-2000'; Maturity = '01-Dec-2003'; Basis = 0; Principal = 100; LegRate = [0.06 20]; % [CouponRate Spread] LegType = [1 0]; % [Fixed Float] LegReset = [1 1]; % Payments once per year load deriv.mat; Price = swapbyzero(ZeroRateSpec,LegRate,Settle,Maturity,... 'LegReset',LegReset,'Basis',Basis,'Principal',Principal, ... 'LegType',LegType)
Error using floatbyzero (line 256) The rate at the instrument starting date cannot be obtained from RateSpec. Its reset date (01-Dec-1999) is out of the range of dates contained in RateSpec. This rate is required to calculate cash flows at the instrument starting date. Consider specifying this rate with the 'LatestFloatingRate' input parameter. Error in swapbyzero (line 289) [FloatFullPrice, FloatPrice,FloatCF,FloatCFDates] = floatbyzero(FloatRateSpec, Spreads, Settle,...
Здесь, дата сброса для скорости по Settle был 01-Dec-1999, что было раньше даты оценки ZeroRateSpec (01-Jan-2000). Этой ошибки можно избежать, указав скорость на дату начала инструмента свопа с помощью LatestFloatingRate входной параметр.
Определите LatestFloatingRate и рассчитать цену с плавающей ставкой.
Price = swapbyzero(ZeroRateSpec,LegRate,Settle,Maturity,... 'LegReset',LegReset,'Basis',Basis,'Principal',Principal, ... 'LegType',LegType,'LatestFloatingRate',0.03)
Price =
4.7594Определите ставки OIS и Libor.
Settle = datenum('15-Mar-2013');
CurveDates = daysadd(Settle,360*[1/12 2/12 3/12 6/12 1 2 3 4 5 7 10],1);
OISRates = [.0018 .0019 .0021 .0023 .0031 .006 .011 .017 .021 .026 .03]';
LiborRates = [.0045 .0047 .005 .0055 .0075 .011 .016 .022 .026 .030 .0348]';Постройте график двух кривых.
figure,plot(CurveDates,OISRates,'r');hold on;plot(CurveDates,LiborRates,'b') datetick legend({'OIS Curve', 'Libor Curve'})

Создайте связанную RateSpec для кривых OIS и Libor.
OISCurve = intenvset('Rates',OISRates,'StartDate',Settle,'EndDates',CurveDates); LiborCurve = intenvset('Rates',LiborRates,'StartDate',Settle,'EndDates',CurveDates);
Определите своп.
Maturity = datenum('15-Mar-2018'); % Five year swap FloatSpread = 0; FixedRate = .025; LegRate = [FixedRate FloatSpread];
Вычислите цену инструмента свопа. The LiborCurve term structure будет использоваться для генерации денежных потоков плавающей законы. the OISCurve для дисконтирования денежных потоков будет использоваться структура терминов.
Price = swapbyzero(OISCurve, LegRate, Settle,... Maturity,'ProjectionCurve',LiborCurve)
Price = -0.3697
Сравните результаты, когда структура термина OISCurve используется как для дисконтирования, так и для генерации денежных потоков плавающей ветви.
PriceSwap = swapbyzero(OISCurve, LegRate, Settle, Maturity)
PriceSwap = 2.0517
Цена существующего кросс-валютного свопа, который получает фиксированный курс JPY и платит фиксированный курс в долларах США с ежегодной частотой.
Settle = datenum('15-Aug-2015'); Maturity = datenum('15-Aug-2018'); Reset = 1; LegType = [1 1]; % Fixed-Fixed r_USD = .09; r_JPY = .04; FixedRate_USD = .08; FixedRate_JPY = .05; Principal_USD = 10000000; Principal_JPY = 1200000000; S = 1/110; RateSpec_USD = intenvset('StartDate',Settle,'EndDate', Maturity,'Rates',r_USD,'Compounding',-1); RateSpec_JPY = intenvset('StartDate',Settle,'EndDate', Maturity,'Rates', r_JPY,'Compounding',-1); Price = swapbyzero([RateSpec_JPY RateSpec_USD], [FixedRate_JPY FixedRate_USD],... Settle, Maturity,'Principal',[Principal_JPY Principal_USD],'FXRate',[S 1], 'LegType',LegType)
Price = 1.5430e+06
Оцените новый своп, где вы платите EUR float и получаете USD float.
Settle = datenum('22-Dec-2015'); Maturity = datenum('15-Aug-2018'); LegRate = [0 -50/10000]; LegType = [0 0]; % Float Float LegReset = [4 4]; FXRate = 1.1; Notional = [10000000 8000000]; USD_Dates = datemnth(Settle,[1 3 6 12*[1 2 3 5 7 10 20 30]]'); USD_Zero = [0.03 0.06 0.08 0.13 0.36 0.76 1.63 2.29 2.88 3.64 3.89]'/100; Curve_USD = intenvset('StartDate',Settle,'EndDates',USD_Dates,'Rates',USD_Zero); EUR_Dates = datemnth(Settle,[3 6 12*[1 2 3 5 7 10 20 30]]'); EUR_Zero = [0.017 0.033 0.088 .27 .512 1.056 1.573 2.183 2.898 2.797]'/100; Curve_EUR = intenvset('StartDate',Settle,'EndDates',EUR_Dates,'Rates',EUR_Zero); Price = swapbyzero([Curve_USD Curve_EUR], ... LegRate, Settle, Maturity,'LegType',LegType,'LegReset',LegReset,'Principal',Notional,... 'FXRate',[1 FXRate],'ExchangeInitialPrincipal',false)
Price = 1.2002e+06
RateSpec - Структура процентной ставкиСтруктура процентной ставки, заданная с помощью intenvset для создания RateSpec.
RateSpec может также быть 1-by- 2 входная переменная RateSpecs, со вторым RateSpec структура, содержащая одну или несколько кривых скидки для плательщика. Если только один RateSpec задается структура, затем эта RateSpec используется для скидки на обе ноги.
Типы данных: struct
LegRate - Скорость ногСкорость ног, заданная как NINST-by- 2 матрица с каждой строкой, заданной как одна из следующих:
[CouponRate Spread] (с фиксированной запятой)
[Spread CouponRate] (с фиксированной запятой)
[CouponRate CouponRate] (фиксировано-фиксированное)
[Spread Spread] (с плавающей запятой)
CouponRate - десятичный годовой темп. Spread количество базисных точек по скорости ссылки. Первый столбец представляет приемную ветвь, а второй столбец представляет платежную ветвь.
Типы данных: double
Settle - Дата расчетаДата расчета, заданная в виде скаляра или NINST-by- 1 вектор серийных номеров дат или векторов символов дат того же значения, которые представляют дату расчета для каждого свопа. Settle должно быть раньше Maturity.
Типы данных: char | cell | double
Maturity - Дата погашенияДата зрелости, заданная как NINST-by- 1 вектор серийных номеров дат или векторов символов дат, представляющих дату погашения для каждого свопа.
Типы данных: char | cell | double
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
[Цена, SwapRate, AI, RecCF, RecCFDates, PayCF, PayCFDates] = swapbyzero (RateSpec, LegRate, Settle,
Срок исполнения, 'LegType', LegType, 'LatestFloatingRate', LatestFloatingRate, 'AdjustCashFlowsBasis', true,
'BusinessDayConvention', 'modifiedfollow')'LegReset' - Частота сброса в год для каждого свопа[1 1]
(по умолчанию) | векторЧастота сброса в год для каждого свопа, заданная как разделенная разделенными запятой парами, состоящая из 'LegReset' и a NINST-by- 2 вектор.
Типы данных: double
'Basis' - Основа прибора для подсчета дней0 (фактический/фактический) (по умолчанию) | целое число от 0 на 13Базис отсчета дней, представляющий базис для каждой ветви, заданный как разделенная разделенными запятой парами, состоящая из 'Basis' и a NINST-by- 1 массив (или NINST-by- 2 если Basis отличается для каждой ноги).
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 = BUS/252
Для получения дополнительной информации см. раздел Базиса.
Типы данных: double
'Principal' - Условные суммы основной суммы или графики основного значения100
(по умолчанию) | вектор или массив ячеекУсловные суммы основной суммы или расписания основного значения, заданные как разделенная разделенными запятой парами, состоящая из 'Principal' и вектор или массив ячеек.
Principal принимает NINST-by- 1 вектор или NINST-by- 1 массив ячеек (или NINST-by- 2 если Principal отличается для каждой ветви) от условных сумм основной суммы или графиков основного значения. Для расписаний каждый элемент массива ячеек является NumDates-by- 2 массив, где первый столбец является датами, а второй - его сопоставленным условным основным значением. Дата указывает на последний день действия основного значения.
Типы данных: cell | double
'LegType' - Тип ножки[1 0] для каждого инструмента (по умолчанию) | матрица со значениями [1 1] (фиксированно-фиксированное), [1 0] (с фиксированной запятой), [0 1] (с фиксированной запятой), или [0 0] (с плавающей запятой)Тип ножки, заданный как разделенная разделенными запятой парами, состоящая из 'LegType' и a NINST-by- 2 матрица со значениями [1 1] (фиксированно-фиксированное), [1 0] (с фиксированной запятой), [0 1] (с фиксированной запятой), или [0 0] (с плавающей запятой). Каждая строка представляет инструмент. Каждый столбец указывает, является ли соответствующая стойка фиксированной (1) или плавающий (0). Эта матрица определяет интерпретацию значений, введенных в LegRate. LegType позволяет [1 1] (фиксированно-фиксированное), [1 0] (с фиксированной запятой), [0 1] (с фиксированной запятой), или [0 0] (с плавающей запятой) свопы
Типы данных: double
'EndMonthRule' - Флаг правила конца месяца для генерации дат при Maturity является датой конца месяца для месяца, имеющего 30 или менее дней1 (в действии) (по умолчанию) | неотрицательное целое число [0,1]Флаг правила конца месяца для генерации дат при Maturity - дата конца месяца для месяца, имеющего 30 или менее дней, заданная как разделенная разделенными запятой парами, состоящая из 'EndMonthRule' и неотрицательное целое число [0, 1] использование NINST-by- 1 (или NINST-by- 2 если EndMonthRule отличается для каждой ноги).
0 = Игнорировать правило, означающее, что дата платежа всегда является одним и тем же числовым днем месяца.
1 = Установите правило, означающее, что дата платежа всегда является последним фактическим днем месяца.
Типы данных: logical
'AdjustCashFlowsBasis' - Флаг для корректировки денежных потоков на основе фактического количества дней периодаfalse
(по умолчанию) | значение 0 (false) или 1 ПравдаФлаг для корректировки денежных потоков на основе фактического количества дней периода, заданный как разделенная разделенными запятой парами, состоящая из 'AdjustCashFlowsBasis' и a NINST-by- 1 (или NINST-by- 2 если AdjustCashFlowsBasis отличается для каждой ветви) логики со значениями 0 (false) или 1 Правда.
Типы данных: logical
'BusinessDayConvention' - Договоры о рабочих дняхactual
(по умолчанию) | вектор символов | массив ячеек из векторов символовСоглашения о рабочих днях, заданные как разделенная разделенными запятой парами, состоящая из 'BusinessDayConvention' и вектор символов или N-by- 1 (или NINST-by- 2 если BusinessDayConvention отличается для каждой ветви) массив ячеек из векторов символов соглашений о рабочих днях. Выбор для соглашения о рабочих днях определяет режим обработки нерабочих дней. Нерабочие дни определяются как выходные дни плюс любая другая дата, когда предприятия не открыты (например, установленные законом праздничные дни). Значения:
actual - Нерабочие дни фактически игнорируются. Денежные потоки, которые приходятся на нерабочие дни, считаются распределенными на фактическую дату.
follow - Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными на следующий рабочий день.
modifiedfollow - Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными на следующий рабочий день. Однако если следующий рабочий день находится в другом месяце, то вместо этого принимается предыдущий рабочий день.
previous - Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными в предыдущий рабочий день.
modifiedprevious - Денежные потоки, которые приходятся на нерабочий день, принимаются распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в другом месяце, вместо этого принимается следующий рабочий день.
Типы данных: char | cell
'Holidays' - Праздничные дни, используемые в рабочих дняхholidays.m
(по умолчанию) | MATLAB® номера датПраздничные дни, используемые в вычислении рабочих дней, заданные как разделенная разделенными запятой парами, состоящая из 'Holidays' и номера дат MATLAB с использованием NHolidays-by- 1 вектор.
Типы данных: double
'StartDate' - Даты, когда свопы фактически начинаютсяSettle
(по умолчанию) | последовательный номер даты | символьный вектор | массив ячеек из векторов символовДаты, когда свопы фактически начинаются, заданные как разделенная разделенными запятой парами, состоящая из 'StartDate' и a NINST-by- 1 вектор порядковых номеров дат, векторов символов или массива ячеек векторов символов.
Типы данных: char | cell | double
'LatestFloatingRate' - Ставка для следующего плавающего платежаRateSpec должна содержать эту информацию (по умолчанию) | скалярную цифруСтавка для следующего плавающего платежа, установленная на последнюю дату сброса, заданная как разделенная разделенными запятой парами, состоящая из 'LatestFloatingRate' и скалярное числовое значение.
LatestFloatingRate принимает ставку для следующего плавающего платежа, установленную на последнюю дату сброса. LatestFloatingRate является NINST-by- 1 (или NINST-by- 2 если LatestFloatingRate отличается для каждой ноги).
Типы данных: double
'ProjectionCurve' - Кривая ставки, используемая при генерации денежных потоков для плавающей ветви свопаProjectionCurve не задан, тогда RateSpec используется как для дисконтирования, так и для генерации денежных потоков для плавающей ветви (по умолчанию) | RateSpec или векторКривая ставки, используемая при генерации денежных потоков для плавающей ветви свопа, заданная как разделенная разделенными запятой парами, состоящая из 'ProjectionCurve' и a RateSpec.
Если задается своп с плавающей запятой или с фиксированной запятой, ProjectionCurve кривая ставки используется при генерации денежных потоков для плавающей ветви свопа. Эта структура должна быть создана с помощью intenvset.
Если задается фиксированно-фиксированный или с плавающей запятой, то ProjectionCurve является NINST-by- 2 вектор, поскольку каждая плавающая ветвь может иметь разную проекционную кривую.
Типы данных: struct
'FXRate' - Валютный курс (FX), применяемый к денежным потокамswapbyzero находятся в одной валюте (по умолчанию) | массивеКурс иностранной валюты (FX), применяемый к денежным потокам, задается как разделенная разделенными запятой парами, состоящая из 'FXRate' и a NINST-by- 2 массив типа double. Поскольку курс иностранной валюты может быть применен к плательщику или приемнику ветви, в массиве входа есть 2 столбца, и необходимо указать, какая ветвь имеет иностранную валюту.
Типы данных: double
'ExchangeInitialPrincipal' - Флаг для указания, является ли начальный Principal обменивается0 (false) (по умолчанию) | массивФлаг для указания, является ли начальный Principal обменивается, задается как разделенная разделенными запятой парами, состоящая из 'ExchangeInitialPrincipal' и a NINST-by- 1 массив логик.
Типы данных: logical
'ExchangeMaturityPrincipal' - Флаг, указывающий, Principal ли обменивается на Maturity1 (true) (по умолчанию) | массивФлаг, указывающий, Principal обменивается на Maturity, заданная как разделенная разделенными запятой парами, состоящая из 'ExchangeMaturityPrincipal' и a NINST-by- 1 массив логик. Хотя на практике большинство свопов в одной валюте не обмениваются принципалом на срок погашения, по умолчанию поддержание обратной совместимости верно.
Типы данных: logical
Price - Цены своповЦены свопов, возвращенные как количество инструментов (NINST) по количеству кривых (NUMCURVES) матрица. Каждый столбец возникает из-за одной из нулевых кривых. Price выход - грязная цена. Для вычисления чистой цены вычитайте начисленные проценты (AI) от грязной цены.
SwapRate - Ставки, применимые к фиксированной стойкеТарифы, применимые к фиксированной стойке, возвращенные как NINST-by- NUMCURVES матрица ставок, применимых к фиксированной ветви, так что значения свопов "равны нулю в момент 0. Эта ставка используется при вычислении цен свопов, когда ставка задана для фиксированного участка в LegRate является NaN. The SwapRate выход заполнен NaN для тех инструментов, в которых CouponRate не установлено в NaN.
AI - Начисленные процентыНачисленные проценты, возвращенные как NINST-by- NUMCURVES матрица.
RecCF - Денежные потоки для приемной ветвиДенежные потоки для получателя, возвращенные как NINST-by- NUMCURVES матрица.
Примечание
Если в RateSpec задано несколько кривых вход, затем первый NCURVES строка соответствует первому свопу, второй NCURVES строка соответствует второму свопу и так далее.
RecCFDates - Даты оплаты для приемной ветвиДаты оплаты для получателя, возвращенные как NINST-by- NUMCURVES матрица.
PayCF - Денежные потоки для оплаты ногДенежные потоки для платежной стойки, возвращенные как NINST-by- NUMCURVES матрица.
PayCFDates - Даты оплаты для платежной ветвиДаты оплаты за платежную ветвь, возвращенные как NINST-by- NUMCURVES матрица.
При амортизации свопа условный принципал периодически уменьшается, потому что он привязан к базовому финансовому инструменту со снижающимся (амортизирующим) основным балансом, таким как ипотека.
Соглашение о заключении соглашения об обмене процентными ставками на фиксированную дату в будущем.
Свопы, где условия оплаты свопа номинированы в разных валютах.
Одно из различий между валютными свопами и стандартными свопами заключается в том, что обмен основной суммы может происходить в начале и/или конце свопа. Обмен начальной основной суммы будет играть роль только в ценообразовании валютного свопа на начальном этапе (другими словами, ценообразование существующего валютного свопа произойдет после этого денежного потока). Кроме того, эти биржи основной суммы обычно не влияют на стоимость свопа (поскольку основные значения двух ветвей выбираются на основе валютного курса), а влияют на денежные потоки для каждой ветви.
[1] Hull, J. Options, Futures and Other Derivatives Fourth Edition. Prentice Hall, 2000.
bondbyzero | cfbyzero | fixedbyzero | floatbyzero | intenvset
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.