exponenta event banner

Ценовые свопции с моделями процентных ставок с использованием моделирования

Введение

В этом примере показана оценка европейских свопционов с использованием моделей процентных ставок в Toolbox™ финансовых инструментов. В частности, однофакторная модель Халла-Уайта, линейная гауссова двухфакторная модель и рыночная модель LIBOR калибруются по рыночным данным, а затем используются для генерации путей процентных ставок с использованием моделирования Монте-Карло.

В следующих разделах устанавливаются данные, которые затем используются с примерами для моделирования путей процентных ставок с использованием однофакторной модели корпуса белого, моделирования путей процентных ставок с использованием линейной гауссовской двухфакторной модели и моделирования путей процентных ставок с использованием рыночной модели LIBOR:

Построение нулевой кривой

В этом примере показано, как использовать ZeroRates для нулевой кривой, которая жестко закодирована. Можно также создать нулевую кривую путем начальной загрузки нулевой кривой из рыночных данных (например, депозитов, фьючерсов/форвардов и свопов).

Жестко закодированные данные для нулевой кривой определяются как:

Settle = datenum('21-Jul-2008');

% Zero Curve
CurveDates = daysadd(Settle,360*([1 3 5 7 10 20]),1);
ZeroRates = [1.9 2.6 3.1 3.5 4 4.3]'/100;

plot(CurveDates,ZeroRates)
datetick
title(['Zero Curve for ' datestr(Settle)]);

Figure contains an axes. The axes with title Zero Curve for 21-Jul-2008 contains an object of type line.

Построение IRCurve объект.

irdc = IRDataCurve('Zero',Settle,CurveDates,ZeroRates);

Создать RateSpec.

RateSpec = intenvset('Rates',ZeroRates,'EndDates',CurveDates,'StartDate',Settle)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 2
             Disc: [6x1 double]
            Rates: [6x1 double]
         EndTimes: [6x1 double]
       StartTimes: [6x1 double]
         EndDates: [6x1 double]
       StartDates: 733610
    ValuationDate: 733610
            Basis: 0
     EndMonthRule: 1

Определение параметров свопциона

В то время как моделирование Монте-Карло обычно используется для оценки более сложных деривативов (например, бермудских свопционов), в этом примере цена европейского свопциона рассчитывается с датой исполнения пять лет и базовым свопом пять лет.

InstrumentExerciseDate = datenum('21-Jul-2013');
InstrumentMaturity = datenum('21-Jul-2018');
InstrumentStrike = .045;

Вычисление модели черного и матрицы волатильности свопциона

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

SwaptionBlackVol = [22 21 19 17 15 13 12
    21 19 17 16 15 13 11
    20 18 16 15 14 12 11
    19 17 15 14 13 12 10
    18 16 14 13 12 11 10
    15 14 13 12 12 11 10
    13 13 12 11 11 10 9]/100;
ExerciseDates = [1:5 7 10];
Tenors = [1:5 7 10];

EurExDatesFull = repmat(daysadd(Settle,ExerciseDates*360,1)',...
    length(Tenors),1);
EurMatFull = reshape(daysadd(EurExDatesFull,...
    repmat(360*Tenors,1,length(ExerciseDates)),1),size(EurExDatesFull));

Выбор калибровочных приборов

Выбор приборов для калибровки модели является одной из задач калибровки. Для бермудских свопционов типично откалибровать к европейским свопционам, которые являются совместимыми с бермудским свопционом, который должен быть оценен. В этом случае при калибровке используются все свопционы, имеющие основной тенор, который созревает до наступления срока свопциона, который должен быть оценен (21-Jul-2018).

% Find the swaptions that expire on or before the maturity date of the
% sample swaption
relidx = find(EurMatFull <= InstrumentMaturity);

Расчет цен свопциона с использованием модели черного

В этом примере показано, как вычислять цены свопциона с использованием модели черного. Затем цены свопциона используются для сравнения прогнозируемых значений модели, полученных в процессе калибровки.

Для расчета цен свопциона с использованием модели Блэка:

SwaptionBlackPrices = zeros(size(SwaptionBlackVol));
SwaptionStrike = zeros(size(SwaptionBlackVol));

