Определите скорректированный по опции спред с помощью модели Халла-Уайта
[
вычисляет скорректированный по опциям спред с помощью модели Халла-Уайта.OAS
,OAD
,OAC
]
= oasbyhw(HWTree
,Price
,CouponRate
,Settle
,Maturity
,OptSpec
,Strike
,ExerciseDates
)
oasbyhw
вычисляет цены ванильных облигаций с встраиваемыми опциями, ступенчатыми купонными облигациями с встраиваемыми опциями, амортизацией облигаций с встраиваемыми опциями и облигациями тонущего фонда с встраиваемой опцией вызова. Дополнительные сведения см. в разделе Дополнительные сведения.
[
добавляет необязательные аргументы пары "имя-значение".OAS
,OAD
,OAC
]
= oasbyhw(___,Name,Value
)
В этом примере показано, как вычислить OAS и OAD с помощью модели Hull-White (HW) с помощью следующих данных.
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
В этом примере показано, как вычислить цену вызываемой облигации с помощью дерева Hull-White.
Используйте следующие данные о облигациях:
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
и создайте дерево HW.
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);
Создайте HW-дерево.
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 для вызываемой амортизирующей связи с помощью дерева HW.
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
-by- 1
вектор.
Типы данных: double
CouponRate
- Ставка купона по облигациям Ставка купона на облигацию, заданная как NINST
-by- 1
десятичный годовой темп.
Типы данных: double
Settle
- Дата расчетаДата расчета для опции облигации, заданная как NINST
-by- 1
вектор серийных номеров дат или векторов символов дат.
Примечание
The Settle
дата для каждой облигации с встроенной опцией устанавливается равной ValuationDate
дерева HW. Аргумент в пользу Settle
игнорируется.
Типы данных: double
| char
Maturity
- Дата погашенияДата зрелости, заданная как NINST
-by- 1
вектор серийных номеров дат или векторов символов дат.
Типы данных: double
| char
OptSpec
- Определение опции 'call'
или 'put'
| массив ячеек векторов символов со значениями 'call'
или 'put'
Определение опции, заданное как NINST
-by- 1
массив ячеек из векторов символов.
Типы данных: char
| cell
Strike
- Значения цены опционной забастовкиОпции цены значения, заданные как NINST
-by- 1
или NINST
-by- NSTRIKES
в зависимости от типа опции:
Европейская опция - NINST
-by- 1
вектор значений цены доставки.
Бермудская опция - NINST
по количеству ударов (NSTRIKES
) матрица значений цены доставки. Каждая строка является расписанием для одной опции. Если опция имеет меньше NSTRIKES
возможности упражнений, конец строки заполнен NaN
с.
Американская опция - NINST
-by- 1
вектор значений цены доставки для каждой опции.
Типы данных: double
ExerciseDates
- Даты опционных упражненийОпции даты упражнений, заданные как NINST
-by- 1
, NINST
-by- 2
, или NINST
-by- NSTRIKES
использование серийных номеров дат или векторов символов дат в зависимости от типа опции:
Для европейской опции используйте NINST
-by- 1
вектор дат. Для европейской опции существует только один ExerciseDates
на дату истечения срока действия опции.
Для опции Бермудских островов используйте NINST
-by- NSTRIKES
вектор дат. Каждая строка является расписанием для одной опции.
Для американской опции используйте NINST
-by- 2
вектор контуров дат упражнения. Опция может быть использована в любую дату между или включая пару дат в этой строке. Если только один не - NaN
указана дата, или если ExerciseDates
является NINST
-by- 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
-by- 1
положительные целочисленные флаги со значениями:
0
- Европейский/Бермудские острова
1
- Американский
Типы данных: double
'Period'
- Купоны в год2
в год (по умолчанию) | векторКупоны в год, заданные как разделенная разделенными запятой парами, состоящая из 'Period'
и a NINST
-by- 1
вектор.
Типы данных: double
'Basis'
- базис подсчета дней0
(фактический/фактический) (по умолчанию) | целое число от 0
на 13
Базис отсчета дней, заданный как разделенная разделенными запятой парами, состоящая из 'Basis'
и a NINST
-by- 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
-by- 1
вектор. Это правило применяется только тогда, когда Maturity
- дата окончания месяца для месяца, имеющего 30 или менее дней.
0
= Игнорируйте правило, означающее, что дата выплаты купона по облигации всегда совпадает с числовым днем месяца.
1
= Установите правило, означающее, что дата выплаты купона по облигации всегда является последним фактическим днем месяца.
Типы данных: double
'IssueDate'
- Дата выпуска облигацийДата выпуска облигации, заданная как разделенная разделенными запятой парами, состоящая из 'IssueDate'
и a NINST
-by- 1
вектор с использованием серийных номеров дат или векторов символов дат.
Типы данных: double
| char
'FirstCouponDate'
- Нерегулярная дата первого купонаНерегулярная дата первого купона, заданная как разделенная разделенными запятой парами, состоящая из 'FirstCouponDate'
и a NINST
-by- 1
вектор с использованием последовательных номеров дат или векторов символов дат.
Когда FirstCouponDate
и LastCouponDate
оба заданы, FirstCouponDate
имеет приоритет при определении структуры купонного платежа. Если вы не задаете FirstCouponDate
Даты платежа денежного потока определяются из других входов.
Типы данных: double
| char
'LastCouponDate'
- Нерегулярная дата последнего купонаНерегулярная дата последнего купона, заданная как разделенная разделенными запятой парами, состоящая из 'LastCouponDate'
и a NINST
-by- 1
вектор с использованием серийных номеров дат или векторов символов дат.
При отсутствии заданного FirstCouponDate
, a заданное LastCouponDate
определяет купонную структуру облигации. Купонная структура облигации усечена в LastCouponDate
, независимо от того, где он падает, и сопровождается только датой движения денежных средств по облигации со сроком погашения. Если вы не задаете LastCouponDate
Даты платежа денежного потока определяются из других входов.
Типы данных: char
| double
'StartDate'
- Форвардная дата начала платежейДата начала платежей (дата, с которой рассматривается денежный поток облигаций), заданная как разделенная разделенными запятой парами, состоящая из 'StartDate'
и a NINST
-by- 1
вектор с использованием серийных номеров дат или векторов символов дат.
Если вы не задаете StartDate
, дата начала вступления в силу является Settle
дата.
Типы данных: char
| double
'Face'
- Номинал100
(по умолчанию) | NINST
-by- 1
вектор | NINST
-by- 1
массив ячеекНоминальное или номинальное значение, заданное как разделенная разделенными запятой парами, состоящая из 'Face'
и a NINST
-by- 1
вектор или NINST
-by- 1
массив ячеек, где каждый элемент является NumDates
-by- 2
массив ячеек, где первый столбец является датами, а второй столбец связан с номинальным значением. Дата указывает последний день, когда значение лица является допустимым.
Типы данных: double
'BondType'
- Тип базовой облигации'vanilla'
для скалярных Face
значения, 'callablesinking'
для запланированных Face
значения (по умолчанию) | массив ячеек из векторов символов со значениями 'vanilla'
, 'amortizing'
, или 'callablesinking'
| строковые массивы со значениями "vanilla"
, "amortizing"
, или "callablesinking"
Тип базовой связи, заданный как разделенная разделенными запятой парами, состоящая из 'BondType'
и a NINST
-by- 1
массив ячеек из векторов символов или строковых массивов, определяющий, является ли базовая связь ванильной связью, амортизирующей связью или вызываемой тонкой фондовой связью. Поддерживаемые типы:
'vanilla
'является стандартной вызываемой или приемлемой связью со скаляром Face
значение и один купон или ступенчатые купоны.
'callablesinking'
является облигацией с графиком Face
значения и обеспечение вызова тонущего фонда с одним или ступенчатыми купонами.
'amortizing'
является амортизирующей вызываемой или приемлемой связью с графиком Face
значения с одинарными или ступенчатыми купонами.
Типы данных: char
| string
'Options'
- Опции ценообразования производных инструментовПроизводные опции ценообразования, заданные как разделенная разделенными запятой парами, состоящая из 'Options'
и структуру, которая создается с derivset
.
Типы данных: struct
OAS
- Скорректированный по опциям спредСкорректированный по опциям спред, возвращенный как NINST
-by- 1
вектор.
OAD
- Скорректированная длительность опцииСкорректированная по опции длительность, возвращенная как NINST
-by- 1
вектор.
OAC
- Регулируемая опция выпуклостиРегулируемая опция выпуклости, возвращенная как NINST
-by- 1
вектор.
Облигация с ванильным купоном представляет собой залог, представляющий собой обязательство погасить заемную сумму в установленный срок и производить периодические выплаты процентов до этого времени.
Эмитент облигации производит периодические выплаты процентов до погашения облигации. При погашении эмитент выплачивает держателю облигации основную сумму задолженности ( номинальное значение) и последний процентный платеж. Ванильная облигация с встроенной опцией - это там, где опционный контракт имеет базовый актив ванильной облигации.
Повышающая и понижающая облигация является долговым обеспечением с заранее определенной купонной структурой с течением времени.
С помощью этих инструментов купоны увеличиваются (повышаются) или уменьшаются (снижаются) в определенные моменты времени в течение срока действия облигации. Шаговые купонные облигации могут иметь опции функции (вызов и размещение).
Облигация тонущего фонда - купонная облигация с обеспечением тонущего фонда.
Данное положение обязывает эмитента амортизировать фрагменты основного долга до погашения, что влияет на цены облигаций с момента изменения основного погашения. Это означает, что инвесторы получают купон и фрагмент основного долга, выплаченную с течением времени. Эти виды облигаций снижают кредитный риск, поскольку это снижает вероятность того, что инвесторы не получат основной платеж на срок погашения.
Облигация может иметь результирующий фонд опции условием, позволяющим эмитенту погасить обязательство по потопляющему фонду либо путем покупки облигаций, подлежащих погашению с рынка, либо путем вызова облигации через релейный фонд, в зависимости от того, что дешевле. Если процентные ставки высоки, то эмитент выкупает с рынка сумму требования облигаций, так как облигации малы, но если процентные ставки низки (цены облигаций высокие), то скорее всего эмитент покупает облигации по цене вызова. В отличие от вызова функции, однако, если облигация имеет вызов опции результирующего фонда, эмитент обязан, а не опция, выкупить шаги выпуска, как указано. Из-за этого облигации тонущего фонда торгуются по более низкой цене, чем облигации нетонущего фонда.
Амортизация callable или puttable облигаций работает в соответствии с запланированным Face
.
Амортизирующая вызываемая облигация дает эмитенту право перезвонить облигации, но вместо оплаты Face
сумма в срок погашает часть основной суммы вместе с купонными платежами. Амортизирующая облигация, подлежащая оплате, возвращает часть основной суммы вместе с купонными платежами и предоставляет держателю облигации право продать облигацию эмитенту.
[1] Fabozzi, F. Справочник по ценным бумагам с фиксированным доходом. 7-е издание. Макгроу-Хилл, 2005.
[2] Windas, T. Введение в оптимизированный для опций спред-анализ. 3-е издание. Bloomberg Press, 2007.
hwprice
| hwtree
| instoptembnd
| oasbybdt
| oasbybk
| oasbyhjm
| optembndbyhw
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.