bkcall

Цена европейской колл опции на облигации с использованием модели Black

Описание

пример

CallPrice = bkcall(Strike,ZeroData,Sigma,BondData,Settle,Expiry) вычисляет цены на европейские опции вызова с помощью модели Black's.

пример

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-by- 1 вектор страйк-цен.

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

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

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

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

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

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

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

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

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

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

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

[CleanPrice CouponRate Maturity Face]

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

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

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

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

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

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

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

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

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

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

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

(Необязательно) Дневной базис базовых облигаций, заданный как скаляр или 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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Ссылки

[1] Hull, John C. Опции, фьючерсы и другие производные. 5-е издание, Prentice Hall, 2003, pp. 287-288, 508-515.

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