LiborMarketModel

Создайте модель рынка LIBOR

Описание

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

В частности, lognormal LMM задает следующее диффузионное уравнение для каждой прямой скорости

dFi(t)Fi=μidt+σi(t)dWi

где:

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

dWi(t)dWj(t)=ρij

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

μi(t)=σi(t)j=q(t)iτjρi,jσj(t)Fj(t)1+τjFj(t)

где:

ρi,j представляет входному параметру Correlation.

σj(t) представляет входному параметру VolFunc.

Fj(t) представляет расчету входного параметра для ZeroCurve.

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

q(t) является индексом, заданным отношением

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

и числитель Spot LIBOR определяется как

B(t)=P(t,Tq(t))n=0q(t)1(1+τnFn(Tn))

Создание

Описание

пример

LMM = LiborMarketModel(ZeroCurve,VolFunc,Correlation) создает LiborMarketModel (LMM) объект используя необходимые аргументы для ZeroCurve, VolFunc, Correlation.

пример

LMM = LiborMarketModel(___,Name,Value) устанавливает свойства с помощью пар "имя-значение". Для примера, LMM = LiborMarketModel(irdc,VolFunc,Correlation,'Period',1). Можно задать несколько пары "имя-значение". Заключайте каждое имя свойства в одинарные кавычки.

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

расширить все

Нулевая кривая, используемая для развития пути будущих процентных ставок, заданная как выход из IRDataCurve или RateSpec который получен из intenvset. The ZeroCurve вход устанавливает свойство ZeroCurve.

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

Функция волатильности, заданная с помощью NumRates-by- 1 Cell-массив указателей на функцию и устанавливает свойство VolFunc. Каждый указатель на функцию должен занимать время в качестве входов и, возвращать скалярную волатильность.

Примечание

Количество скоростей для моделирования с использованием simTermStructs функция определяется размером VolFunc и Correlation входы, которые должны быть последовательными. Это может быть любое значение и, вместе с Period свойство определяет виды и количество моделируемых скоростей. Для примера, если Period установлено в 4 (ежеквартально) и VolFunc имеет длину 120 и Correlation имеет размер 120-by- 120, затем 120 моделируются квартальные ставки. Другими словами, моделируется 30 лет кривой выражения (0-3mos, 3mos-6mos, 6mos-9mos и так далее, вплоть до 30 лет). Поэтому, если VolFunc и Correlation иметь размер 120, выход вызова на simTermStructs is (nPeriods+ 1) -by- 121-by- nTrials.

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

Матрица корреляции, заданная с помощью NumRates-by- NumRates матрица корреляции и устанавливает свойство Correlation.

Примечание

Количество скоростей для моделирования с использованием simTermStructs функция определяется размером VolFunc и Correlation входы, которые должны быть последовательными. Это может быть любое значение и, вместе с Period свойство определяет виды и количество моделируемых скоростей. Для примера, если Period установлено в 4 (ежеквартально) и VolFunc имеет длину 120 и Correlation имеет размер 120-by- 120, затем 120 моделируются квартальные ставки. Другими словами, моделируется 30 лет кривой выражения (0-3mos, 3mos-6mos, 6mos-9mos и так далее, вплоть до 30 лет). Поэтому, если VolFunc и Correlation иметь размер 120, выход вызова на simTermStructs is (nPeriods+ 1) -by- 121-by- nTrials.

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

Свойства

расширить все

Нулевая кривая, заданная как выход из IRDataCurve или RateSpec который получен из intenvset.

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

Функция волатильности, заданная с помощью NumRates-by- 1 cell-массив указателей на функцию. Каждый указатель на функцию должен занимать время в качестве входов и, возвращать скалярную волатильность.

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

Матрица корреляции, заданная с помощью NumRates-by- NumRates матрица корреляции.

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

Количество брауновских факторов, заданное в виде числового значения. Значение по умолчанию является NaN, где количество факторов равно количеству ставок.

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

Период форвардных ставок, в частности количество ставок в год, указанное в виде числового значения 1, 2, 4, или 12. Значение по умолчанию 2, что означает, что скорости вперед разнесены на 0, .5, 1, 1.5и так далее.

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

Функции объекта

simTermStructsСимулируйте терминологические структуры для модели рынка LIBOR

Примеры

свернуть все

Создайте LMM объект с использованием IRDataCurve.

Settle = datenum('15-Dec-2007');
CurveTimes = [1:5 7 10 20]';
ZeroRates = [.01 .018 .024 .029 .033 .034 .035 .034]';
CurveDates = daysadd(Settle,360*CurveTimes,1);

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

LMMVolFunc = @(a,t) (a(1)*t + a(2)).*exp(-a(3)*t) + a(4);
LMMVolParams = [.3 -.02 .7 .14];
  
numRates = 20;
VolFunc(1:numRates,1) = {@(t) LMMVolFunc(LMMVolParams,t)};
  
Beta = .08;
CorrFunc = @(i,j,Beta) exp(-Beta*abs(i-j));
Correlation = CorrFunc(meshgrid(1:numRates)',meshgrid(1:numRates),Beta);
  
LMM = LiborMarketModel(irdc,VolFunc,Correlation,'Period',1)
LMM = 
  LiborMarketModel with properties:

       ZeroCurve: [1x1 IRDataCurve]
    VolFunctions: {20x1 cell}
     Correlation: [20x20 double]
      NumFactors: NaN
          Period: 1

Симулируйте терминологические структуры для заданного LMM объект.

[ZeroRates, ForwardRates] = simTermStructs(LMM, 10,'nTrials',100);

Создайте LMM объект с использованием RateSpec.

Settle = datenum('15-Dec-2007');
CurveTimes = [1:5 7 10 20]';
ZeroRates = [.01 .018 .024 .029 .033 .034 .035 .034]';
CurveDates = daysadd(Settle,360*CurveTimes,1);

RateSpec = intenvset('Rates',ZeroRates,'EndDates',CurveDates,'StartDate',Settle);

LMMVolFunc = @(a,t) (a(1)*t + a(2)).*exp(-a(3)*t) + a(4);
LMMVolParams = [.3 -.02 .7 .14];
  
numRates = 20;
VolFunc(1:numRates,1) = {@(t) LMMVolFunc(LMMVolParams,t)};
  
Beta = .08;
CorrFunc = @(i,j,Beta) exp(-Beta*abs(i-j));
Correlation = CorrFunc(meshgrid(1:numRates)',meshgrid(1:numRates),Beta);
  
LMM = LiborMarketModel(RateSpec,VolFunc,Correlation,'Period',1)
LMM = 
  LiborMarketModel with properties:

       ZeroCurve: [1x1 IRDataCurve]
    VolFunctions: {20x1 cell}
     Correlation: [20x20 double]
      NumFactors: NaN
          Period: 1

Симулируйте терминологические структуры для заданного LMM объект.

[ZeroRates, ForwardRates] = simTermStructs(LMM, 10,'nTrials',100);

Подробнее о

расширить все

Ссылки

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

Введенный в R2013a