swapbyzero

Ценовой инструмент подкачки от набора кривых нулевой ширины и ценовых валютных свопов

Описание

пример

[Price,SwapRate,AI,RecCF,RecCFDates,PayCF,PayCFDates] = swapbyzero(RateSpec,LegRate,Settle,Maturity) оценивает инструмент подкачки. Можно использовать swapbyzero вычислить цены подкачек ванили, амортизируя подкачки и прямые подкачки. Все входные параметры являются или скалярами или NINST- 1 векторы, если в противном случае не задано. Любая дата может быть последовательным номером даты или вектором символов даты. Дополнительный аргумент может быть передан как пустой матричный [].

пример

[Price,SwapRate,AI,RecCF,RecCFDates,PayCF,PayCFDates] = swapbyzero(RateSpec,LegRate,Settle,Maturity,Name,Value) оценивает инструмент подкачки с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы. Можно использовать swapbyzero вычислить цены подкачек ванили, амортизируя подкачки, прямые подкачки и валютные свопы. Для получения дополнительной информации о парах "имя-значение" для подкачек ванили, амортизируя подкачки и прямые подкачки, смотрите Подкачки Ванили, Амортизируя Подкачки, Прямые Подкачки.

А именно, можно использовать пары "имя-значение" для 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

Оцените подкачку с помощью двух кривых процентной ставки. Во-первых, задайте данные для двух структур термина процентной ставки:

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 февраля 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

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

Если Settle не находится в дату сброса долгового обязательства с плавающей ставкой, swapbyzero попытки получить последний плавающий курс перед Settle от RateSpec или LatestFloatingRate параметр. Когда дата сброса этого уровня вне области значений RateSpecLatestFloatingRate не задан), 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

Задайте уровни LIBOR и OIS.

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'})

Figure contains an axes. The axes contains 2 objects of type line. These objects represent 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];

Вычислите цену инструмента подкачки. LiborCurve структура термина будет использоваться, чтобы сгенерировать потоки наличности плавающего участка. 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

Оцените новую подкачку, где вы платите, евро пускают в ход и получают долларовое плавание.

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

Входные параметры

свернуть все

Структура процентной ставки, заданное использование intenvset создать RateSpec.

RateSpec может также быть 1- 2 входная переменная RateSpecs, со вторым RateSpec структура, содержащая одну или несколько дисконтных кривых для участка оплаты. Если только один RateSpec структура задана, затем этот RateSpec используется, чтобы обесценить оба участка.

Типы данных: struct

Уровень участка в виде NINST- 2 матрица, с каждой строкой, заданной как одно из следующего:

  • [CouponRate Spread] (фиксированное плавание)

  • [Spread CouponRate] (зафиксированный плаванием)

  • [CouponRate CouponRate] (фиксировано зафиксированный)

  • [Spread Spread] (плавание плавающее)

CouponRate десятичный годовой показатель. Spread количество пунктов по ссылочному уровню. Первый столбец представляет участок получения, в то время как второй столбец представляет участок оплаты.

Типы данных: double

Расчетный день, заданный или как скаляр или как NINST- 1 вектор из последовательных чисел даты или векторы символов даты того же значения, которые представляют расчетный день для каждой подкачки. Settle должен быть ранее, чем Maturity.

Типы данных: char | cell | double

Дата погашения в виде NINST- 1 вектор из последовательных чисел даты или векторов символов даты, представляющих дату погашения для каждой подкачки.

Типы данных: char | cell | double

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [Цена, SwapRate, AI, RecCF, RecCFDates, PayCF, PayCFDates] = swapbyzero (RateSpec, LegRate, Обосновываются,
Зрелость, 'LegType', LegType, 'LatestFloatingRate', LatestFloatingRate, 'AdjustCashFlowsBasis', верный,
'BusinessDayConvention', 'modifiedfollow')
Подкачки ванили, амортизируя подкачки, передают подкачки

свернуть все

Сбросьте частоту в год для каждой подкачки в виде разделенной запятой пары, состоящей из 'LegReset' и NINST- 2 вектор.

Типы данных: double

Базис дневного количества, представляющий базис для каждого участка в виде разделенной запятой пары, состоящей из 'Basis' и NINST- 1 массив (или NINST- 2 если Basis отличается для каждого участка).

  •  0 = фактический/фактический

  •  1 = 30/360 (СИА)

  •  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 = ШИНА/252

