Инструмент ценового свопа из набора нулевых кривых и ценовых кросс-валютных свопов
[
цены своп инструмент. Можно использовать 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
BusinessDayConvention
The 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
входная переменная RateSpec
s, со вторым 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
ли
обменивается на Maturity
1
(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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.