LiborMarketModel

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

Описание

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

А именно, логарифмически нормальный LMM задает следующее уравнение диффузии для каждого форвардного курса

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

где:

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

dWi(t)dWj(t)=ρij

LMM связывает дрейфы форвардных курсов на основе аргументов без арбитражей. А именно, под Пятном мера 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 th форвардный курс

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

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

и Пятно счетные деньги LIBOR задано как

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

Создание

Синтаксис

LMM = LiborMarketModel(ZeroCurve,VolFunc,Correlation)
LMM = LiborMarketModel(___,Name,Value)

Описание

пример

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

пример

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

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

развернуть все

Кривая нулевой ширины раньше развивала путь уровней будущего права, заданных как вывод от IRDataCurve или RateSpec, который получен из intenvset. Вход 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 (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 (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] Brigo, D. и Ф. Меркурио. Модели процентной ставки - теория и практика. Финансы Спрингера, 2006.

Введенный в R2013a