Для получения дополнительной информации смотрите Базис.

Типы данных: double

Отвлеченные основные суммы или основное значение планируют в виде разделенной запятой пары, состоящей из 'Principal' и векторный массив или массив ячеек.

Principal принимает NINST- 1 вектор или NINST- 1 массив ячеек (или NINST- 2 если Principal отличается для каждого участка) отвлеченных основных сумм или основных расписаний значения. Для расписаний каждым элементом массива ячеек является NumDates- 2 массив, где первый столбец является датами и вторым столбцом, является своим связанным отвлеченным основным значением. Дата указывает в последний день, что основное значение допустимо.

Типы данных: cell | double

Тип участка в виде разделенной запятой пары, состоящей из 'LegType' и NINST- 2 матрица со значениями [1 1] (фиксировано зафиксированный), [1 0] (фиксированное плавание), [0 1] (зафиксированный плаванием), или [0 0] (плавание плавающее). Каждая строка представляет инструмент. Каждый столбец указывает, фиксируется ли соответствующий участок (1) или плавание (0). Эта матрица задает интерпретацию значений, вводимых в LegRate. LegType позволяет [1 1] (фиксировано зафиксированный), [1 0] (фиксированное плавание), [0 1] (зафиксированный плаванием), или [0 0] подкачки (плавающие плавающие)

Типы данных: double

Правило конца месяца отмечает для генерации дат когда Maturity дата конца месяца в течение месяца, имея 30 или меньше дней в виде разделенной запятой пары, состоящей из 'EndMonthRule' и неотрицательное целое число [0, 1] использование NINST- 1 (или NINST- 2 если EndMonthRule отличается для каждого участка).

  • 0 = Проигнорируйте правило, подразумевая, что платежный день всегда является тем же числовым днем месяца.

  • 1 = Установите правило о, подразумевая, что платежный день всегда является прошлым фактическим днем месяца.

Типы данных: логический

Отметьте, чтобы настроить потоки наличности на основе фактического дневного количества периода в виде разделенной запятой пары, состоящей из 'AdjustCashFlowsBasis' и NINST- 1 (или NINST- 2 если AdjustCashFlowsBasis отличается для каждого участка) logicals со значениями 0 (FALSE) или 1 TRUE.

Типы данных: логический

Соглашения рабочего дня в виде разделенной запятой пары, состоящей из 'BusinessDayConvention' и вектор символов или N- 1 (или NINST- 2 если BusinessDayConvention отличается для каждого участка), массив ячеек из символьных векторов соглашений рабочего дня. Выбор для соглашения рабочего дня определяет, как обработаны нерабочие дни. Нерабочие дни заданы как выходные плюс любая другая дата, что компании не открыты (e.g. установленные законом праздники). Значения:

  • actual — Нерабочие дни эффективно проигнорированы. Потоки наличности, которые падают в нерабочие дни, приняты, чтобы быть распределенными в фактическую дату.

  • follow — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в следующий рабочий день.

  • modifiedfollow — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в следующий рабочий день. Однако, если следующий рабочий день находится в различном месяце, предыдущий рабочий день принят вместо этого.

  • previous — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в предыдущий рабочий день.

  • modifiedprevious — Потоки наличности, которые падают в нерабочий день, приняты, чтобы быть распределенными в предыдущий рабочий день. Однако, если предыдущий рабочий день находится в различном месяце, следующий рабочий день принят вместо этого.

Типы данных: char | cell

Праздники, используемые в вычислении рабочих дней в виде разделенной запятой пары, состоящей из 'Holidays' и числа даты MATLAB с помощью NHolidays- 1 вектор.

Типы данных: double

Даты, когда подкачки на самом деле запускаются в виде разделенной запятой пары, состоящей из 'StartDate' и NINST- 1 вектор из последовательных чисел даты, векторов символов или массива ячеек из символьных векторов.

Типы данных: char | cell | double

Уровень для следующей плавающей оплаты, установленной в последнюю дату сброса в виде разделенной запятой пары, состоящей из 'LatestFloatingRate' и скалярное числовое значение.