for iSwaption=1:length(ExerciseDates)
    for iTenor=1:length(Tenors)
        [~,SwaptionStrike(iTenor,iSwaption)] = swapbyzero(RateSpec,[NaN 0], Settle, EurMatFull(iTenor,iSwaption),...
            'StartDate',EurExDatesFull(iTenor,iSwaption),'LegReset',[1 1]);
        SwaptionBlackPrices(iTenor,iSwaption) = swaptionbyblk(RateSpec, 'call', SwaptionStrike(iTenor,iSwaption),Settle, ...
            EurExDatesFull(iTenor,iSwaption), EurMatFull(iTenor,iSwaption), SwaptionBlackVol(iTenor,iSwaption));
    end
end

Определение параметров моделирования

В этом примере показано, как использовать simTermStructs метод с HullWhite1F, LinearGaussian2F, и LiborMarketModel объекты.

Демонстрация с использованием simTermStructs метод с HullWhite1F, LinearGaussian2F, и LiborMarketModel используйте следующие параметры моделирования:

nPeriods = 5;
DeltaTime = 1;
nTrials = 1000;

Tenor = (1:10)';

SimDates = daysadd(Settle,360*DeltaTime*(0:nPeriods),1)
SimTimes = diff(yearfrac(SimDates(1),SimDates))

% For 1 year periods and an evenly spaced tenor, the exercise row will be
% the 5th row and the swaption maturity will be the 5th column
exRow = 5;
endCol = 5;
SimDates =

      733610
      733975
      734340
      734705
      735071
      735436


SimTimes =

    1.0000
    1.0000
    1.0000
    1.0027
    1.0000

Моделирование путей процентных ставок с использованием однофакторной модели «корпус-белый»

В этом примере показано, как моделировать пути процентных ставок с использованием однофакторной модели Халл-Уайт. Перед началом этого примера, в котором используется HullWhite1F убедитесь, что данные настроены, как описано в:

Однофакторная модель Халл-Уайт описывает эволюцию короткой скорости и задается с использованием нулевой кривой, параметров альфа и сигма для уравнения

dr = [start( t) a (t) r] dt + (t) dW

где:

dr - изменение краткосрочной процентной ставки за небольшой интервал, dt.

r - краткосрочная процентная ставка.

Λ (t) - это функция времени, определяющая среднее направление, в котором движется r, выбранное таким образом, что движения в r согласуются с сегодняшней кривой нулевой купонной доходности.

α - средняя скорость реверсии.

dt - небольшое изменение во времени.

λ - ежегодное стандартное отклонение короткой скорости.

W - броуновское движение.

Модель Халл-Уайт калибруется с помощью функции swaptionbyhw, который создает триномиальное дерево для оценки свопционов. Калибровка состоит из минимизации разницы между наблюдаемыми рыночными ценами (рассчитанными выше с использованием матрицы предполагаемой волатильности свопциона Black, см. Расчет модели черного и матрицы волатильности свопциона) и прогнозируемыми ценами модели.

В этом примере функция Optimization Toolbox™ lsqnonlin используется для поиска набора параметров, который минимизирует разницу между наблюдаемыми и прогнозируемыми значениями. Однако могут быть подходящими другие подходы (например, смоделированный отжиг). В переменных задаются начальные параметры и ограничения для α и λ x0, lb, и ub; они также могут варьироваться в зависимости от конкретного подхода к калибровке.

Калибровка набора параметров, минимизирующих разницу между наблюдаемыми и прогнозируемыми значениями с помощью swaptionbyhw и lsqnonlin.

TimeSpec = hwtimespec(Settle,daysadd(Settle,360*(1:11),1), 2);
HW1Fobjfun = @(x) SwaptionBlackPrices(relidx) - ...
    swaptionbyhw(hwtree(hwvolspec(Settle,'11-Aug-2015',x(2),'11-Aug-2015',x(1)), RateSpec, TimeSpec), 'call', SwaptionStrike(relidx),...
    EurExDatesFull(relidx), 0, EurExDatesFull(relidx), EurMatFull(relidx));
options = optimset('disp','iter','MaxFunEvals',1000,'TolFun',1e-5);

% Find the parameters that minimize the difference between the observed and
% predicted prices
x0 = [.1 .01];
lb = [0 0];
ub = [1 1];
HW1Fparams = lsqnonlin(HW1Fobjfun,x0,lb,ub,options);

