Цена европейской колл опции на облигации с использованием модели Black
добавляет необязательные входные параметры для CallPrice
= bkcall(___,Period
,Basis
,EndMonthRule
,InterpMethod
,StrikeConvention
)Period
, Basis
, EndMonthRule
, InterpMethod
, и StrikeConvention
.
Этот пример показов, как оценить вызов Европейской опции на облигации с помощью модели Black. Рассмотрим европейский вызов опции по облигации со сроком погашения 9,75 лет. Базовая облигация имеет чистую цену $935, номинальное значение $1000, и платит 10% полугодовые купоны. Поскольку срок погашения облигаций истекает через 9,75 лет, купон в размере $50 будет выплачен через 3 месяца и снова через 9 месяцев. Кроме того, предположим, что годовая волатильность цены форвардной облигации составляет 9%. Кроме того, предположим, что срок действия опции истекает через 10 месяцев и составляет 1000 долларов США, и что в годовом исчислении ставки дисконтирования без риска на сроки 3, 9 и 10 месяцев составляют 9%, 9,5% и 10% соответственно.
% specify the option information Settle = '15-Mar-2004'; Expiry = '15-Jan-2005'; % 10 months from settlement Strike = 1000; Sigma = 0.09; Convention = [0 1]'; % specify the interest-rate environment ZeroData = [datenum('15-Jun-2004') 0.09 -1; % 3 months datenum('15-Dec-2004') 0.095 -1; % 9 months datenum(Expiry) 0.10 -1]; % 10 months % specify the bond information CleanPrice = 935; CouponRate = 0.1; Maturity = '15-Dec-2013'; % 9.75 years from settlement Face = 1000; BondData = [CleanPrice CouponRate datenum(Maturity) Face]; Period = 2; Basis = 1; % call Black's model CallPrices = bkcall(Strike, ZeroData, Sigma, BondData, Settle,... Expiry, Period, Basis, [], [], Convention)
CallPrices = 2×1
9.4873
7.9686
Когда цена доставки является грязной ценой (Convention
= 0
), значение опции вызова составляет $9,49. Когда цена доставки является чистой ценой (Convention
= 1
), значение опции вызова составляет $7,97.
Strike
- Цена стримаСтрайк-цена, заданная в виде скалярного числа или NOPT
-by- 1
вектор страйк-цен.
Типы данных: double
ZeroData
- Информация о нулевой ставке, используемая для дисконтирования будущих денежных потоковИнформация о нулевой ставке, используемая для дисконтирования будущих денежных потоков, заданная с помощью двухколоночной (опционально трехколоночной) матрицы, содержащей информацию о нулевой (спотовой) ставке, используемую для дисконтирования будущих денежных потоков.
Столбец 1 - Дата серийного погашения, связанная с нулевой ставкой во втором столбце.
Столбец 2 - Аннулированные нулевые ставки в десятичной форме, соответствующие дисконтированию денежных потоков, происходящих в дату, указанную в первом столбце. Все даты должны происходить после Settle
(даты должны соответствовать будущим инвестиционным горизонтам) и должны быть в порядке возрастания.
Столбец 3 - (необязательно) Годовая частота компаундирования. Значения 1
(ежегодно), 2
(полугодовой, по умолчанию), 3
(три раза в год), 4
(ежеквартально), 6
(раз в два месяца), 12
(ежемесячно), и -1
(непрерывно).
Если денежные потоки происходят после дат, охватываемых ZeroData
, входы нуля кривой, соответствующая нулевая ставка для дисконтирования таких денежных потоков получены путем экстраполяции ближайшей ставки на кривой (то есть, если денежный поток происходит до первой или после последней даты на кривой вход нуля, принимается плоская кривая).
В сложение можно использовать метод getZeroRates
для IRDataCurve
объект со Dates
свойство для создания вектора дат и данных, приемлемых для bkcall
. Для получения дополнительной информации смотрите Преобразование объекта IRDataCurve или IRFunctionCurve.
Типы данных: double
Sigma
- Годовая волатильность цен, требуемая моделью BlackГодовые волатильности цен, требуемые моделью Black, заданные в виде скаляра или NOPT
-by- 1
вектор.
Типы данных: struct
BondData
- Характеристики базовых облигаций Характеристики базовых связей, заданные как вектор-строка с тремя (опционально четырьмя) столбцами или NOPT
-by- 3
(опционально NOPT
-by- 4
) матрица, определяющая характеристики базовых облигаций в форме:
[CleanPrice CouponRate Maturity Face]
CleanPrice
- цена без учета начисленных процентов.
CouponRate
- десятичная ставка купона.
Maturity
- дата погашения облигации в формате последовательного номера даты.
Face
- номинальное значение облигации. Если не задано, номинальное значение принимается равным 100.
Типы данных: double
Settle
- Дата расчетаДата расчета, заданная как серийный номер даты или вектор символов даты. Settle
также представляет дату начальной ссылки для кривого входа нуля.
Типы данных: char
| double
Expiry
- Дата погашения опции Дата зрелости опции, заданная в виде скаляра или NOPT
-by- 1
вектор последовательных номеров дат или массив ячеек векторов символов дат.
Типы данных: char
| cell
| double
Period
- Количество купонов в год для базовой облигации2
(полугодовой) (по умолчанию) | целое число со значением 0
, 1
, 2
, 3
, 4
, 6
, или 12
(Необязательно) Количество купонов в год для базовой облигации, заданное в виде целого числа с поддерживаемыми значениями 0
, 1
, 2
, 3
, 4
, 6
, и 12
.
Типы данных: double
Basis
- Основа базовых облигаций для подсчета дней0
(фактический/фактический) (по умолчанию) | целое число от 0
на 13
(Необязательно) Дневной базис базовых облигаций, заданный как скаляр или NOPT
-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]
(Необязательно) Флаг правила в конце месяца, заданный как скаляр или NOPT
-by- 1
вектор правил конца месяца.
0
= Игнорируйте правило, означающее, что дата выплаты купона по облигации всегда совпадает с числовым днем месяца.
1
= Установите правило, означающее, что дата выплаты купона по облигации всегда является последним фактическим днем месяца.
Типы данных: logical
InterpMethod
- Метод интерполяции нулевой кривой1
(линейная интерполяция) (по умолчанию) | целое число со значением 0
, 1
, или 2
(Необязательно) Метод интерполяции нулевой кривой для денежных потоков, которые не приходятся на дату, найденную в ZeroData
кривая пятна, заданная как скалярное целое число. InterpMethod
используется для интерполяции соответствующей нулевой ставки дисконтирования. Доступными методами интерполяции являются (0
) ближайший, (1
) линейный, и (2
) кубический. Для получения дополнительной информации о методах интерполяции см. interp1
.
Типы данных: double
StrikeConvention
- Соглашение о цене доставки по опционному контракту0
(по умолчанию) | целое число со значением 0
или 1
(Необязательно) Соглашение о цене доставки по опционному контракту, заданное в виде скаляра или NOPT
-by- 1
вектор.
StrikeConvention = 0
(по умолчанию) определяет цену страйка как денежную (грязную) цену, выплаченную за базовую облигацию.
StrikeConvention = 1
определяет цену доставки как котируемую (чистую) цену, уплаченную за базовую облигацию. При оценке модели Блэка начисленные проценты облигации по истечении срока действия опции добавляются к входной цене стрима.
Типы данных: double
CallPrice
- Цена для европейского вызова на облигации, выведенные из модели BlackЦена для европейских вызовов опции по облигациям, выведенным из модели Black, возвращенная как NOPT
-by- 1
вектор.
[1] Hull, John C. Опции, фьючерсы и другие производные. 5-е издание, Prentice Hall, 2003, pp. 287-288, 508-515.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.