exponenta event banner

bkcall

Опцион ценового европейского колла по облигациям по модели Black

Описание

пример

CallPrice = bkcall(Strike,ZeroData,Sigma,BondData,Settle,Expiry) вычисляет цены европейских колл-опционов по модели Блэка.

пример

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.

Входные аргументы

свернуть все

Цена страйка, указанная как скалярное число или NOPTоколо-1 вектор ударных цен.

Типы данных: double

Информация о нулевой ставке, используемая для дисконтирования будущих денежных потоков, определяемая с помощью матрицы из двух столбцов (необязательно из трех столбцов), содержащей информацию о нулевой (спотовой) ставке, используемую для дисконтирования будущих денежных потоков.

  • Столбец 1 - Дата серийного срока, связанная с нулевой ставкой во втором столбце.

  • Столбец 2 - годовые нулевые ставки в десятичной форме, подходящие для дисконтирования денежных потоков, происходящих на дату, указанную в первом столбце. Все даты должны наступать после Settle (даты должны соответствовать будущим горизонтам инвестиций) и должны быть в порядке возрастания.

  • Колонка 3 - (факультативно) Годовая частота компаундирования. Значения: 1 (ежегодно), 2 (полугодовой, по умолчанию), 3 (три раза в год), 4 (ежеквартально), 6 (раз в два месяца), 12 (ежемесячно), и -1 (непрерывный).

Если денежные потоки происходят после дат, охватываемых ZeroData, входную нулевую кривую, соответствующую нулевую ставку для дисконтирования таких денежных потоков получают путем экстраполяции ближайшей ставки на кривой (то есть, если денежный поток происходит до первой или после последней даты на входной нулевой кривой, предполагается плоская кривая).

Кроме того, можно использовать метод getZeroRates для IRDataCurve объект с Dates свойство для создания вектора дат и данных, приемлемых для bkcall. Дополнительные сведения см. в разделе Преобразование объекта IRDataCurve или IRFфункциональCurve.

Типы данных: double

Годовые волатильности цен, требуемые моделью Black, указанные как скаляр или NOPTоколо-1 вектор.

Типы данных: struct

Характеристики нижележащих связей, указанные как вектор строки с тремя (необязательно четырьмя) столбцами или NOPTоколо-3 (необязательно NOPTоколо-4) матрица, определяющая характеристики нижележащих облигаций в виде:

[CleanPrice CouponRate Maturity Face]

  • CleanPrice - цена без учета начисленных процентов.

  • CouponRate - десятичная ставка купона.

  • Maturity - дата погашения облигации в формате номера серийной даты.

  • Face - номинальная стоимость облигации. Если не указано, номинал принимается равным 100.

Типы данных: double

Дата расчета, указанная как серийный номер даты или вектор символов даты. Settle также представляет начальную ссылочную дату для входной нулевой кривой.

Типы данных: char | double

Дата погашения опциона, указанная как скаляр или NOPTоколо-1 вектор серийных номеров дат или массив ячеек векторов символов дат.

Типы данных: char | cell | double

(Необязательно) Количество купонов в год для базовой облигации, указанное как целое число с поддерживаемыми значениями 0, 1, 2, 3, 4, 6, и 12.

Типы данных: double

(Необязательно) Основание для подсчета дней базовых связей, указанное как скаляр или NOPTоколо-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

(Необязательно) Флаг правила на конец месяца, указанный как скаляр или NOPTоколо-1 вектор правил конца месяца.

  • 0 = Игнорировать правило, означающее, что дата выплаты бонусного купона всегда совпадает с числовым днем месяца.

  • 1 = Установить правило, означающее, что дата выплаты бонусного купона всегда является последним фактическим днем месяца.

Типы данных: logical

(Необязательно) Метод интерполяции нулевой кривой для денежных потоков, которые не попадают на дату, найденную в ZeroData точечная кривая, заданная как скалярное целое число. InterpMethod используется для интерполяции соответствующей нулевой учетной ставки. Доступные методы интерполяции (0) ближайший, (1) линейный, и (2) куб. Дополнительные сведения о методах интерполяции см. в разделе interp1.

Типы данных: double

(Необязательно) Соглашение о цене страйка опционного контракта, указанное как скаляр или NOPTоколо-1 вектор.

StrikeConvention = 0 (по умолчанию) определяет цену страйка как денежную (грязную) цену, уплаченную за базовую облигацию.

StrikeConvention = 1 определяет цену страйка как приведенную (чистую) цену, уплаченную за базовую облигацию. При оценке модели Блэка начисленные проценты облигации по истечении срока опциона добавляются к входной цене страйка.

Типы данных: double

Выходные аргументы

свернуть все

Цена для европейского колл-опциона по облигациям, полученным из модели Black, возвращенная как NOPTоколо-1 вектор.

Ссылки

[1] Халл, Джон К. Опционы, фьючерсы и другие деривативы. 5-е издание, Прентис Холл, 2003, стр. 287-288, 508-515.

Представлен до R2006a