HW_alpha = HW1Fparams(1)
HW_sigma = HW1Fparams(2)
                                        Norm of      First-order 
 Iteration  Func-count     f(x)          step          optimality
     0          3        0.953772                          20.5
     1          6        0.142828      0.0169199           1.53
     2          9        0.123022      0.0146705           2.31
     3         12        0.122222      0.0154098          0.482
     4         15        0.122217     0.00131297        0.00409 

Local minimum possible.

lsqnonlin stopped because the final change in the sum of squares relative to 
its initial value is less than the selected value of the function tolerance.

HW_alpha =

    0.0967


HW_sigma =

    0.0088

Создайте HullWhite1F модель с использованием HullWhite1F конструктор.

HW1F = HullWhite1F(RateSpec,HW_alpha,HW_sigma)
HW1F = 

  HullWhite1F with properties:

    ZeroCurve: [1x1 IRDataCurve]
        Alpha: @(t,V)inAlpha
        Sigma: @(t,V)inSigma

Используйте моделирование Monte Carlo для создания путей процентных ставок с помощью HullWhite1F.simTermStructs.

HW1FSimPaths = HW1F.simTermStructs(nPeriods,'NTRIALS',nTrials,...
    'DeltaTime',DeltaTime,'Tenor',Tenor,'antithetic',true);
trialIdx = 1;
figure
surf(Tenor,SimDates,HW1FSimPaths(:,:,trialIdx))
datetick y keepticks keeplimits
title(['Evolution of the Zero Curve for Trial:' num2str(trialIdx) ' of Hull White Model'])
xlabel('Tenor (Years)')

Цена европейского свопциона.

