creditexposures

Вычислите кредитные риски из договорных стоимостей

Описание

пример

[exposures,exposurecpty] = creditexposures(values,counterparties) вычисляет кредитные риски контрагента из массива метки на рынок договорные стоимости OTC. Эти воздействия используются при вычислении CVA (корректировка стоимости кредита) для портфеля.

пример

[exposures,exposurecpty] = creditexposures(___,Name,Value) добавляют дополнительные аргументы значения имени.

пример

[exposures,exposurecpty,collateral] = creditexposures(___,Name,Value) вычисляет кредитные риски контрагента из массива метки на рынок договорные стоимости OTC с помощью дополнительных аргументов пары "имя-значение" для CollateralTable и Dates, collateral выходной параметр возвращен для симулированных сопутствующих сумм, доступных для контрагентов в каждую дату симуляции и по каждому сценарию.

Примеры

свернуть все

После вычисления договорных стоимостей метки на рынок для портфеля подкачек по многим сценариям вычислите кредитный риск для конкретного контрагента. Просматривайте договорные стоимости и кредитный риск в зависимости от времени.

Во-первых, загрузите данные (ccr.mat) содержа договорные стоимости метки на рынок для портфеля подкачек по многим сценариям.

load ccr.mat
% Look at one counterparty.
cpID = 4;
cpValues = squeeze(sum(values(:,swaps.Counterparty == cpID,:),2));
subplot(2,1,1)
plot(simulationDates,cpValues);
title(sprintf('Mark-to-Market Contract Values for Counterparty: %d',cpID));
datetick('x','mmmyy')
ylabel('Portfolio Value ($)')
% Compute the exposure by counterparty.
[exposures, expcpty] = creditexposures(values,swaps.Counterparty,...
'NettingID',swaps.NettingID);
% View the credit exposure over time for the counterparty.
subplot(2,1,2)
cpIdx = find(expcpty == cpID);
plot(simulationDates,squeeze(exposures(:,cpIdx,:)));
title(sprintf('Exposure for counterparty: %d',cpIdx));
datetick('x','mmmyy')
ylabel('Exposure ($)')
xlabel('Simulation Dates')

Загрузите данные (ccr.mat) содержа договорные стоимости метки на рынок для портфеля подкачек по многим сценариям.

load ccr.mat

Посмотрите на одного контрагента.

cpID = 4;
cpIdx = swaps.Counterparty == cpID;
cpValues = values(:,cpIdx,:);
plot(simulationDates,squeeze(sum(cpValues,2)));
grid on;
title(sprintf('Potential Mark-to-Market Portfolio Values for Counterparty: %d',cpID));
datetick('x','mmmyy')
ylabel('Portfolio Value ($)')

Вычислите воздействия.

netting = swaps.NettingID(cpIdx);
exposures = creditexposures(cpValues,cpID,'NettingID',netting);

Просматривайте кредитный риск в зависимости от времени для контрагента.

figure;
plot(simulationDates,squeeze(exposures));
grid on
title(sprintf('Exposure for counterparty: %d',cpID));
datetick('x','mmmyy')
ylabel('Exposure ($)')
xlabel('Simulation Dates')

Вычислите профили кредитного риска.

profilesBefore = exposureprofiles(simulationDates,exposures)
profilesBefore = struct with fields:
     Dates: [37x1 double]
        EE: [37x1 double]
       PFE: [37x1 double]
      MPFE: 2.1580e+05
     EffEE: [37x1 double]
       EPE: 2.8602e+04
    EffEPE: 4.9579e+04

Рассмотрите новую торговлю с контрагентом. В данном примере возьмите другую торговлю из исходного портфеля подкачки и "скопируйте" его для нового контрагента. Этот пример только в иллюстративных целях.

newTradeIdx = 3;
newTradeValues = values(:,newTradeIdx,:);

% Append a new trade to your existing portfolio.
cpValues = [cpValues newTradeValues];
netting = [netting; cpID];
exposures = creditexposures(cpValues,cpID,'NettingID',netting);

Вычислите новые профили кредитного риска.

profilesAfter = exposureprofiles(simulationDates,exposures)
profilesAfter = struct with fields:
     Dates: [37x1 double]
        EE: [37x1 double]
       PFE: [37x1 double]
      MPFE: 2.4689e+05
     EffEE: [37x1 double]
       EPE: 3.1609e+04
    EffEPE: 5.6178e+04

Визуализируйте ожидаемые воздействия и инкрементное воздействие новой торговли. Используйте инкрементное воздействие, чтобы вычислить инкрементный заряд корректировки стоимости кредита (CVA).