LatestFloatingRate принимает Уровень для следующей плавающей оплаты, установленной в последнюю дату сброса. LatestFloatingRate NINST- 1 (или NINST- 2 если LatestFloatingRate отличается для каждого участка).

Типы данных: double

Кривая уровня, используемая в генерации потоков наличности для плавающего участка подкачки в виде разделенной запятой пары, состоящей из 'ProjectionCurve' и RateSpec.

При определении фиксированного плавания или зафиксированной плаванием подкачки, ProjectionCurve кривая уровня используется в генерации потоков наличности для плавающего участка подкачки. Эта структура должна быть создана с помощью intenvset.

При определении фиксировано зафиксированного или подкачки плавающей плавающей, затем ProjectionCurve NINST- 2 вектор, потому что каждый плавающий участок мог иметь различную кривую проекции.

Типы данных: struct

Валютные свопы

свернуть все

Иностранная валюта (FX) уровень применилась к потокам наличности в виде разделенной запятой пары, состоящей из 'FXRate' и NINST- 2 массив типа double. Поскольку обменный курс валюты мог быть применен или к плательщику или к участку приемника, существует 2 столбца во входном массиве, и необходимо задать, какой участок имеет иностранную валюту.

Типы данных: double

Отметьте, чтобы указать если начальный Principal обменен в виде разделенной запятой пары, состоящей из 'ExchangeInitialPrincipal' и NINST- 1 массив logicals.

Типы данных: логический

Отметьте, чтобы указать если Principal обменен в MaturityВ виде разделенной запятой пары, состоящей из 'ExchangeMaturityPrincipal' и NINST- 1 массив logicals. В то время как на практике большинство подкачек единой валюты не обменивается принципалом в зрелости, значение по умолчанию верно, чтобы обеспечить обратную совместимость.

Типы данных: логический

Выходные аргументы

свернуть все

Подкачайте цены, возвращенные как количество инструментов (NINST) количеством кривых (NUMCURVES) матрица. Каждый столбец является результатом одной из кривых нулевой ширины. Price выход является грязной ценой. Чтобы вычислить чистую цену, вычтите начисленные проценты (AI) от грязной цены.

Уровни, применимые к фиксированному участку, возвращенному как NINST- NUMCURVES матрица уровней, применимых к фиксированному участку, таким образом, что значения подкачек являются нулем во время 0. Этот уровень используется в вычислении цен подкачек, когда уровень задал для фиксированного участка в LegRate isnan. SwapRate выход дополнен NaN для тех инструментов, в который CouponRate не установлен в NaN.

Начисленные проценты, возвращенные как NINST- NUMCURVES матрица.

Потоки наличности для участка получения, возвращенного как NINST- NUMCURVES матрица.

Примечание

Если существует больше чем одна кривая, заданная в RateSpec введите, затем первый NCURVES строка соответствует первой подкачке, второму NCURVES строка соответствует второй подкачке и так далее.

Платежные дни участка получения, возвращенного как NINST- NUMCURVES матрица.

Потоки наличности для участка оплаты, возвращенного как NINST- NUMCURVES матрица.

Платежные дни участка оплаты, возвращенного как NINST- NUMCURVES матрица.

Больше о

свернуть все

Амортизация подкачки

В подкачке амортизации отвлеченный принципал периодически уменьшается, потому что он связывается к базовому финансовому инструменту со снижением (амортизирующим) основной баланс, такой как ипотека.

Передайте подкачку

Соглашение ввести в процентную ставку подкачивает расположение относительно установленной даты в будущем.

Валютный своп

Подкачки, где платежные участки подкачки называются в различных валютах.

Одно различие между валютными свопами и стандартными подкачками - то, что обмен принципалом может произойти вначале и/или конец подкачки. Обмен начальным принципалом будет только играть роль в оценке валютного свопа в начале (другими словами, оценивание существующего валютного свопа произойдет после того, как этот поток наличности произошел). Кроме того, эти обмены принципалом обычно не влияют на значение подкачки (поскольку основные значения этих двух участков выбраны на основе курса обмена валюты), но влияйте на потоки наличности для каждого участка.

Ссылки

[1] Оболочка, J. Опции, фьючерсы и другие производные четвертый выпуск. Prentice Hall, 2000.

Представлено до R2006a