bkput

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

Описание

пример

PutPrice = bkput(Strike,ZeroData,Sigma,BondData,Settle,Expiry) вычисляет цены европейских опций пут с помощью модели Black.

пример

PutPrice = bkput(___,Period,Basis,EndMonthRule,InterpMethod,StrikeConvention) добавляет необязательные входные параметры для Period, Basis, EndMonthRule, InterpMethod, и StrikeConvention.

Примеры

свернуть все

В этом примере показано, как оценить европейские опции на облигации с помощью модели Black. Рассмотрим европейскую опцию по облигациям со сроком погашения 10 лет. Базовая облигация имеет чистую цену $122,82, номинальное значение $100 и платит 8% полугодовые купоны. Кроме того, предположим, что годовая волатильность выражения форвардной связи составляет 20%. Кроме того, предположим, что срок действия опции истекает через 2,25 года и имеет цену забастовки в $115, и что годовая непрерывно сложенная кривая нулевого риска (спот) является плоской на уровне 5%. Для гипотетической даты расчета 15 марта 2004 года следующий код иллюстрирует использование модели Блэка для дублирования поставленных цен в примере 22.2 ссылки Hull. В частности, он иллюстрирует, как преобразовать волатильность выражения брокера в волатильность цен, подходящую для модели Блэка.

% Specify the option information.
Settle       =  '15-Mar-2004';
Expiry       =  '15-Jun-2006';  % 2.25 years from settlement
Strike       =  115;
YieldSigma   =  0.2;
Convention   =  [0; 1];

% Specify the interest-rate environment. Since the
% zero curve is flat, interpolation into the curve always returns
% 0.05. Thus, the following curve is not unique to the solution.
ZeroData     = [datenum('15-Jun-2004') 0.05   -1;
                datenum('15-Dec-2004') 0.05   -1;
                datenum(Expiry)        0.05   -1];

% Specify the bond information.
CleanPrice   =  122.82;
CouponRate   =  0.08;
Maturity     = '15-Mar-2014';  % 10 years from settlement
Face         =  100;
BondData     = [CleanPrice CouponRate datenum(Maturity) Face];
Period       =  2;  % semiannual coupons
Basis        =  1;  % 30/360 day-count basis

% Convert a broker's yield volatility quote to a price volatility 
% required by Black's model. To duplicate Example 22.2 in Hull, 
% first compute the periodic (semiannual) yield to maturity from 
% the clean bond price.
Yield  = bndyield(CleanPrice, CouponRate, Settle, Maturity,... 
Period, Basis);

% Compute the duration of the bond at option expiration. Most       
% fixed-income sensitivity analyses use the modified duration      
% statistic to examine the impact of small changes in periodic         
% yields on bond prices. However, Hull's example operates in        
% continuous time (annualized instantaneous volatilities and 
% continuously compounded zero yields for discounting coupons). 
% To duplicate Hull's results, use the second output of BNDDURY, 
% the Macaulay duration.
[Modified, Macaulay] = bnddury(Yield, CouponRate, Expiry,... 
Maturity, Period, Basis);

% Convert the yield-to-maturity from a periodic to a 
% continuous yield.
Yield  = Period .* log(1 + Yield./Period);

% Convert the yield volatility to a price volatility via 
% Hull's Equation 22.6 (page 514).
PriceSigma = Macaulay .* Yield .* YieldSigma;

% Finally, call Black's model. 
PutPrices  = bkput(Strike, ZeroData, PriceSigma, BondData,... 
Settle, Expiry, Period, Basis, [], [], Convention)
PutPrices = 2×1

    1.7838
    2.4071

Когда цена доставки является грязной ценой (Convention = 0), значение опции вызова составляет 1,78 $. Когда цена доставки является чистой ценой (Convention = 1), значение опции вызова составляет $2.41.

Входные параметры

свернуть все

Страйк-цена, заданная в виде скалярного числа или NOPT-by- 1 вектор страйк-цен.

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

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

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

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

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

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

В сложение можно использовать метод getZeroRates для IRDataCurve объект со Dates свойство для создания вектора дат и данных, приемлемых для bkput. Для получения дополнительной информации смотрите Преобразование объекта 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