Вычислите кредитные риски из договорных стоимостей
[exposures,exposurecpty]
= creditexposures(values,counterparties)
[exposures,exposurecpty]
= creditexposures(___,Name,Value)
[exposures,exposurecpty,collateral]
= creditexposures(___,Name,Value)
[
вычисляет кредитные риски контрагента из массива метки на рынок договорные стоимости OTC. Эти воздействия используются при вычислении CVA (корректировка стоимости кредита) для портфеля. exposures
,exposurecpty
]
= creditexposures(values
,counterparties
)
[
добавляют дополнительные аргументы значения имени.exposures
,exposurecpty
]
= creditexposures(___,Name,Value
)
[
вычисляет кредитные риски контрагента из массива метки на рынок договорные стоимости OTC с помощью дополнительных аргументов пары "имя-значение" для 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')
Загрузите данные (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
-by-NumContracts-by-
NumScenarios
“куб” договорных стоимостей. Каждая строка представляет различную дату симуляции, каждый столбец различный контракт, и каждая “страница” является различным сценарием от симуляции Монте-Карло.
Типы данных: double
counterparties
— Контрагенты, соответствующие каждому контрактуКонтрагенты, соответствующие каждому контракту в values
, заданном как NumContracts
- вектор элемента контрагентов. Контрагенты могут быть вектором числовых идентификаторов или массивом ячеек имен контрагента. По умолчанию каждый контрагент принят, чтобы установить одну сетку, которая покрывает все ее контракты. Если контрагенты покрыты несколькими наборами сетки, то используйте параметр NettingID
. Значение NaN
(или ''
в массиве ячеек) указывает, что контракт не включен ни в какой набор сетки, если в противном случае не задано NettingID
. counterparties
является нечувствительным к регистру и ведущим, или конечные пробелы удалены.
Типы данных: double
| cell
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
[exposures,exposurecpty] = creditexposures(values,counterparties,'NettingID','10','ExposureType','Additive')
'NettingID'
— Сетка установила идентификаторы, указывают, какая сетка установила каждый контракт, принадлежитСетка установила идентификаторы указывать, на который сетка установила каждый контракт в values
, принадлежит, заданный NumContracts
- вектор элемента идентификаторов набора сетки. NettingID
может быть вектором числовых идентификаторов или иначе массивом ячеек идентификаторов вектора символов. Функция creditexposures
использует counterparties
, и NettingID
, чтобы задать каждый уникальный набор сетки (все контракты в наборе сетки должны быть с тем же контрагентом). По умолчанию каждому контрагенту установили одну сетку, которая покрывает все их контракты. Значение NaN
(или ''
в массиве ячеек) указывает, что контракт не включен ни в какой набор сетки. NettingID
является нечувствительным к регистру и ведущим, или конечные пробелы удалены.
Типы данных: double
| cell
'ExposureType'
— Метод расчета для воздействий'Counterparty'
(значение по умолчанию) | вектор символов со значением 'Counterparty'
или 'Additive'
Метод расчета для воздействий, заданных со значениями:
'Counterparty'
— Вычислите воздействия на контрагента.
'Additive'
— Вычислите аддитивные воздействия на уровне контракта. Воздействия вычисляются на контракт и сумму к общей подверженности контрагента.
Типы данных: char
'CollateralTable'
— Таблица, содержащая информацию о сопутствующих соглашениях о контрагентахТаблица, содержащая информацию о сопутствующих соглашениях о контрагентах, заданных как таблица MATLAB. Таблица состоит из одной записи (строка) на контрагента с обеспечением и должна иметь следующие переменные (столбцы):
'Counterparty'
— Имя контрагента или ID. Имя Контрагента или ID должны совпадать с параметром 'Counterparty'
для аргумента ExposureType
.
'PeriodOfRisk'
— Граничный период риска в днях. Номер дней от граничного вызова до отправленного имущественного залога доступен от контрагента.
'Порог'
Сопутствующий порог. Когда подверженность контрагента превышает эту сумму, контрагент должен отправить имущественный залог.
'MinimumTransfer'
— Минимум переводит сумму. Минимальное количество по/под порогу, требуемому инициировать передачу имущественного залога.
Когда вычисление предоставило обеспечение воздействия, и параметр CollateralTable
и параметр Dates
должны быть заданы.
Типы данных: table
'Dates'
— Даты симуляции, соответствующие каждой строке массива значенийДаты симуляции, соответствующие каждой строке массива values
, заданного как NUMDATES
-by-1
вектор дат симуляции. Dates
является или вектором чисел даты MATLAB или иначе массивом ячеек из символьных векторов в известном формате даты. Смотрите datenum
для известных форматов даты.
Когда вычисление предоставило обеспечение воздействия, и параметр CollateralTable
и параметр Dates
должны быть заданы.
Типы данных: double
| cell
exposures
— Трехмерный массив кредитных рисковТрехмерный массив кредитных рисков, представляющих возможные потери от каждого контрагента или контракта в каждую дату и по всем сценариям. Размер exposures
зависит от входного параметра ExposureType
:
Когда ExposureType
является 'Counterparty'
, exposures
возвращает NumDates
-by-NumCounterparties-by-
NumScenarios
“куб” кредитных рисков, представляющих возможные убытки, которые можно было потерпеть по всем датам, контрагентам и сценариям, если бы контрагент принял значение по умолчанию (игнорирующий какое-либо восстановление постпо умолчанию).
Когда ExposureType
является 'Additive'
, exposures
возвращает NumDates
-by-NumContracts-by-
NumScenarios
“куб”, где каждый элемент является аддитивным воздействием каждого контракта (по всем датам и сценариям). Аддитивные воздействия суммируют к воздействию уровня контрагента.
exposurecpty
— Контрагенты, которые соответствуют столбцам массива exposures
Контрагенты, которые соответствуют столбцам массива exposures
, возвратились как NumCounterparties
или элементы NumContracts
в зависимости от ExposureType
.
collateral
— Моделируемый имущественный залог составляет доступный контрагентам в каждую дату симуляции и по каждому сценариюМоделируемый имущественный залог составляет доступный контрагентам в каждую дату симуляции и по каждому сценарию, возвращенному как NumDates
-by-NumCounterparties-by-
NumScenarios
3D массив. Сопутствующие суммы вычисляются с помощью Броуниэн-Бридж, чтобы оценить договорные стоимости между датами симуляции. Для получения дополнительной информации смотрите Броуниэн-Бридж. Если CollateralTable
не был задан, этот вывод пуст.
Броуниэн-Бридж используется, чтобы моделировать стоимость портфеля в промежуточные даты, чтобы вычислить имущественный залог, доступный в последующие даты симуляции.
Например, чтобы оценить имущественный залог, доступный в конкретную дату симуляции, t i, необходимо знать состояние портфеля во время t i – dt, где dt является граничным периодом риска. Стоимость портфеля моделируется в эти промежуточные даты путем рисования от распределения, заданного Броуниэн-Бридж между t i и предыдущей датой симуляции, t i–1.
Если договорные стоимости во время t i –1 и t, i известен и вы хотите оценить договорную стоимость во время t c (где t, c является t i – dt), то выборка от нормального распределения используется с отклонением:
и со средним значением, которое является просто линейной интерполяцией договорных стоимостей между двумя датами симуляции во время t c. Для получения дополнительной информации смотрите Ссылки.
[1] Lomibao, D. и С. Чжу. “Условный подход оценки для зависимых от предшествующего пути развития инструментов”. Август 2005.
[2] Пихтин М., “Моделирующий кредитный риск для контрагентов с обеспечением”. Декабрь 2009.
[3] Пихтин М. и С. Чжу. “Руководство по Моделированию Кредитного риска Контрагента”. GARP, июль/август 2007, выпуск 37.
[4] Pykhtin, Майкл., и Дэн Розен. “Оценивая риск контрагента на торговом уровне и выделениях CVA”. ФЕДЕРАЛЬНЫЙ рабочий документ № 10., 1 февраля 2010.
datenum
| exposureprofiles
| table
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.