Определение скорректированного разброса опций с использованием модели Корпус-Белый
[ вычисляет опционально скорректированный разброс с использованием модели Корпус-Белый.OAS,OAD,OAC] = oasbyhw(HWTree,Price,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates)
oasbyhw вычисляет цены ванильных облигаций со встроенными опционами, ступенчатых купонных облигаций со встроенными опционами, амортизирующих облигаций со встроенными опционами и тонущих облигаций фонда со встроенными опционами колл. Дополнительные сведения см. в разделе Дополнительные сведения.
[ добавляет необязательные аргументы пары имя-значение.OAS,OAD,OAC] = oasbyhw(___,Name,Value)
В этом примере показано, как вычислять OAS и OAD с использованием модели HW (Hull-White) с использованием следующих данных.
ValuationDate = 'October-25-2010'; Rates = [0.0355; 0.0382; 0.0427; 0.0489]; StartDates = ValuationDate; EndDates = datemnth(ValuationDate, 12:12:48)'; Compounding = 1; % define RateSpec RateSpec = intenvset('ValuationDate', ValuationDate,... 'StartDates', StartDates, 'EndDates', EndDates, ... 'Rates', Rates,'Compounding', Compounding); % specify VolsSpec and TimeSpec Sigma = 0.05; Alpha = 0.01; VS = hwvolspec(ValuationDate, EndDates, Sigma*ones(size(EndDates)),... EndDates, Alpha*ones(size(EndDates))); TS = hwtimespec(ValuationDate, EndDates, Compounding); % build the HW tree HWTree = hwtree(VS, RateSpec, TS); % instrument information CouponRate = 0.045; Settle = ValuationDate; Maturity = '25-October-2014'; OptSpec = 'call'; Strike = 100; ExerciseDates = {'25-October-2010','25-October-2013'}; Period = 1; AmericanOpt = 0; Price = 97; % compute the OAS [OAS, OAD] = oasbyhw(HWTree, Price, CouponRate, Settle, Maturity,... OptSpec, Strike, ExerciseDates, 'Period', Period, 'AmericanOpt', AmericanOpt)
OAS = -12.8538
OAD = 3.2910
В этом примере показано, как вычислить цену вызываемой облигации с помощью дерева Халл-Уайт.
Используйте следующие данные облигации:
Settle = datenum('20-Aug-2014'); % Bond Properties Maturity = datenum('01-Apr-2034'); CouponRate = .0625; CallDates = datemnth('01-Oct-2014',6*(0:19)); CallStrikes = [102.85 102.7 102.55 102.4 102.25 102.1 101.95 101.8 ... 101.65 101.5 101.35 101.2 101.05 100.9 100.75 100.6 100.45 100.3 ... 100.15 100];
Используйте следующие данные нулевой кривой:
CurveDates = datemnth(Settle,12*[1 2 3 5 7 10 20 30]'); ZeroRates = [.11 0.30 0.64 1.44 2.07 2.61 3.29 3.55]'/100;
Определите RateSpec и построить дерево аппаратных средств.
RateSpec = intenvset('StartDate',Settle,'EndDates',CurveDates,'Rates',ZeroRates); % HW Model Properties alpha = .1; sigma = .01; TimeSpec = hwtimespec(Settle,cfdates(Settle,Maturity,12),2); VolSpec = hwvolspec(Settle,Maturity,sigma,Maturity,alpha); HWTree = hwtree(VolSpec,RateSpec,TimeSpec,'method','HW2000')
HWTree = struct with fields:
FinObj: 'HWFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [1x236 double]
dObs: [1x236 double]
CFlowT: {1x236 cell}
Probs: {1x235 cell}
Connect: {1x235 cell}
FwdTree: {1x236 cell}
Вычислите OAS для облигации.
Price = 103.25;
OAS = oasbyhw(HWTree, Price, CouponRate, Settle, Maturity, 'call', CallStrikes, CallDates)OAS = 234.8209
Если требуется вычислить OAS, которая измеряет только стоимость опциона, можно передать кривую, специфичную для эмитента, вместо кривой, свободной от риска (это будет сделано в RateSpec аргумент).
В этом примере показано, как вычислить OAS для амортизирующей вызываемой связи с использованием модели решетки HW.
Создать RateSpec.
Rates = [0.035; 0.042147; 0.047345; 0.052707]; ValuationDate = 'Jan-1-2012'; StartDates = ValuationDate; EndDates = {'Jan-1-2013'; 'Jan-1-2014'; 'Jan-1-2015'; 'Jan-1-2016'}; Compounding = 1; RS = intenvset('ValuationDate', ValuationDate, 'StartDates', StartDates,... 'EndDates', EndDates,'Rates', Rates, 'Compounding', Compounding);
Создайте дерево аппаратных средств.
VolDates = ['1-Jan-2013'; '1-Jan-2014'; '1-Jan-2015'; '1-Jan-2016']; VolCurve = 0.01; AlphaDates = '01-01-2016'; AlphaCurve = 0.1; HWVolSpec = hwvolspec(RS.ValuationDate, VolDates, VolCurve,... AlphaDates, AlphaCurve); HWTimeSpec = hwtimespec(RS.ValuationDate, EndDates, Compounding); HWT = hwtree(HWVolSpec, RS, HWTimeSpec);
Определите вызываемую связь.
CouponRate = 0.05; Settle = 'Jan-1-2012'; Maturity = 'Jan-1-2016'; Period = 1; Face = { {'Jan-1-2014' 100; 'Jan-1-2015' 70; 'Jan-1-2016' 50}; }; OptSpec = 'call'; Strike = [97 95 93]; ExerciseDates ={'Jan-1-2014' 'Jan-1-2015' 'Jan-1-2016'};
Вычислите OAS для вызываемой амортизирующей связи с помощью дерева аппаратных средств.
Price = 55; BondType = 'amortizing'; OAS = oasbyhw(HWT,Price, CouponRate, Settle, Maturity,... OptSpec, Strike, ExerciseDates, 'Period', Period, 'Face', Face,'BondType', BondType)
OAS = 2.4023e+03
HWTree - Древовидная структура процентных ставокДревовидная структура процентных ставок, определенная с помощью hwtree.
Типы данных: struct
Price - Рыночные цены облигаций со встроенными опционамиРыночные цены облигаций со встроенными опционами, указанные как NINSTоколо-1 вектор.
Типы данных: double
CouponRate - Ставка купона по облигациям Ставка купонного вознаграждения по облигациям, указанная как NINSTоколо-1 десятичная годовая ставка.
Типы данных: double
Settle - Дата расчетаДата расчета для опциона на облигацию, указанная как NINSTоколо-1 вектор серийных номеров дат или векторы символов дат.
Примечание
Settle для каждой связи со встроенной опцией устанавливается дата ValuationDate дерева аппаратных средств. Аргумент облигации Settle игнорируется.
Типы данных: double | char
Maturity - Дата погашенияДата погашения, указанная как NINSTоколо-1 вектор серийных номеров дат или векторы символов дат.
Типы данных: double | char
OptSpec - Определение опциона 'call' или 'put' | массив ячеек символьных векторов со значениями 'call' или 'put'Определение опции, указанной как NINSTоколо-1 клеточный массив символьных векторов.
Типы данных: char | cell
Strike - Значения цены страйка опционаЦена страйка опциона, указанная как NINSTоколо-1 или NINSTоколо-NSTRIKES в зависимости от типа опции:
Европейский вариант - NINSTоколо-1 вектор значений цены страйка.
Вариант на Бермудских островах - NINST по количеству ударов (NSTRIKES) матрица значений цены страйка. Каждая строка является расписанием для одного варианта. Если параметр имеет менее NSTRIKES возможности упражнений, конец строки дополнен NaNs.
Американский вариант - NINSTоколо-1 вектор значений цены страйка для каждого варианта.
Типы данных: double
ExerciseDates - Даты опционных упражненийДаты исполнения опциона, указанные как NINSTоколо-1, NINSTоколо-2, или NINSTоколо-NSTRIKES использование серийных номеров дат или векторов символов дат в зависимости от типа опции:
Для европейского варианта используйте NINSTоколо-1 вектор дат. Для европейского варианта есть только один ExerciseDates на дату истечения срока действия опциона.
Для варианта на Бермудских островах используйте NINSTоколо-NSTRIKES вектор дат. Каждая строка является расписанием для одного варианта.
Для американского варианта используйте NINSTоколо-2 вектор границ даты упражнения. Опцион может быть реализован на любую дату между или включая пару дат в этой строке. Если только один не -NaN дата указана, или если ExerciseDates является NINSTоколо-1 вектор, опцион осуществляется между нижележащей облигацией Settle дата и единственная указанная дата упражнения.
Типы данных: double | char
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
OAS = oasbybk(BDTTree,Price,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates,'Period',4)'AmericanOpt' - Тип опции0 Европейский/Бермудские острова (по умолчанию) | целое число со значениями 0 или 1Тип опции, указанный как разделенная запятыми пара, состоящая из 'AmericanOpt' и NINSTоколо-1 положительные целочисленные флаги со значениями:
0 - Европейский/Бермудские острова
1 - американский
Типы данных: double
'Period' - Купоны в год2 в год (по умолчанию) | векторКупоны в год, указанные как пара, разделенная запятыми, состоящая из 'Period' и NINSTоколо-1 вектор.
Типы данных: 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' - Флаг правила на конец месяца1 (в действии) (по умолчанию) | неотрицательное целое число со значениями 0 или 1Флаг правила конца месяца, заданный как пара, разделенная запятыми, состоящая из 'EndMonthRule' и неотрицательное целое число с использованием NINSTоколо-1 вектор. Это правило применяется только в том случае, если Maturity - дата окончания месяца, имеющая 30 или менее дней.
0 = Игнорировать правило, означающее, что дата выплаты бонусного купона всегда совпадает с числовым днем месяца.
1 = Установить правило, означающее, что дата выплаты бонусного купона всегда является последним фактическим днем месяца.
Типы данных: double
'IssueDate' - Дата выпуска облигацийДата выпуска облигаций, указанная как пара, разделенная запятыми, состоящая из 'IssueDate' и NINSTоколо-1 вектор с использованием серийных номеров дат или векторов символов даты.
Типы данных: double | char
'FirstCouponDate' - нерегулярная дата первого купонаНеправильная дата первого купона, указанная как пара, разделенная запятыми, состоящая из 'FirstCouponDate' и NINSTоколо-1 вектор с использованием векторов даты или символов даты.
Когда FirstCouponDate и LastCouponDate оба указаны, FirstCouponDate имеет приоритет при определении структуры купонных выплат. Если не указать FirstCouponDateдаты оплаты денежного потока определяются из других входных данных.
Типы данных: double | char
'LastCouponDate' - нерегулярная дата последнего купонаНеправильная дата последнего купона, указанная как пара, разделенная запятыми, состоящая из 'LastCouponDate' и NINSTоколо-1 вектор с использованием серийных номеров дат или векторов символов даты.
При отсутствии указанного FirstCouponDate, указанный LastCouponDate определяет структуру купона облигации. Купонная структура облигации усечена в LastCouponDateнезависимо от того, куда она попадает, и следует только дата денежного потока погашения облигации. Если не указать LastCouponDateдаты оплаты денежного потока определяются из других входных данных.
Типы данных: char | double
'StartDate' - Форвардная дата начала платежейФорвардная дата начала выплат (дата, с которой рассматривается денежный поток облигации), указанная как пара, разделенная запятыми, состоящая из 'StartDate' и NINSTоколо-1 вектор с использованием серийных номеров дат или векторов символов даты.
Если не указать StartDate, дата начала действия - Settle дата.
Типы данных: char | double
'Face' - Номинал100
(по умолчанию) | NINSTоколо-1 вектор | NINSTоколо-1 массив ячеекНоминал или номинальная стоимость, указанная как пара, разделенная запятыми, состоящая из 'Face' и NINSTоколо-1 вектор или NINSTоколо-1 массив ячеек, где каждый элемент является NumDatesоколо-2 массив ячеек, где первый столбец является датами, а второй столбец - связанным номиналом. Дата указывает последний день, когда номинал является действительным.
Типы данных: double
'BondType' - Тип нижележащей облигации'vanilla' для скаляра Face значения, 'callablesinking' для запланированных Face значения (по умолчанию) | массив ячеек векторов символов со значениями 'vanilla','amortizing', или 'callablesinking' | строковый массив со значениями "vanilla", "amortizing", или "callablesinking"Тип нижележащей связи, определяемый как разделенная запятыми пара, состоящая из 'BondType' и NINSTоколо-1 клеточный массив символьных векторов или строковый массив, определяющий, является ли андерлаинг ванильной связью, амортизирующей облигацией или вызываемой фондовой облигацией. Поддерживаются следующие типы:
'vanilla'- стандартная вызываемая или устанавливаемая связь со скаляром Face стоимость и один купон или ступенчатые купоны.
'callablesinking' является облигацией с графиком Face значения и предоставление вызова тонущего фонда с одним или ступенчатыми купонами.
'amortizing' - амортизирующая вызываемая или путаемая связь с расписанием Face значения с одинарными или ступенчатыми купонами.
Типы данных: char | string
'Options' - Варианты ценообразования деривативовОпционы ценообразования деривативов, указанные как пара, разделенная запятыми, состоящая из 'Options' и структура, которая создается с помощью derivset.
Типы данных: struct
OAS - Скорректированный разброс опционаСкорректированный опцион, возвращенный как NINSTоколо-1 вектор.
OAD - Скорректированная продолжительность опционаСкорректированная продолжительность опции, возвращенная как NINSTоколо-1 вектор.
OAC - Опционально скорректированная выпуклостьСкорректированная выпуклость опции, возвращенная как NINSTоколо-1 вектор.
Ванильный купонный залог - это ценная бумага, представляющая собой обязательство погасить заемную сумму в установленное время и производить периодические выплаты процентов до этого времени.
Эмитент облигации осуществляет периодические выплаты процентов до погашения облигации. При погашении эмитент выплачивает держателю облигации сумму основного долга (номинальную стоимость) и последний платеж по процентам. Ванильная облигация со встроенным опционом - это то, где опционный контракт имеет основной актив ванильной облигации.
Повышающая и понижающая облигации - это долговое обеспечение с заданной структурой купона с течением времени.
С помощью этих инструментов купоны увеличиваются (повышаются) или уменьшаются (понижаются) в определенное время в течение срока действия облигации. Ступенчатые купонные облигации могут иметь опционные функции (вызов и пут).
Фондовая облигация - это купонная облигация с фондовым обеспечением.
Данное положение обязывает эмитента амортизировать части основного долга до погашения, что влияет на цены облигаций с момента изменения погашения основного долга. Это означает, что инвесторы получают купон и часть основного долга выплачивается со временем. Эти виды облигаций снижают кредитный риск, поскольку снижают вероятность неполучения инвесторами основного платежа по истечении срока погашения.
Облигация может иметь положение об опционе на фондовый колл, позволяющее эмитенту аннулировать обязательство по фондовому тонущему либо путем покупки облигаций, подлежащих погашению с рынка, либо путем вызова облигации через фондовый колл, в зависимости от того, что дешевле. Если процентные ставки высоки, то эмитент выкупает требуемую сумму облигаций с рынка, так как облигации дешевые, но если процентные ставки низкие (цены облигаций высокие), то, скорее всего, эмитент покупает облигации по цене колла. Однако, в отличие от функции колл, если облигация имеет опцион на тонущий фонд, эмитент обязан выкупить инкременты выпуска, как указано. Из-за этого фондовые облигации торгуются по более низкой цене, чем фондовые облигации.
Амортизирующие вызываемые или путаемые облигации работают по расписанию Face.
Амортизирующая вызываемая облигация дает эмитенту право перезвонить облигацию, но вместо оплаты Face сумма на срок погашения погашает часть основного долга вместе с купонными выплатами. Амортизирующая конвертируемая облигация, погашающая часть основного долга вместе с купонными выплатами и предоставляющая держателю облигаций право продать облигацию обратно эмитенту.
[1] Фабоцци, F. Справочник по ценным бумагам с фиксированным доходом. 7-е издание. Макгроу-Хилл, 2005.
[2] Виндас, Т. Введение в опционный анализ разброса. 3-е издание. Bloomberg Press, 2007.
hwprice | hwtree | instoptembnd | oasbybdt | oasbybk | oasbyhjm | optembndbyhw
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.