Этот пример иллюстрирует, как Toolbox™ финансовых инструментов используется для оценки европейских опционов колл ванили с использованием различных моделей капитала.
В примере сравниваются цены опционов колл с использованием модели Кокса-Росса-Рубинштейна, модели Лейзена-Реймера и закрытой формулы Блэка-Шоулза.
Рассмотрим вариант европейского колла с ценой упражнений 30 долларов 1 января 2010 года. Срок действия опции истекает 1 сентября 2010 года. Предположим, что базовая акция не дает дивидендов. Акции торгуются на уровне $25 и имеют волатильность 35% годовых. Годовая постоянно усложняемая безрисковая ставка составляет 1,11% годовых.
% Option Settle = 'Jan-01-2010'; Maturity = 'Sep-01-2010'; Strike = 30; OptSpec = 'call'; % Stock AssetPrice = 25; Sigma = .35;
StartDates = '01 Jan 2010'; EndDates = '01 Jan 2013'; Rates = 0.0111; ValuationDate = '01 Jan 2010'; Compounding = -1; RateSpec = intenvset('Compounding',Compounding,'StartDates', StartDates,... 'EndDates', EndDates, 'Rates', Rates,'ValuationDate', ValuationDate);
Предположим, мы хотим создать два сценария. Первый предполагает, что AssetPrice в настоящее время $25, опцион из денег (OTM). Второй сценарий предполагает, что опция находится в деньгах (банкомате), а потому AssetPriceATM = 30.
AssetPriceATM = 30; StockSpec = stockspec(Sigma, AssetPrice); StockSpecATM = stockspec(Sigma, AssetPriceATM);
Используйте функцию optstockbybls в инструментарии финансовых инструментов для расчета цены европейских опционов колл.
% Price the option with AssetPrice = 25 PriceBLS = optstockbybls(RateSpec, StockSpec, Settle, Maturity, OptSpec, Strike); % Price the option with AssetPrice = 30 PriceBLSATM = optstockbybls(RateSpec, StockSpecATM, Settle, Maturity, OptSpec, Strike);
% Create the time specification of the tree NumPeriods = 15; CRRTimeSpec = crrtimespec(ValuationDate, Maturity, NumPeriods); % Build the tree CRRTree = crrtree(StockSpec, RateSpec, CRRTimeSpec); CRRTreeATM = crrtree(StockSpecATM, RateSpec, CRRTimeSpec);
% Create the time specification of the tree LRTimeSpec = lrtimespec(ValuationDate, Maturity, NumPeriods); % Use the default method 'PP1' (Peizer-Pratt method 1 inversion)to build % the tree LRTree = lrtree(StockSpec, RateSpec, LRTimeSpec, Strike); LRTreeATM = lrtree(StockSpecATM, RateSpec, LRTimeSpec, Strike);
PriceCRR = optstockbycrr(CRRTree, OptSpec, Strike, Settle, Maturity); PriceCRRATM = optstockbycrr(CRRTreeATM, OptSpec, Strike, Settle, Maturity);
PriceLR = optstockbylr(LRTree, OptSpec, Strike, Settle, Maturity); PriceLRATM = optstockbylr(LRTreeATM, OptSpec, Strike, Settle, Maturity);
sprintf('PriceBLS: \t%f\nPriceCRR: \t%f\nPriceLR:\t%f\n', PriceBLS, ... PriceCRR, PriceLR)
ans =
'PriceBLS: 1.275075
PriceCRR: 1.294979
PriceLR: 1.275838
'
sprintf('\t== ATM ==\nPriceBLS ATM: \t%f\nPriceCRR ATM: \t%f\nPriceLR ATM:\t%f\n', PriceBLSATM, ... PriceCRRATM, PriceLRATM)
ans =
' == ATM ==
PriceBLS ATM: 3.497891
PriceCRR ATM: 3.553938
PriceLR ATM: 3.498571
'
В следующих таблицах сравниваются цены опционов колл с использованием моделей CRR и LR с результатами, полученными по формуле Блэка-Шоулза.
В то время как биномиальная модель CRR и модель Блэка-Шоулза сходятся по мере того, как количество временных шагов становится большим, а длина каждого шага становится небольшой, эта сходимость, за исключением денежных вариантов, является чем-то, кроме гладкой или однородной.
В таблицах ниже показано, что модель Ляйзена-Реймера уменьшает размер ошибки даже при нескольких шагах 45.
Strike = 30, Asset Price = 30
-------------------------------------
#Steps LR CRR
15 3.4986 3.5539
25 3.4981 3.5314
45 3.4980 3.5165
65 3.4979 3.5108
85 3.4979 3.5077
105 3.4979 3.5058
201 3.4979 3.5020
501 3.4979 3.4996
999 3.4979 3.4987
Strike = 30, Asset Price = 25
-------------------------------------
#Steps LR CRR
15 1.2758 1.2950
25 1.2754 1.2627
45 1.2751 1.2851
65 1.2751 1.2692
85 1.2751 1.2812
105 1.2751 1.2766
201 1.2751 1.2723
501 1.2751 1.2759
999 1.2751 1.2756
На следующих графиках показано изменение сходимости по мере увеличения числа шагов в биномиальном расчете, а также влияние сходимости на изменения цены акций. Обратите внимание, что модель Лейзена-Реймера удаляет колебания и создает оценки, близкие к модели Блэка-Шоулза, используя лишь небольшое количество шагов.
NPoints = 300; % Cox-Ross-Rubinstein NumPeriodCRR = 5 : 1 : NPoints; NbStepCRR = length(NumPeriodCRR); PriceCRR = nan(NbStepCRR, 1); PriceCRRATM = PriceCRR; for i = 1 : NbStepCRR CRRTimeSpec = crrtimespec(ValuationDate, Maturity, NumPeriodCRR(i)); CRRT = crrtree(StockSpec, RateSpec, CRRTimeSpec); PriceCRR(i) = optstockbycrr(CRRT, OptSpec, Strike,ValuationDate, Maturity) ; CRRTATM = crrtree(StockSpecATM, RateSpec, CRRTimeSpec); PriceCRRATM(i) = optstockbycrr(CRRTATM, OptSpec, Strike,ValuationDate, Maturity) ; end % Now with Leisen-Reimer NumPeriodLR = 5 : 2 : NPoints; NbStepLR = length(NumPeriodLR); PriceLR = nan(NbStepLR, 1); PriceLRATM = PriceLR; for i = 1 : NbStepLR LRTimeSpec = lrtimespec(ValuationDate, Maturity, NumPeriodLR(i)); LRT = lrtree(StockSpec, RateSpec, LRTimeSpec, Strike); PriceLR(i) = optstockbylr(LRT, OptSpec, Strike,ValuationDate, Maturity) ; LRTATM = lrtree(StockSpecATM, RateSpec, LRTimeSpec, Strike); PriceLRATM(i) = optstockbylr(LRTATM, OptSpec, Strike,ValuationDate, Maturity) ; end
Первый сценарий: вариант «Вне денежного колла»
% For Cox-Ross-Rubinstein plot(NumPeriodCRR, PriceCRR); hold on; plot(NumPeriodCRR, PriceBLS*ones(NbStepCRR,1),'Color',[0 0.9 0], 'linewidth', 1.5); % For Leisen-Reimer plot(NumPeriodLR, PriceLR, 'Color',[0.9 0 0], 'linewidth', 1.5); % Concentrate in the area of interest by clipping on the Y axis at 5x the % LR Price: YLimDelta = 5*abs(PriceLR(1) - PriceBLS); ax = gca; ax.YLim = [PriceBLS-YLimDelta PriceBLS+YLimDelta]; % Annotate Plot titleString = sprintf('\nConvergence of CRR and LR models to a BLS Solution (OTM)\nStrike = %d, Asset Price = %d', Strike , AssetPrice); title(titleString) ylabel('Option Price') xlabel('Number of Steps') legend('CRR', 'BLS', 'LR', 'Location', 'NorthEast')

