Ценовая облигация из набора нулевых кривых
[ котирует облигацию из набора нулевых кривых. Price,DirtyPrice,CFlowAmounts,CFlowDates] = bondbyzero(RateSpec,CouponRate,Settle,Maturity)bondbyzero вычисляет цены ванильных облигаций, ступенчатых купонных облигаций и амортизирующих облигаций.
[ добавляет дополнительные аргументы пары имя-значение.Price,DirtyPrice,CFlowAmounts,CFlowDates] = bondbyzero(___,Name,Value)
Цена 4% облигации с использованием нулевой кривой.
Груз deriv.mat, что обеспечивает ZeroRateSpecструктура срока процентной ставки, необходимая для оценки облигации.
load deriv.mat; CouponRate = 0.04; Settle = '01-Jan-2000'; Maturity = '01-Jan-2004'; Price = bondbyzero(ZeroRateSpec, CouponRate, Settle, Maturity)
Price = 97.5334
Цена одноступенчатых купонных облигаций с использованием рыночных данных.
Определите данные для структуры срока процентной ставки.
Rates = [0.035; 0.042147; 0.047345; 0.052707]; ValuationDate = 'Jan-1-2010'; StartDates = ValuationDate; EndDates = {'Jan-1-2011'; 'Jan-1-2012'; 'Jan-1-2013'; 'Jan-1-2014'}; Compounding = 1;
Создать RateSpec.
RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RS = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: [4x1 double]
Rates: [4x1 double]
EndTimes: [4x1 double]
StartTimes: [4x1 double]
EndDates: [4x1 double]
StartDates: 734139
ValuationDate: 734139
Basis: 0
EndMonthRule: 1
Создайте инструмент ступенчатой сварки.
Settle = '01-Jan-2010'; Maturity = {'01-Jan-2011';'01-Jan-2012';'01-Jan-2013';'01-Jan-2014'}; CouponRate = {{'01-Jan-2012' .0425;'01-Jan-2014' .0750}}; Period = 1;
Рассчитайте цену ступенчатых купонных облигаций.
PZero= bondbyzero(RS, CouponRate, Settle, Maturity ,Period)
PZero = 4×1
100.7246
100.0945
101.5900
102.0820
Цена облигации с амортизирующим графиком с использованием Face входной аргумент для определения расписания.
Определите данные для структуры срока процентной ставки.
Rates = 0.065; ValuationDate = '1-Jan-2011'; StartDates = ValuationDate; EndDates= '1-Jan-2017'; Compounding = 1;
Создать RateSpec.
RateSpec = intenvset('ValuationDate', ValuationDate,'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding)
RateSpec = struct with fields:
FinObj: 'RateSpec'
Compounding: 1
Disc: 0.6853
Rates: 0.0650
EndTimes: 6
StartTimes: 0
EndDates: 736696
StartDates: 734504
ValuationDate: 734504
Basis: 0
EndMonthRule: 1
Создайте и оцените амортизирующий облигационный инструмент. Облигация имеет купонную ставку 7%, сроком на один год, и погашается на 1-Jan-2017.
CouponRate = 0.07; Settle ='1-Jan-2011'; Maturity = '1-Jan-2017'; Period = 1; Face = {{'1-Jan-2015' 100;'1-Jan-2016' 90;'1-Jan-2017' 80}}; Price = bondbyzero(RateSpec, CouponRate, Settle, Maturity, 'Period',... Period, 'Face', Face)
Price = 102.3155
Сравните результаты с ценой ванильной облигации.
PriceVanilla = bondbyzero(RateSpec, CouponRate, Settle, Maturity,Period)
PriceVanilla = 102.4205
Цена как амортизирующих и ванильных облигаций.
Face = {{'1-Jan-2015' 100;'1-Jan-2016' 90;'1-Jan-2017' 80};
100};
PriceBonds = bondbyzero(RateSpec, CouponRate, Settle, Maturity, 'Period',...
Period, 'Face', Face)PriceBonds = 2×1
102.3155
102.4205
При первом выпуске облигации она может быть оценена с bondbyzero в этот день путем установки Settle дата до даты выпуска. Позднее, если облигация должна торговаться когда-нибудь между датой выпуска и датой погашения, ее новая цена может быть вычислена путем обновления Settle дата, а также RateSpec вход.
Обратите внимание, что цена облигации определяется ее оставшимися денежными потоками и структурой срока нулевой ставки, которая может изменяться по мере погашения облигации. В то время как bondbyzero автоматически обновляет оставшиеся денежные потоки облигации относительно новой Settle date, необходимо указать новый RateSpec входные данные для того, чтобы отразить новую структуру терминов нулевой ставки для этого нового Settle дата.
Используйте следующую информацию о облигациях.
IssueDate = datenum('20-May-2014'); CouponRate = 0.01; Maturity = datenum('20-May-2019');
Определите цену облигации на 20-May-2014.
Settle1 = datenum('20-May-2014'); ZeroDates1 = datemnth(Settle1,12*[1 2 3 5 7 10 20]'); ZeroRates1 = [0.23 0.63 1.01 1.60 2.01 2.27 2.79]'/100; RateSpec1 = intenvset('StartDate',Settle1,'EndDates',ZeroDates1,'Rates',ZeroRates1); [Price1, ~, CFlowAmounts1, CFlowDates1] = bondbyzero(RateSpec1, ... CouponRate, Settle1, Maturity, 'IssueDate', IssueDate); Price1
Price1 = 97.1899
Определите цену облигации на 10-Aug-2015.
Settle2 = datenum('10-Aug-2015'); ZeroDates2 = datemnth(Settle2,12*[1 2 3 5 7 10 20]'); ZeroRates2 = [0.40 0.73 1.09 1.62 1.98 2.24 2.58]'/100; RateSpec2 = intenvset('StartDate',Settle2,'EndDates',ZeroDates2,'Rates',ZeroRates2); [Price2, ~, CFlowAmounts2, CFlowDates2] = bondbyzero(RateSpec2, ... CouponRate, Settle2, Maturity, 'IssueDate', IssueDate); Price2
Price2 = 98.9384
Чтобы оценить три облигации с использованием двух различных кривых, определите RateSpec:
StartDates = '01-April-2016'; EndDates = ['01-April-2017'; '01-April-2018';'01-April-2019';'01-April-2020']; Rates = [[0.0356;0.041185;0.04489;0.047741],[0.0325;0.0423;0.0437;0.0465]]; 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: 736421
ValuationDate: 736421
Basis: 0
EndMonthRule: 1
Цена трех облигаций с одинаковым Maturity и различные купоны.
Settle = '01-April-2016'; Maturity = '01-April-2020'; Price = bondbyzero(RateSpec,[0.025;0.028;0.035],Settle,Maturity)
Price = 3×2
92.0766 92.4888
93.1680 93.5823
95.7145 96.1338
AdjustCashFlowsBasisДля корректировки денежных потоков в соответствии с суммой разграничения используйте дополнительный аргумент ввода. AdjustCashFlowsBasis при вызове bondbyzero.
Используйте следующие данные для определения структуры условий процентной ставки и создания RateSpec.
Rates = 0.065; ValuationDate = '1-Jan-2011'; StartDates = ValuationDate; EndDates= '1-Jan-2017'; Compounding = 1; RateSpec = intenvset('ValuationDate',ValuationDate,'StartDates',StartDates,... 'EndDates', EndDates,'Rates',Rates,'Compounding',Compounding); CouponRate = 0.07; Settle ='1-Jan-2011'; Maturity = '1-Jan-2017'; Period = 1; Face = {{'1-Jan-2015' 100;'1-Jan-2016' 90;'1-Jan-2017' 80}};
Использовать cfamounts и цикл через Basis из 0 кому 13, с использованием необязательного аргумента AdjustCashFlowsBasis определить суммы денежного потока для начисленных процентов, причитающихся при расчете.
AdjustCashFlowsBasis = true; CFlowAmounts = cfamounts(CouponRate,Settle,Maturity,'Period',Period,'Basis',0:13,'AdjustCashFlowsBasis',AdjustCashFlowsBasis)
CFlowAmounts = 14×7
0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000
0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000
0 7.0972 7.1167 7.0972 7.0972 7.0972 107.1167
0 7.0000 7.0192 7.0000 7.0000 7.0000 107.0192
0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000
0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000
0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000
0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000
0 7.0000 7.0000 7.0000 7.0000 7.0000 107.0000
0 7.0972 7.1167 7.0972 7.0972 7.0972 107.1167
⋮
Обратите внимание, что суммы денежных потоков были скорректированы в соответствии с Basis.
Цена ванильной облигации с использованием входного аргумента AdjustCashFlowsBasis.
PriceVanilla = bondbyzero(RateSpec,CouponRate,Settle,Maturity,'Period',Period,'Basis',0:13,'AdjustCashFlowsBasis',AdjustCashFlowsBasis)
PriceVanilla = 14×1
102.4205
102.4205
102.9216
102.4506
102.4205
102.4205
102.4205
102.4205
102.4205
102.9216
⋮
RateSpec - Структура процентных ставокСтруктура процентных ставок, указанная с помощью intenvset для создания RateSpec для годовой структуры членов нулевой ставки.
Типы данных: struct
CouponRate - Ставка купона по облигациям Ставка купонного вознаграждения по облигациям, указанная как NINSTоколо-1 десятичная годовая ставка или NINSTоколо-1 массив ячеек, где каждый элемент является NumDatesоколо-2 массив ячеек. Первый столбец NumDatesоколо-2 массив ячеек - даты, а второй столбец - связанные скорости. Дата указывает последний день, когда действительна ставка купона.
Типы данных: double | cell
Settle - Дата расчетаДата расчета, указанная как скаляр или NINSTоколо-1 вектор серийных номеров дат или векторы символов дат.
Settle должно быть раньше, чем Maturity.
Типы данных: char | double
Maturity - Дата погашенияДата погашения, указанная как NINSTоколо-1 вектор серийных номеров дат или векторы символов дат, представляющие дату погашения для каждой облигации.
Типы данных: char | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
Price = bondbyzero(RateSpec,CouponRate,Settle,Maturity,'Period',4,'Face',10000)'Period' - Купоны в год2 в год (по умолчанию) | векторКупоны в год, указанные как пара, разделенная запятыми, состоящая из 'Period' и NINSTоколо-1 вектор. Значения для Period являются 1, 2, 3, 4, 6, и 12.
Типы данных: double
'Basis' - Количество дней0 (факт/факт) (по умолчанию) | целое число от 0 кому 13Дневной отсчет прибора, определяемый как пара, разделенная запятыми, состоящая из 'Basis' и NINSTоколо-1 вектор.
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
'EndMonthRule' - флаг правила конца месяца для генерации дат, когда Maturity - дата окончания месяца, имеющего 30 или менее дней1 (в действии) (по умолчанию) | неотрицательное целое число [0,1]Флаг правила конца месяца для генерации дат при Maturity - дата окончания месяца, имеющая 30 или менее дней, указанная как пара, разделенная запятыми, состоящая из 'EndMonthRule' и неотрицательное целое число [0, 1] с использованием NINSTоколо-1 вектор.
0 = Игнорировать правило, означающее, что дата платежа всегда совпадает с числовым днем месяца.
1 = Установите правило, означающее, что дата платежа всегда является последним фактическим днем месяца.
Типы данных: logical
'IssueDate' - Дата выпуска облигацийДата выпуска облигаций, указанная как пара, разделенная запятыми, состоящая из 'IssueDate' и NINSTоколо-1 с использованием серийного неотрицательного номера даты или вектора символов даты.
Типы данных: double | char
'FirstCouponDate' - нерегулярная дата первого купонаНеправильная дата первого купона, указанная как пара, разделенная запятыми, состоящая из 'FirstCouponDate' и NINSTоколо-1 с использованием серийного неотрицательного номера даты или вектора символов даты.
Типы данных: double | char
'LastCouponDate' - нерегулярная дата последнего купонаНеправильная дата последнего купона, указанная как пара, разделенная запятыми, состоящая из 'LastCouponDate' и NINSTоколо-1 с использованием серийного неотрицательного номера даты или вектора символов даты.
Типы данных: double | char
'StartDate' - Форвардная дата начала платежейSettle дата (по умолчанию) | серийный номер даты | вектор символов датыФорвардная дата начала выплат (дата, с которой рассматривается денежный поток облигации), указанная как пара, разделенная запятыми, состоящая из 'StartDate' и NINSTоколо-1 вектор с использованием серийных номеров дат или векторов символов даты.
Если не указать StartDate, дата начала действия - Settle дата.
Типы данных: char | double
'Face' - Номинал100 (по умолчанию) | скаляр неотрицательного значения | массив ячеек неотрицательных значенийНоминальное значение, указанное как пара, разделенная запятыми, состоящая из 'Face' и NINSTоколо-1 скаляр неотрицательных значений лица или NINSTоколо-1 массив ячеек, где каждый элемент является NumDatesоколо-2 массив ячеек. Первый столбец NumDatesоколо-2 массив ячеек - даты, а второй столбец - связанное номинальное значение. Дата указывает последний день, когда номинал является действительным.
Типы данных: cell | double
'Options' - Варианты ценообразования деривативовОпционы ценообразования деривативов, указанные как пара, разделенная запятыми, состоящая из 'Options' и структура, которая создается с помощью derivset.
Типы данных: struct
'AdjustCashFlowsBasis' - Флажок для корректировки денежных потоков на основе фактического подсчета дней периодаfalse (по умолчанию) | значение 0 (false) или 1 ПравдаФлажок для корректировки денежных потоков на основе фактического количества дней периода, указанного как пара, разделенная запятыми, состоящая из 'AdjustCashFlowsBasis' и NINSTоколо-1 вектор логикалов со значениями 0 (false) или 1 Правда.
Типы данных: logical
'BusinessDayConvention' - Соглашения по рабочим днямactual
(по умолчанию) | символьный вектор | массив ячеек символьных векторовСоглашения о рабочих днях, указанные как пара, разделенная запятыми, состоящая из 'BusinessDayConvention' и вектор символа или Nоколо-1 (или NINSTоколо-2 если BusinessDayConvention отличается для каждого участка) массив ячеек символьных векторов соглашений о рабочих днях. Выбор соглашения о рабочих днях определяет, как обрабатываются нерабочие дни. Нерабочие дни определяются как выходные дни плюс любая другая дата, когда предприятия не открыты (например, официальные праздники). Значения:
actual - Нерабочие дни фактически игнорируются. Предполагается, что денежные потоки, приходящиеся на нерабочие дни, распределяются на фактическую дату.
follow - Денежные потоки, приходящиеся на нерабочий день, предполагается распределить на следующий рабочий день.
modifiedfollow - Денежные потоки, приходящиеся на нерабочий день, предполагается распределить на следующий рабочий день. Однако если следующий рабочий день находится в другом месяце, вместо него используется предыдущий рабочий день.
previous - Денежные потоки, приходящиеся на нерабочий день, предполагается распределить в предыдущий рабочий день.
modifiedprevious - Денежные потоки, приходящиеся на нерабочий день, предполагается распределить в предыдущий рабочий день. Однако если предыдущий рабочий день находится в другом месяце, вместо него принимается следующий рабочий день.
Типы данных: char | cell
'Holidays' - Праздники, используемые в вычислительных рабочих дняхholidays.m (по умолчанию) | Номера дат MATLAB ®Праздники, используемые в вычислительных рабочих днях, указанные как пара, разделенная запятыми, состоящая из 'Holidays' и номера дат MATLAB с использованием NHolidaysоколо-1 вектор.
Типы данных: double
Price - Цены нот с фиксированной ставкойЦены нот с плавающей ставкой, возвращенные как (NINST) по количеству кривых (NUMCURVES) матрица. Каждый столбец возникает из одной из нулевых кривых.
DirtyPrice - Грязная цена облигацийЦена грязных облигаций (чистые + начисленные проценты), возвращенная как NINSTоколо-NUMCURVES матрица. Каждый столбец возникает из одной из нулевых кривых.
CFlowAmounts - Суммы денежных потоковСуммы денежных потоков, возвращенные как NINSTоколо-NUMCFS матрица денежных потоков для каждой облигации.
CFlowDates - Даты движения денежных средствДаты движения денежных средств, возвращенные как NINSTоколо-NUMCFS матрица дат выплат для каждой облигации.
Ванильный купонный залог - это ценная бумага, представляющая собой обязательство погасить заемную сумму в установленное время и производить периодические выплаты процентов до этого времени.
Эмитент облигации осуществляет периодические выплаты процентов до погашения облигации. При погашении эмитент выплачивает держателю облигации сумму основного долга (номинальную стоимость) и последний платеж по процентам.
Повышающая и понижающая облигации - это долговое обеспечение с заданной структурой купона с течением времени.
С помощью этих инструментов купоны увеличиваются (повышаются) или уменьшаются (понижаются) в определенное время в течение срока действия облигации.
Амортизируемая облигация рассматривается как актив, а сумма дисконта амортизируется в счет процентных расходов в течение срока действия облигации.
cfamounts | cfbyzero | fixedbyzero | floatbyzero | swapbyzero
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.