Определите скорректированный по опциям спред с помощью модели Кокса-Ингерсолла-Росса
[
вычисляет скорректированный по опции спред из процентного дерева Кокса-Ингерсолла-Росса (CIR) с помощью модели CIR++ с подходом Навалки-Беляевой (NB).OAS
,OAD
,OAC
]
= oasbycir(CIRTree
,Price
,CouponRate
,Settle
,Maturity
,OptSpec
,Strike
,ExerciseDates
)
oasbycir
вычисляет цены ванильных облигаций с встраиваемыми опциями, ступенчатыми купонными облигациями с встраиваемыми опциями, амортизацией облигаций с встраиваемыми опциями и облигациями тонущего фонда с встраиваемыми опциями. Дополнительные сведения см. в разделе Дополнительные сведения.
[
добавляет необязательные аргументы пары "имя-значение".OAS
,OAD
,OAC
]
= oasbycir(___,Name,Value
)
Создайте RateSpec
использование intenvset
функция.
ValuationDate = 'October-25-2018'; Rates = [0.0355; 0.0382; 0.0427; 0.0489]; StartDates = ValuationDate; EndDates = datemnth(ValuationDate, 12:12:48)'; Compounding = 1; RateSpec = intenvset('ValuationDate', ValuationDate, 'StartDates', ValuationDate, 'EndDates',EndDates,'Rates', Rates, 'Compounding', Compounding);
Создайте CIR
дерево.
NumPeriods = length(EndDates);
Alpha = 0.03;
Theta = 0.02;
Sigma = 0.1;
Maturity = '01-Jan-2023';
CIRTimeSpec = cirtimespec(ValuationDate, Maturity, NumPeriods);
CIRVolSpec = cirvolspec(Sigma, Alpha, Theta);
CIRT = cirtree(CIRVolSpec, RateSpec, CIRTimeSpec)
CIRT = struct with fields:
FinObj: 'CIRFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 1.0462 2.0924 3.1386]
dObs: [737358 737740 738122 738504]
FwdTree: {[1.0373] [1.0750 1.0443 1.0229] [1x5 double] [1x7 double]}
Connect: {[3x1 double] [3x3 double] [3x5 double]}
Probs: {[3x1 double] [3x3 double] [3x5 double]}
Определите инструмент OAS.
CouponRate = 0.045; Settle = ValuationDate; Maturity = '25-October-2019'; OptSpec = 'call'; Strike = 100; ExerciseDates = {'25-October-2018','25-October-2019'}; Period = 1; AmericanOpt = 0; Price = 97;
Вычислите OAS.
[OAS,OAD] = oasbycir(CIRT,Price,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates,'Period',Period,'AmericanOpt',AmericanOpt)
OAS = 416.9457
OAD = 0.9282
его пример показывает, как вычислить OAS для амортизирующей вызываемой связи с помощью решетчатой модели CIR.
Создайте RateSpec
использование intenvset
функция.
Rates = [0.025; 0.032; 0.037; 0.042]; Dates = {'Jan-1-2017'; 'Jan-1-2018'; 'Jan-1-2019'; 'Jan-1-2020'; 'Jan-1-2021'}; ValuationDate = 'Jan-1-2016'; EndDates = Dates(2:end)'; Compounding = 1; RateSpec = intenvset('ValuationDate', ValuationDate, 'StartDates', ValuationDate, 'EndDates',EndDates,'Rates', Rates, 'Compounding', Compounding);
Создайте CIR
дерево.
NumPeriods = length(EndDates);
Alpha = 0.03;
Theta = 0.02;
Sigma = 0.1;
Maturity = '01-Jan-2019';
CIRTimeSpec = cirtimespec(ValuationDate, Maturity, NumPeriods);
CIRVolSpec = cirvolspec(Sigma, Alpha, Theta);
CIRT = cirtree(CIRVolSpec, RateSpec, CIRTimeSpec)
CIRT = struct with fields:
FinObj: 'CIRFwdTree'
VolSpec: [1x1 struct]
TimeSpec: [1x1 struct]
RateSpec: [1x1 struct]
tObs: [0 0.7500 1.5000 2.2500]
dObs: [736330 736604 736878 737152]
FwdTree: {[1.0187] [1.0338 1.0188 1.0083] [1x5 double] [1x7 double]}
Connect: {[3x1 double] [3x3 double] [3x5 double]}
Probs: {[3x1 double] [3x3 double] [3x5 double]}
Определите вызываемую связь.
BondSettlement = 'Jan-1-2016'; BondMaturity = 'Jan-1-2020'; CouponRate = 0.035; Period = 1; OptSpec = 'call'; Strike = 100; Face = { {'Jan-1-2018' 100; 'Jan-1-2019' 70; 'Jan-1-2020' 50}; }; ExerciseDates = {'Jan-1-2018' '01-Jan-2019'};
Вычислите OAS для вызываемой амортизирующей связи с помощью дерева CIR.
Price = 99; BondType = 'amortizing'; OAS = oasbycir(CIRT, Price, CouponRate, BondSettlement, Maturity,... OptSpec, Strike, ExerciseDates, 'Period', Period, 'Face', Face,'BondType', BondType)
OAS = 80.4801
CIRTree
- Древовидная структура процентной ставкиДревовидная структура процентной ставки, заданная при помощи cirtree
.
Типы данных: struct
Price
- Рыночные цены облигаций с встраиваемыми опциямиРыночные цены облигаций со встроенными опциями, указанные как NINST
-by- 1
вектор.
Типы данных: double
CouponRate
- Ставка купона по облигациям Ставка купона на облигацию, заданная как NINST
-by- 1
десятичный годовой темп.
Типы данных: double
Settle
- Дата расчетаДата расчета для опции облигации, заданная как NINST
-by- 1
вектор серийных номеров дат, векторов символов даты, строковых массивов или массивов datetime.
Примечание
The Settle
дата для каждой облигации с встроенной опцией устанавливается равной ValuationDate
дерева CIR. Аргумент в пользу Settle
игнорируется.
Типы данных: double
| char
| string
| datetime
Maturity
- Дата погашенияДата зрелости, заданная как NINST
-by- 1
вектор серийных номеров дат, векторов символов даты, строковых массивов или массивов datetime.
Типы данных: double
| char
| string
| datetime
OptSpec
- Определение опции 'call'
или 'put'
| массив ячеек векторов символов со значениями 'call'
или 'put'
| строковые массивы со значениями "call"
или "put"
Определение опции, заданное как NINST
-by- 1
массив ячеек из векторов символов или строковых массивов со значениями 'call'
или 'put'
.
Типы данных: char
| cell
| string
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
использование серийных номеров дат, векторов символов даты, строковых массивов или массивов datetime зависимости от типа опции:
Для европейской опции используйте NINST
-by- 1
вектор дат. Для европейской опции существует только один ExerciseDates
на дату истечения срока действия опции.
Для опции Бермудских островов используйте NINST
-by- NSTRIKES
вектор дат.
Для американской опции используйте NINST
-by- 2
вектор контуров дат упражнения. Опция может быть использована в любую дату между или включая пару дат в этой строке. Если только один не - NaN
указана дата, или если ExerciseDates
является NINST
-by- 1
вектор, опция может быть реализована между ValuationDate
дерева запасов и одной перечисленной ExerciseDates
.
.
Типы данных: double
| char
| string
| datetime
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
OAS = oasbycir(CIRTree,Price,CouponRate,Settle,Maturity,OptSpec,Strike,ExerciseDates,'Period',4)
'AmericanOpt'
- Тип опции0
Европейский/Бермудские острова (по умолчанию) | целое число со значениями 0
или 1
Тип опции, заданный как разделенная разделенными запятой парами, состоящая из 'AmericanOpt'
и a 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
| string
| datetime
'FirstCouponDate'
- Нерегулярная дата первого купонаНерегулярная дата первого купона, заданная как разделенная разделенными запятой парами, состоящая из 'FirstCouponDate'
и a NINST
-by- 1
вектор с серийными номерами дат, векторами символов дат, строковых массивов или массивов datetime.
Когда FirstCouponDate
и LastCouponDate
оба заданы, FirstCouponDate
имеет приоритет при определении структуры купонного платежа. Если вы не задаете FirstCouponDate
Даты платежа денежного потока определяются из других входов.
Типы данных: double
| char
| string
| datetime
'LastCouponDate'
- Нерегулярная дата последнего купонаНерегулярная дата последнего купона, заданная как разделенная разделенными запятой парами, состоящая из 'LastCouponDate'
и a NINST
-by- 1
вектор с использованием серийных номеров дат, векторов символов дат, строковых массивов или массивов данных времени.
При отсутствии заданного FirstCouponDate
, a заданное LastCouponDate
определяет купонную структуру облигации. Купонная структура облигации усечена в LastCouponDate
, независимо от того, где он падает, и сопровождается только датой движения денежных средств по облигации со сроком погашения. Если вы не задаете LastCouponDate
Даты платежа денежного потока определяются из других входов.
Типы данных: char
| double
| string
| datetime
'StartDate'
- Форвардная дата начала платежейДата начала платежей (дата, с которой рассматривается денежный поток облигаций), заданная как разделенная разделенными запятой парами, состоящая из 'StartDate'
и a NINST
-by- 1
вектор с последовательными номерами дат, векторами символов даты, строковыми массивами или массивом datetime.
Если вы не задаете StartDate
, дата начала вступления в силу является Settle
дата.
Типы данных: char
| double
| string
| datetime
'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
OAS
- Скорректированный по опциям спредСкорректированный по опциям спред, возвращенный как NINST
-by- 1
вектор.
OAD
- Скорректированная длительность опцииСкорректированная по опции длительность, возвращенная как NINST
-by- 1
вектор.
OAC
- Регулируемая опция выпуклостиРегулируемая опция выпуклости, возвращенная как NINST
-by- 1
вектор.
Облигация с ванильным купоном представляет собой залог, представляющий собой обязательство погасить заемную сумму в установленный срок и производить периодические выплаты процентов до этого времени.
Эмитент облигации производит периодические выплаты процентов до погашения облигации. При погашении эмитент выплачивает держателю облигации основную сумму задолженности ( номинальное значение) и последний процентный платеж. Ванильная облигация с встроенной опцией - это там, где опционный контракт имеет базовый актив ванильной облигации.
Повышающая и понижающая облигация является долговым обеспечением с заранее определенной купонной структурой с течением времени.
С помощью этих инструментов купоны увеличиваются (повышаются) или уменьшаются (снижаются) в определенные моменты времени в течение срока действия облигации. Шаговые купонные облигации могут иметь опции функции (вызов и размещение).
Облигация тонущего фонда - купонная облигация с обеспечением тонущего фонда.
Данное положение обязывает эмитента амортизировать фрагменты основного долга до погашения, что влияет на цены облигаций с момента изменения основного погашения. Это означает, что инвесторы получают купон и фрагмент основного долга, выплаченную с течением времени. Эти виды облигаций снижают кредитный риск, поскольку это снижает вероятность того, что инвесторы не получат основной платеж на срок погашения.
Облигация может иметь результирующий фонд опции условием, позволяющим эмитенту погасить обязательство по потопляющему фонду либо путем покупки облигаций, подлежащих погашению с рынка, либо путем вызова облигации через релейный фонд, в зависимости от того, что дешевле. Если процентные ставки высоки, то эмитент выкупает с рынка сумму требования облигаций, так как облигации малы, но если процентные ставки низки (цены облигаций высокие), то скорее всего эмитент покупает облигации по цене вызова. В отличие от вызова функции, однако, если облигация имеет вызов опции результирующего фонда, эмитент обязан, а не опция, выкупить шаги выпуска, как указано. Из-за этого облигации тонущего фонда торгуются по более низкой цене, чем облигации нетонущего фонда.
Амортизация callable или puttable облигаций работает в соответствии с запланированным Face
.
Амортизирующая вызываемая облигация дает эмитенту право перезвонить облигации, но вместо оплаты Face
сумма в срок погашает часть основной суммы вместе с купонными платежами. Амортизирующая облигация, подлежащая оплате, возвращает часть основной суммы вместе с купонными платежами и предоставляет держателю облигации право продать облигацию эмитенту.
[1] Кокс, Дж., Ингерсолл, Дж., и С. Росс. «Теория срочной структуры процентных ставок». Эконометрика. Том 53, 1985.
[2] Бриго, Д. и Ф. Меркурио. Модели процентных ставок - теория и практика. Springer Finance, 2006.
[3] Хирса, А. Вычислительные методы в финансах. CRC Press, 2012.
[4] Навалка, С., Сото, Г., и Н. Беляева. Динамическое моделирование структуры термина. Уайли, 2007.
[5] Нельсон, Д. и К. Рамасвами. Простые биномиальные процессы как диффузионные приближения в финансовых моделях. Обзор финансовых исследований. Vol 3. 1990, стр 393–430.
bondbycir
| capbycir
| cfbycir
| fixedbycir
| floatbycir
| floorbycir
| optbndbycir
| optembndbycir
| optemfloatbycir
| optfloatbycir
| rangefloatbycir
| swapbycir
| swaptionbycir
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.