Второй сценарий: В вариант вызова Money
% For Cox-Ross-Rubinstein figure; plot(NumPeriodCRR, PriceCRRATM); hold on; plot(NumPeriodCRR, PriceBLSATM*ones(NbStepCRR,1),'Color',[0 0.9 0], 'linewidth', 1.5); % For Leisen-Reimer plot(NumPeriodLR, PriceLRATM, 'Color',[0.9 0 0], 'linewidth', 1.5); % Concentrate in the area of interest by clipping on the Y axis at 5x the % LR Price: YLimDelta = 5*abs(PriceLRATM(1) - PriceBLSATM); ax = gca; ax.YLim = [PriceBLSATM-YLimDelta PriceBLSATM+YLimDelta]; % Annotate Plot titleString = sprintf('\nConvergence of CRR and LR models to a BLS Solution (ATM)\nStrike = %d, Asset Price = %d', Strike , AssetPriceATM); title(titleString) ylabel('Option Price') xlabel('Number of Steps') legend('CRR', 'BLS', 'LR', 'Location', 'NorthEast')

asianbykv | asianbylevy | asianbyls | asiansensbykv | asiansensbylevy | asiansensbyls | assetbybls | assetsensbybls | basketbyju | basketbyls | basketsensbyju | basketsensbyls | basketstockspec | basketstockspec | cashbybls | cashsensbybls | chooserbybls | gapbybls | gapsensbybls | impvbybjs | impvbyblk | impvbybls | impvbyrgw | lookbackbycvgsg | lookbackbyls | lookbacksensbycvgsg | lookbacksensbyls | maxassetbystulz | maxassetsensbystulz | minassetbystulz | minassetsensbystulz | optpricebysim | optstockbybjs | optstockbyblk | optstockbybls | optstockbyls | optstockbyrgw | optstocksensbybaw | optstocksensbybjs | optstocksensbyblk | optstocksensbybls | optstocksensbyls | optstocksensbyrgw | spreadbybjs | spreadbykirk | spreadbyls | spreadsensbybjs | spreadsensbykirk | spreadsensbyls | supersharebybls | supersharesensbybls