figure;
subplot(2,1,1)
plot(simulationDates,profilesBefore.EE,...
    simulationDates,profilesAfter.EE);
grid on;
legend({'EE before','EE with trade'})
datetick('x','mmmyy','keeplimits')
title('Expected Exposure before and after new trade');
ylabel('Exposure ($)')

subplot(2,1,2)
incrementalEE = profilesAfter.EE - profilesBefore.EE;
plot(simulationDates,incrementalEE);
grid on;
legend('incremental EE')
datetick('x','mmmyy','keeplimits')
ylabel('Exposure ($)')
xlabel('Simulation Dates')

Загрузите данные (ccr.mat) содержа договорные стоимости метки на рынок для портфеля подкачек по многим сценариям.

load ccr.mat

Только посмотрите на одного контрагента для этого примера.

cpID = 4;
cpIdx = swaps.Counterparty == cpID;
cpValues = values(:,cpIdx,:);

Вычислите воздействия нес обеспечением.

exposures = creditexposures(cpValues,swaps.Counterparty(cpIdx),...
'NettingID',swaps.NettingID(cpIdx));

Просматривайте кредитный риск в зависимости от времени для контрагента.

plot(simulationDates,squeeze(exposures));
expYLim = get(gca,'YLim');
title(sprintf('Exposures for Counterparty: %d',cpID));
datetick('x','mmmyy')
ylabel('Exposure ($)')
xlabel('Simulation Dates')

Добавьте сопутствующее соглашение для контрагента. 'CollateralTable' параметр является таблицей MATLAB®. Можно составить таблицы из электронных таблиц или других источников данных, в дополнение к созданию их встроенный, как замечено здесь. Для получения дополнительной информации смотрите table.

collateralVariables = {'Counterparty';'PeriodOfRisk';'Threshold';'MinimumTransfer'};
periodOfRisk = 14;
threshold = 100000;
minTransfer = 10000;
collateralTable = table(cpID,periodOfRisk,threshold,minTransfer,...
'VariableNames',collateralVariables)
collateralTable=1×4 table
    Counterparty    PeriodOfRisk    Threshold    MinimumTransfer
    ____________    ____________    _________    _______________

         4               14           1e+05           10000     

Вычислите воздействия с обеспечением.

[collatExp, collatcpty, collateral] = creditexposures(cpValues,...
    swaps.Counterparty(cpIdx),'NettingID',swaps.NettingID(cpIdx),...
    'CollateralTable',collateralTable,'Dates',simulationDates);

Постройте сопутствующие уровни и обеспеченные воздействия.

figure;
subplot(2,1,1)
plot(simulationDates,squeeze(collateral));
set(gca,'YLim',expYLim);
title(sprintf('Collateral for counterparty: %d',cpID));
datetick('x','mmmyy')
ylabel('Collateral ($)')
xlabel('Simulation Dates')

subplot(2,1,2)
plot(simulationDates,squeeze(collatExp));
set(gca,'YLim',expYLim);
title(sprintf('Collateralized Exposure for Counterparty: %d',cpID));
datetick('x','mmmyy')
ylabel('Exposure ($)')
xlabel('Simulation Dates');

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

свернуть все

Трехмерный массив симулированных текущих рыночных стоимостей портфеля контрактов, симулированных по серии дат симуляции и через многие сценарии в виде NumDates- NumContracts- NumScenarios “куб” договорных стоимостей. Каждая строка представляет различную дату симуляции, каждый столбец различный контракт, и каждая “страница” является различным сценарием от симуляции Монте-Карло.

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

Контрагенты, соответствующие каждому контракту в valuesВ виде NumContracts- вектор элемента из контрагентов. Контрагенты могут быть вектором из числовых идентификаторов или массивом ячеек имен контрагента. По умолчанию каждый контрагент принят, чтобы установить одну сетку, которая покрывает все ее контракты. Если контрагенты покрыты несколькими наборами сетки, то используйте NettingID параметр. Значение NaN (или '' в массиве ячеек), указывает, что контракт не включен ни в какой набор сетки, если в противном случае не задано NettingID. counterparties является нечувствительным к регистру и ведущим, или конечные пробелы удалены.

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [exposures,exposurecpty] = creditexposures(values,counterparties,'NettingID','10','ExposureType','Additive')

Сетка установила идентификаторы указывать, на который сетка установила каждый контракт в values принадлежит, заданный NumContracts- вектор элемента из сетки установил идентификаторы. NettingID может быть вектор из числовых идентификаторов или иначе массив ячеек идентификаторов вектора символов. creditexposures функционируйте использует counterparties и NettingID задавать каждый уникальный набор сетки (все контракты в наборе сетки должны быть с тем же контрагентом). По умолчанию каждому контрагенту установили одну сетку, которая покрывает все их контракты. Значение NaN (или '' в массиве ячеек), указывает, что контракт не включен ни в какой набор сетки. NettingID является нечувствительным к регистру и ведущим, или конечные пробелы удалены.

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