DF = exp(bsxfun(@times,-HW1FSimPaths,repmat(Tenor',[nPeriods+1 1])));
SwapRate = (1 - DF(exRow,endCol,:))./sum(bsxfun(@times,1,DF(exRow,1:endCol,:)));
PayoffValue = 100*max(SwapRate-InstrumentStrike,0).*sum(bsxfun(@times,1,DF(exRow,1:endCol,:)));
RealizedDF = prod(exp(bsxfun(@times,-HW1FSimPaths(1:exRow,1,:),SimTimes(1:exRow))),1);
HW1F_SwaptionPrice = mean(RealizedDF.*PayoffValue)
HW1F_SwaptionPrice =

    2.1839                    

Моделирование путей процентных ставок с использованием линейной гауссовской двухфакторной модели

В этом примере показано, как моделировать пути процентных ставок с использованием линейной гауссовой двухфакторной модели. Перед началом этого примера, в котором используется LinearGaussian2F убедитесь, что данные настроены, как описано в:

Линейная гауссовская двухфакторная модель (называемая G2 + + Бриго и Меркурио, см. Моделирование процентных ставок с использованием моделирования Монте-Карло) также является моделью с короткими ставками, но включает два фактора. В частности:

r (t) = x (t) + y (t) + (t)

dx (t) = a (t) x (t) dt + (t) dW1 (t), x (0) = 0

dy (t) = b (t) y (t) dt + start( t) dW2 (t), y (0) = 0

где dW1 (t) dW2 (t) = startdt - двумерное броуновское движение с корреляцией,, а "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "

Функция swaptionbylg2f используется для вычисления аналитических значений цены свопциона для параметров модели и, следовательно, может использоваться для калибровки модели. Калибровка состоит из минимизации разницы между наблюдаемыми рыночными ценами (рассчитанными выше с использованием матрицы предполагаемой волатильности свопциона Black, см. Расчет модели черного и матрицы волатильности свопциона) и прогнозируемыми ценами модели.

В этом примере подход аналогичен моделированию путей процентных ставок с использованием однофакторной модели «корпус-белый» и функции «Панель инструментов оптимизации». lsqnonlin используется для минимизации разницы между наблюдаемыми ценами свопциона и прогнозируемыми ценами свопциона. Однако другие подходы (например, смоделированный отжиг) также могут быть подходящими. В переменных задаются начальные параметры и ограничения для a, b, x0, lb, и ub; они также могут варьироваться в зависимости от конкретного подхода к калибровке.

Калибровка набора параметров, минимизирующих разницу между наблюдаемыми и прогнозируемыми значениями с помощью swaptionbylg2f и lsqnonlin.

G2PPobjfun = @(x) SwaptionBlackPrices(relidx) - swaptionbylg2f(irdc,x(1),x(2),x(3),x(4),x(5),SwaptionStrike(relidx),...
    EurExDatesFull(relidx),EurMatFull(relidx),'Reset',1);

options = optimset('disp','iter','MaxFunEvals',1000,'TolFun',1e-5);
x0 = [.2 .1 .02 .01 -.5];
lb = [0 0 0 0 -1];
ub = [1 1 1 1 1];
LG2Fparams = lsqnonlin(G2PPobjfun,x0,lb,ub,options)
                                         Norm of      First-order 
 Iteration  Func-count     f(x)          step          optimality
     0          6         12.3547                          67.6
     1         12         1.37984      0.0979743           8.59      
     2         18         1.37984       0.112847           8.59      
     3         24        0.445202      0.0282118           1.31      
     4         30        0.236746      0.0564236           3.02      
     5         36        0.134678      0.0843366           7.78      
     6         42       0.0398816       0.015084           6.34      
     7         48       0.0287731       0.038967          0.732      
     8         54       0.0273025       0.112847          0.881      
     9         60       0.0241689       0.213033           1.06      
    10         66       0.0241689       0.125602           1.06      
    11         72       0.0239103      0.0314005           9.78      
    12         78       0.0234246      0.0286685           1.21      
    13         84       0.0234246      0.0491135           1.21      
    14         90        0.023304      0.0122784           1.67      
    15         96       0.0231931      0.0245568           5.92      
    16        102       0.0230898     0.00785421          0.434      
    17        108       0.0230898      0.0245568          0.434      
    18        114        0.023083     0.00613919          0.255    

Local minimum possible.

lsqnonlin stopped because the final change in the sum of squares relative to 
its initial value is less than the selected value of the function tolerance.

LG2Fparams =

    0.5752    0.1181    0.0146    0.0119   -0.7895

Создать G2PP объект и используйте моделирование Monte Carlo для генерации путей процентных ставок с LinearGaussian2F.simTermStructs.

LG2f_a = LG2Fparams(1);
LG2f_b = LG2Fparams(2);
LG2f_sigma = LG2Fparams(3);
LG2f_eta = LG2Fparams(4);
LG2f_rho = LG2Fparams(5);

G2PP = LinearGaussian2F(RateSpec,LG2f_a,LG2f_b,LG2f_sigma,LG2f_eta,LG2f_rho);

G2PPSimPaths = G2PP.simTermStructs(nPeriods,'NTRIALS',nTrials,...
    'DeltaTime',DeltaTime,'Tenor',Tenor,'antithetic',true);

trialIdx = 1;
figure
surf(Tenor,SimDates,G2PPSimPaths(:,:,trialIdx))
datetick y keepticks keeplimits
title(['Evolution of the Zero Curve for Trial:' num2str(trialIdx) ' of G2++ Model'])
xlabel('Tenor (Years)')

Цена европейского свопциона.

DF = exp(bsxfun(@times,-G2PPSimPaths,repmat(Tenor',[nPeriods+1 1])));
SwapRate = (1 - DF(exRow,endCol,:))./sum(bsxfun(@times,1,DF(exRow,1:endCol,:)));
PayoffValue = 100*max(SwapRate-InstrumentStrike,0).*sum(bsxfun(@times,1,DF(exRow,1:endCol,:)));
RealizedDF = prod(exp(bsxfun(@times,-G2PPSimPaths(1:exRow,1,:),SimTimes(1:exRow))),1);
G2PP_SwaptionPrice = mean(RealizedDF.*PayoffValue)
G2PP_SwaptionPrice =

    2.0988

Моделирование путей процентных ставок с использованием рыночной модели LIBOR

В этом примере показано, как моделировать пути процентных ставок с использованием рыночной модели LIBOR. Перед началом этого примера, в котором используется LiborMarketModel, убедитесь, что вы настроили данные, как описано в:

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

dFi (t) Fi =

где:

W - N-мерное геометрическое броуновское движение с

dWi (t) dWj (t) = αij

LMM связывает дрейфы форвардных ставок на основе аргументов отсутствия арбитража. В частности, в рамках меры Spot LIBOR дрейфы выражаются как

pcii (t) = starti (t) ∑j=q (t) istartjαi, j (t) Fj (t) 1 + startjFj (t)

где:

starti - временная дробь, связанная с i-ой прямой скоростью

q (t) - индекс, определяемый соотношением

Tq (t) 1 < t < Tq (t)

и номер Spot LIBOR определяется как

B (t) = P (t, Tq (t)) ∏n=0q (t) 1 (1 +

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

Одной из наиболее популярных функциональных форм в литературе для волатильности является:

starti (t) = dwfi (a (Ti t) + b) ec (Ti − t) + d

где startкорректирует кривую в соответствии с волатильностью для i-ой форвардной ставки. Для этого примера все 1. Для корреляции используется следующая функциональная форма:

αi, j = e β 'i − j |

После определения функциональных форм эти параметры должны оцениваться с использованием рыночных данных. Одним из полезных приближений, первоначально разработанных Ребонато, является следующее, которое связывает волатильность черного для европейского свопциона, учитывая набор функций волатильности и корреляционную матрицу

(startα, βLFM) 2=∑i,j=α+1βwi (0) wj (0) Fi (0) Fj (0), jSα, β (0) 2∫0Tασi (t)

где:

wi (t) = (t, Ti) ∑k=α+1βτκP (t, t)

Этот расчет выполняется с использованием функции blackvolbyrebonato для вычисления аналитических значений цены свопциона для параметров модели и, следовательно, затем используется для калибровки модели. Калибровка состоит из минимизации разницы между наблюдаемой подразумеваемой волатильностью черного и прогнозируемой волатильностью черного.

В этом примере подход аналогичен моделированию путей процентных ставок с использованием однофакторной модели корпус-белый и моделированию путей процентных ставок с использованием линейной гауссовской двухфакторной модели, в которой используется панель инструментов оптимизации. lsqnonlin используется для минимизации разницы между наблюдаемыми ценами свопциона и прогнозируемыми ценами свопциона. Однако другие подходы (например, смоделированный отжиг) также могут быть подходящими. Начальные параметры и ограничения для a, b, d и β задаются в переменных x0, lb, и ub; они также могут варьироваться в зависимости от конкретного подхода к калибровке.

Калибровка набора параметров, минимизирующих разницу между наблюдаемыми и прогнозируемыми значениями с помощью blackvolbyrebonato и lsqnonlin.

nRates = 10;

CorrFunc = @(i,j,Beta) exp(-Beta*abs(i-j));

objfun = @(x) SwaptionBlackVol(relidx) - blackvolbyrebonato(RateSpec,...
    repmat({@(t) ones(size(t)).*(x(1)*t + x(2)).*exp(-x(3)*t) + x(4)},nRates-1,1),...
    CorrFunc(meshgrid(1:nRates-1)',meshgrid(1:nRates-1),x(5)),...
    EurExDatesFull(relidx),EurMatFull(relidx),'Period',1);

options = optimset('disp','iter','MaxFunEvals',1000,'TolFun',1e-5);

x0 = [.2 .05 1 .05 .2];
lb = [0 0 .5 0 .01];
ub = [1 1 2 .3 1];
LMMparams = lsqnonlin(objfun,x0,lb,ub,options)
                                        Norm of      First-order 
 Iteration  Func-count     f(x)          step          optimality
     0          6        0.156251                         0.483
     1         12      0.00870177       0.188164         0.0339      
     2         18      0.00463441       0.165527        0.00095      
     3         24      0.00331055       0.351017         0.0154      
     4         30      0.00294775      0.0892617       7.47e-05      
     5         36      0.00281565       0.385779        0.00917      
     6         42      0.00278988      0.0145632       4.15e-05      
     7         48      0.00278522       0.115042        0.00116    
Local minimum possible.

lsqnonlin stopped because the final change in the sum of squares relative to 
its initial value is less than the selected value of the function tolerance.

LMMparams =

    0.0781    0.1656    0.5121    0.0617    0.0100

Вычислить VolFunc для LMM объект.

a = LMMparams(1);
b = LMMparams(2);
c = LMMparams(3);
d = LMMparams(4);

Beta = LMMparams(5);

VolFunc = repmat({@(t) ones(size(t)).*(a*t + b).*exp(-c*t) + d},nRates-1,1);

Постройте график функции волатильности.

figure
fplot(VolFunc{1},[0 20])
title('Volatility Function')

CorrelationMatrix = CorrFunc(meshgrid(1:nRates-1)',meshgrid(1:nRates-1),Beta);

Проверьте корреляционную матрицу.

disp('Correlation Matrix')
fprintf([repmat('%1.3f ',1,length(CorrelationMatrix)) ' \n'],CorrelationMatrix)
Correlation Matrix
1.000 0.990 0.980 0.970 0.961 0.951 0.942 0.932 0.923  
0.990 1.000 0.990 0.980 0.970 0.961 0.951 0.942 0.932  
0.980 0.990 1.000 0.990 0.980 0.970 0.961 0.951 0.942  
0.970 0.980 0.990 1.000 0.990 0.980 0.970 0.961 0.951  
0.961 0.970 0.980 0.990 1.000 0.990 0.980 0.970 0.961  
0.951 0.961 0.970 0.980 0.990 1.000 0.990 0.980 0.970  
0.942 0.951 0.961 0.970 0.980 0.990 1.000 0.990 0.980  
0.932 0.942 0.951 0.961 0.970 0.980 0.990 1.000 0.990  
0.923 0.932 0.942 0.951 0.961 0.970 0.980 0.990 1.000  

Создать LMM объект и используйте моделирование Monte Carlo для генерации путей процентных ставок с LiborMarketModel.simTermStructs.

LMM = LiborMarketModel(irdc,VolFunc,CorrelationMatrix,'Period',1);

[LMMZeroRates, ForwardRates] = LMM.simTermStructs(nPeriods,'nTrials',nTrials);

trialIdx = 1;
figure
tmpPlotData = LMMZeroRates(:,:,trialIdx);
tmpPlotData(tmpPlotData == 0) = NaN;
surf(Tenor,SimDates,tmpPlotData)
title(['Evolution of the Zero Curve for Trial:' num2str(trialIdx) ' of LIBOR Market Model'])
xlabel('Tenor (Years)')

Цена европейского свопциона.

DF = exp(bsxfun(@times,-LMMZeroRates,repmat(Tenor',[nPeriods+1 1])));
SwapRate = (1 - DF(exRow,endCol,:))./sum(bsxfun(@times,1,DF(exRow,1:endCol,:)));
PayoffValue = 100*max(SwapRate-InstrumentStrike,0).*sum(bsxfun(@times,1,DF(exRow,1:endCol,:)));
RealizedDF = prod(exp(bsxfun(@times,-LMMZeroRates(2:exRow+1,1,:),SimTimes(1:exRow))),1);
LMM_SwaptionPrice = mean(RealizedDF.*PayoffValue)
LMM_SwaptionPrice =

    1.9915

Сравнение результатов моделирования процентных ставок

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

Сравните результаты расчета цены европейского свопциона с моделями процентных ставок с использованием моделирования Монте-Карло.

disp(' ')
fprintf('     # of Monte Carlo Trials: %8d\n'    , nTrials)
fprintf('     # of Time Periods/Trial: %8d\n\n'  , nPeriods)
fprintf('HW1F European Swaption Price: %8.4f\n', HW1F_SwaptionPrice)
fprintf('LG2F Europesn Swaption Price: %8.4f\n', G2PP_SwaptionPrice)
fprintf(' LMM European Swaption Price: %8.4f\n', LMM_SwaptionPrice)
 # of Monte Carlo Trials:     1000
     # of Time Periods/Trial:        5

HW1F European Swaption Price:   2.1839
LG2F Europesn Swaption Price:   2.0988
 LMM European Swaption Price:   1.9915

Ссылки

Бриго, Д. и Ф. Меркурио, Модели процентных ставок - теория и практика с улыбкой, инфляция и кредит, Springer Finance, 2006.

Андерсен, Л. и В. Питербарг, моделирование процентных ставок, Atlantic Financial Press. 2010.

Hull, J, опционы, фьючерсы и другие деривативы, Springer Finance, 2003.

Glasserman, P, Monte Carlo Methods in Financial Engineering, Prentice Hall, 2008.

Rebonato, R., K. McKay и R. White, модель рынка Sabr/Libor: ценообразование, калибровка и хеджирование для комплексных процентных деривативов, John Wiley & Sons, 2010.

См. также

| | | | | | | | | | |

Связанные темы