creditexposures

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

Описание

пример

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

пример

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

пример

[exposures,exposurecpty,collateral] = creditexposures(___,Name,Value) вычисляет кредитные риски контрагента из массива значений внебиржевых контрактов с маркой на рынок с помощью необязательных аргументов пары "имя-значение" для 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')

Figure contains 2 axes. Axes 1 with title Mark-to-Market Contract Values for Counterparty: 4 contains 1000 objects of type line. Axes 2 with title Exposure for counterparty: 4 contains 1000 objects of type line.

Загрузите данные (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 ($)')

Figure contains an axes. The axes with title Potential Mark-to-Market Portfolio Values for Counterparty: 4 contains 1000 objects of type line.

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

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')

Figure contains an axes. The axes with title Exposure for counterparty: 4 contains 1000 objects of type line.

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

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')

Figure contains 2 axes. Axes 1 with title Expected Exposure before and after new trade contains 2 objects of type line. These objects represent EE before, EE with trade. Axes 2 contains an object of type line. This object represents incremental EE.

Загрузите данные (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')

Figure contains an axes. The axes with title Exposures for Counterparty: 4 contains 1000 objects of type line.

Добавьте договор обеспечения для контрагента. The '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');

Figure contains 2 axes. Axes 1 with title Collateral for counterparty: 4 contains 1000 objects of type line. Axes 2 with title Collateralized Exposure for Counterparty: 4 contains 1000 objects of type line.

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

свернуть все

Трехмерные массивы моделируемых значений на рынок портфеля контрактов, моделируемых в течение ряда дат симуляции и во многих сценариях, заданные как NumDates-by- NumContracts-by- 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 может быть вектором числовых идентификаторов или массивом ячеек с идентификаторами векторов символов. The creditexposures функция использует counterparties и NettingID для определения каждого уникального набора взаимозачетов (все контракты в наборе взаимозачета должны быть с одним и тем же контрагентом). По умолчанию каждый контрагент имеет один набор взаимозачетов, который охватывает все их контракты. Значение NaN (или '' в массиве ячеек) указывает, что контракт не включен ни в один набор взаимозачета. NettingID удаляют нечувствительные и ведущие или конечные белые пространства.

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

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

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

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

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

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

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

  • 'PeriodOfRisk' - маржинальный период риска в днях. Количество дней с момента вызова маржи до тех пор, пока разнесенное обеспечение не будет доступно у контрагента.

  • 'Threshold' - Порог обеспечения. Когда риски контрагента превышают эту сумму, контрагент должен разместить обеспечение.

  • 'MinimumTransfer' - Минимальная сумма перевода. Минимальная сумма сверх/ниже порога, необходимого для передачи обеспечения.

Примечание

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

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

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

Примечание

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

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

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

свернуть все

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

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

  • Когда ExposureType является 'Additive', exposures возвращает NumDates-by- NumContracts-by- NumScenarios «cube», где каждый элемент является аддитивной экспозицией каждого контракта (по всем датам и сценариям). Сумма аддитивного воздействия на уровень контрагента.

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

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

Подробнее о

свернуть все

Брауновский мост

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

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

Если договорные стоимости во время <reservedrangesplaceholder10> <reservedrangesplaceholder9> и <reservedrangesplaceholder8> <reservedrangesplaceholder7> известны, и Вы хотите оценить договорную стоимость во время <reservedrangesplaceholder6> <reservedrangesplaceholder5> (где <reservedrangesplaceholder4> <reservedrangesplaceholder3> - <reservedrangesplaceholder2> <reservedrangesplaceholder1> - dt), то выборка от нормального распределения используется с отклонением:

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

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

Ссылки

[1] Ломибао, Д., и С. Чжу. «Условный подход к оценке для зависящих от пути инструментов». Август 2005 года.

[2] Пыхтин М. «Моделирование кредитного риска для обеспеченных контрагентов». Декабрь 2009 года.

[3] Пыхтин М., и С. Чжу. «Руководство к моделированию контрагентского кредитного риска». ГАРП, июль/август 2007 года, выпуск 37.

[4] Пыхтин, Майкл, и Дэн Розен. «Ценообразование контрагентского риска на уровне торговли и распределение CVA». ФЕДС Работы Бумага № 10., 1 февраля 2010 года.

Введенный в R2014a