Метод расчета для воздействий, заданных со значениями:

  • 'Counterparty' — Вычислите воздействия на контрагента.

  • 'Additive' — Вычислите аддитивные воздействия на уровне контракта. Воздействия вычисляются на контракт и сумму к общей подверженности контрагента.

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

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

  • 'Counterparty' — Имя контрагента или ID. Имя Контрагента или ID должны совпадать с параметром 'Counterparty' для ExposureType аргумент.

  • 'PeriodOfRisk' — Граничный период риска в днях. Номер дней от граничного вызова до отправленного имущественного залога доступен от контрагента.

  • 'Threshold' — Сопутствующий порог. Когда подверженность контрагента превышает эту сумму, контрагент должен отправить имущественный залог.

  • 'MinimumTransfer' — Минимум переводит сумму. Минимальное количество по/под порогу, требуемому инициировать передачу имущественного залога.

Примечание

Когда вычисление предоставило обеспечение воздействия, оба CollateralTable параметр и Dates параметр должен быть задан.

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

Даты симуляции, соответствующие каждой строке values массив в виде NUMDATES- 1 вектор из дат симуляции. Dates или вектор из чисел даты MATLAB или иначе массив ячеек из символьных векторов в известном формате даты. Смотрите datenum для известных форматов даты.

Примечание

Когда вычисление предоставило обеспечение воздействия, оба CollateralTable параметр и Dates параметр должен быть задан.

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

Выходные аргументы

свернуть все

Трехмерный массив кредитных рисков, представляющих возможные потери от каждого контрагента или контракта в каждую дату и по всем сценариям. Размер exposures зависит от ExposureType входной параметр:

  • Когда ExposureType 'Counterparty', exposures возвращает NumDates- NumCounterparties- NumScenarios “куб” кредитных рисков, представляющих возможные убытки, которые можно было потерпеть по всем датам, контрагентам и сценариям, если бы контрагент принял значение по умолчанию (игнорирующий какое-либо восстановление постпо умолчанию).

  • Когда ExposureType 'Additive', exposures возвращает NumDates- NumContracts- NumScenarios “куб”, где каждым элементом является аддитивное воздействие каждого контракта (по всем датам и сценариям). Аддитивные воздействия суммируют к воздействию уровня контрагента.

Контрагенты, которые соответствуют столбцам exposures массив, возвращенный как NumCounterparties или NumContracts элементы в зависимости от ExposureType.

Симулированный имущественный залог составляет доступный для контрагентов в каждую дату симуляции и по каждому сценарию, возвращенному как NumDates- NumCounterparties- NumScenarios 3D массив. Сопутствующие суммы вычисляются с помощью Броуниэн-Бридж, чтобы оценить договорные стоимости между датами симуляции. Для получения дополнительной информации смотрите Броуниэн-Бридж. Если CollateralTable не был задан, этот выход пуст.

Больше о

свернуть все

Броуниэн-Бридж

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

Например, чтобы оценить имущественный залог, доступный в конкретную дату симуляции, t i, необходимо знать состояние портфеля во время t idt, где dt является граничным периодом риска. Стоимость портфеля симулирована в эти промежуточные даты путем рисования от распределения, заданного Броуниэн-Бридж между t i и предыдущей датой симуляции, t i–1.

Если договорные стоимости во время t i –1 и t, i известен и вы хотите оценить договорную стоимость во время t c (где t, c является t idt), то выборка от нормального распределения используется с отклонением:

(ti  tc)(tc  ti1)(ti  ti1)

и со средним значением, которое является просто линейной интерполяцией договорных стоимостей между двумя датами симуляции во время t c. Для получения дополнительной информации смотрите Ссылки.

Ссылки

[1] Lomibao, D. и С. Чжу. “Условный подход оценки для зависимых от предшествующего пути развития инструментов”. Август 2005.

[2] Пихтин М., “Моделирующий кредитный риск для контрагентов с обеспечением”. Декабрь 2009.

[3] Пихтин М. и С. Чжу. “Руководство по Моделированию Кредитного риска Контрагента”. GARP, июль/август 2007, выпуск 37.

[4] Pykhtin, Майкл., и Дэн Розен. “Оценивая риск контрагента на торговом уровне и выделениях CVA”. ФЕДЕРАЛЬНЫЙ рабочий документ № 10., 1 февраля 2010.

Смотрите также

| |

Введенный в R2014a