esbacktestbyde

Создание esbacktestbyde объект для запуска набора ожидаемых бэктестов Du и Escanciano (ES)

Описание

Общий рабочий процесс:

  1. Загрузите или сгенерируйте данные для обратного тестирования ES.

  2. Создайте esbacktestbyde объект. Для получения дополнительной информации см. раздел «Создание esbacktestbyde и свойств».

  3. Используйте summary функция для генерации сводного отчета о отказах и серьезностях.

  4. Используйте runtests функция для запуска всех тестов сразу.

  5. Для получения дополнительной информации о тесте запустите следующие отдельные тесты:

  6. simulate - Моделируйте критические значения для тестовой статистики

Для получения дополнительной информации смотрите Обзор ожидаемой обратной проверки дефицита и Рабочий процесс для ожидаемой обратной проверки дефицита (ES) Du и Escanciano.

Создание

Описание

пример

ebtde = esbacktestbyde(PortfolioData,DistributionName) создает esbacktestbyde (ebtde) объект, использующий данные результатов портфеля и информацию о распределении модели. The esbacktestbyde объект имеет следующие свойства:

  • PortfolioData - NumRows-by- 1 числовой массив или NumRows-by- 1 таблица или расписание с числовым столбцом, содержащим данные результатов портфеля.

  • VaRData - Вычисленные данные VaR с использованием информации о распределении от PortfolioData, возвращается как NumRows-by- NumVaRs числовой массив.

  • ESData - Вычисленные данные ES с использованием информации о распределении от PortfolioData, возвращается как NumRows-by- NumVaRs числовой массив.

  • Распределение - Моделируйте информацию о распределении, возвращаемую как структура.

  • PortfolioID - определяемый пользователем идентификатор портфеля.

  • VaRID - VaRIDs для соответствующего столбца в PortfolioData.

  • VaRLevel - VaRLevel для соответствующих столбцов в PortfolioData.

пример

ebtde = esbacktestbyde(___,Name,Value) устанавливает Свойства используя пары "имя-значение" и любой из аргументов в предыдущем синтаксисе. Для примера, ebtde = esbacktestbyde(PortfolioData,DistributionName,'VaRID','TotalVaR','VaRLevel',.99). Можно задать несколько пары "имя-значение" как необязательные аргументы пары "имя-значение".

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

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

Данные о результатах портфеля, заданные как NumRows-by- 1 числовой массив, NumRows-by- 1 таблица числовых столбцов или NumRows-by- 1 timetable с числовым столбцом, содержащим данные о результатах портфеля. The PortfolioData входной параметр устанавливает свойство PortfolioData.

В отличие от других классов обратного тестирования ES, esbacktestbyde не требует данных VaR или входов ES. Информация о распределении от PortfolioData достаточно для запуска тестов. esbacktestbyde использует информацию о распределении, чтобы применить совокупную функцию распределения к данным портфеля и сопоставить ее с интервалом (0,1). Бэктесты ES применяются к сопоставленным данным.

Примечание

Перед применением тестов функция отбрасывает строки с отсутствующими значениями (NaN) в PortfolioData или Distribution параметры. Поэтому сообщенное количество наблюдений равняется исходному числу строк минус количество отсутствующих значений.

Типы данных: double | table | timetable

Имя распределения модели для обратного тестирования ES, заданное как вектор символов со значением 'normal' или 't' или строку со значением "normal" или "t".

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

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

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

Пример: ebtde = esbacktestbyde(PortfolioData,"t",'DegreesOfFreedom',10,'Location',Mu,'Scale',Sigma,'PortfolioID',"S&P",'VaRID',["t(10) 95%","t(10) 97.5%","t(10) 99%"],'VaRLevel',VaRLevel)
Пары "имя-значение" для 'normal' или 't' Распределения

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

Пользовательский идентификатор для PortfolioData вход, заданный как разделенная разделенными запятой парами, состоящая из 'PortfolioID' и вектор символов или строка. The 'PortfolioID' аргумент пары "имя-значение" устанавливает свойство PortfolioID.

Если PortfolioData является числовым массивом, значением по умолчанию для PortfolioID является 'Portfolio'. Если PortfolioData является таблицей или расписанием, PortfolioID устанавливается на соответствующее имя переменной в таблице, по умолчанию.

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

Идентификатор VaR для модели VaR, заданный как разделенная разделенными запятой парами, состоящая из 'VaRID' и вектор символов, массив ячеек из векторов символов, строковых или строковых массивов.

Можно задать несколько VaRID значения при помощи 1-by- NumVaRs (или NumVaRs-by- 1) массив ячеек из векторов символов или строковый вектор с определенными пользователем идентификаторами для различных уровней VaR 'VaRID' аргумент пары "имя-значение" устанавливает свойство VaRID.

Если NumVaRs = 1, значение по умолчанию для VaRID является 'VaR'. Если NumVaRs > 1, значение по умолчанию является 'VaR1', 'VaR2'и так далее.

Типы данных: char | cell | string

Уровень доверия VaR, заданный как разделенная запятой пара, состоящий из 'VaRLevel' и скалярное числовое значение между 0 и 1 или 1-by- NumVaRs (или NumVaRs-by- 1) числовой массив. The 'VaRLevel' аргумент пары "имя-значение" устанавливает свойство VaRLevel.

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

Указывает, является ли симуляция для статистической значимости тестов запусков когда esbacktestbyde создается объект, заданный как разделенная разделенными запятой парами, состоящая из 'Simulate' и скаляр логическое значение.

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

Пары "имя-значение" для 'normal' Распределения

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

Средство для нормального распределения, заданное как разделенная разделенными запятой парами, состоящая из 'Mean' и a NumRows-by- 1 вектор. Этот параметр используется только при DistributionName является 'normal'.

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

Стандартные отклонения, заданные как разделенная разделенными запятой парами, состоящая из 'StandardDeviation' и a NumRows-by- 1 положительный вектор. Этот параметр используется только при DistributionName является "normal".

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

Пары "имя-значение" для 't' Распределения

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

Степени свободы для 't' распределение, заданное как разделенная разделенными запятой парами, состоящая из 'DegreesOfFreedom' и скаляр целое число ≥ 3.

Примечание

Вы должны задать этот параметр имя-значение, когда DistributionName является 't'.

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

Параметры местоположения для 't' распределение, заданное как разделенная разделенными запятой парами, состоящая из 'Location' и a NumRows-by- 1 вектор. Этот параметр используется только при DistributionName является 't'.

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

Масштабные параметры для 't' распределение, заданное как разделенная разделенными запятой парами, состоящая из 'Scale' и a NumRows-by- 1 положительный вектор. Этот параметр используется только при DistributionName является 't'.

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

Свойства

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

Портфельные данные для обратного тестирования ES, возвращенные как NumRows-by- 1 числовой массив, содержащий копию данных портфеля.

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

Данные VaR, вычисленные с помощью информации о распределении, возвращенные как NumRows-by- NumVaRs числовой массив.

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

Данные ES, вычисленные с помощью информации о распределении, возвращаются как NumRows-by- NumVaRs числовой массив.

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

Моделируйте информацию о распределении, возвращаемую как struct.

Для normal распределение, the Distribution структура имеет поля 'Name' (установлено в normal), 'Mean', и 'StandardDeviation', со значениями, установленными на соответствующие входы.

Для t распределение, the Distribution структура имеет поля 'Name' (установлено в t), 'DegreesOfFreedom', 'Location', и 'Scale', со значениями, установленными на соответствующие входы.

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

Идентификатор портфеля, возвращенный как строка.

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

Идентификатор VaR, возвращенный как 1-by- NumVaRs строковые массивы, содержащий модель VaR ES, где NumVaRs количество уровней VaR.

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

Уровень VaR, возвращается как 1-by- NumVaRs числовой массив.

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

esbacktestbyde СвойствоУстановите или измените свойство из командной строки с помощью esbacktestbyde Изменение свойства с использованием записи через точку
PortfolioDataДаНет
VaRDataНетНет
ESDataНетНет
DistributionДаНет
PortfolioIDДаДа
VaRIDДаДа
VaRLevelДаДа

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

summaryОсновной отчет об ожидаемом дефиците (ES) по отказам и серьезности
runtestsЗапустите все ожидаемые бэктесты дефицита (ES) для esbacktestbyde объект
unconditionalDEБезусловный ожидаемый дефицит (ES) Du-Escanciano (DE) backtest
conditionalDEУсловный бэктест ожидаемого дефицита (ES) Du-Escanciano (DE)
simulateСимулируйте статистику ожидаемого дефицита (ES) Du-Escanciano (DE)

Примеры

свернуть все

Создайте esbacktestbyde объект для модели t с 10 степенями свободы на трех разных уровнях VaR, а затем запустите бэктесты Du и ES Escanciano.

load ESBacktestDistributionData.mat
    rng('default'); % For reproducibility
    ebtde = esbacktestbyde(Returns,"t",...
       'DegreesOfFreedom',T10DoF,...
       'Location',T10Location,...
       'Scale',T10Scale,...
       'PortfolioID',"S&P",...
       'VaRID',["t(10) 95%","t(10) 97.5%","t(10) 99%"],...
       'VaRLevel',VaRLevel);
  runtests(ebtde)
ans=3×5 table
    PortfolioID        VaRID        VaRLevel    ConditionalDE    UnconditionalDE
    ___________    _____________    ________    _____________    _______________

       "S&P"       "t(10) 95%"        0.95         reject            accept     
       "S&P"       "t(10) 97.5%"     0.975         reject            accept     
       "S&P"       "t(10) 99%"        0.99         reject            reject     

Создайте два esbacktestbyde объекты, один с нормальным распределением и другой с t-распределением с 5 степенями свободы, на трех разных уровнях VaR. Затем запустите бэктесты Du и Escanciano ES с помощью runtests.

load ESBacktestDistributionData.mat
    rng('default'); % For reproducibility
    ebtde1 = esbacktestbyde(Returns,"normal",...
       'Mean',NormalMean,...
       'StandardDeviation',NormalStd,...
       'PortfolioID',"S&P",...
       'VaRID',["Normal 95%","Normal 97.5%","Normal 99%"],...
       'VaRLevel',VaRLevel);
    ebtde2 = esbacktestbyde(Returns,"t",...
       'DegreesOfFreedom',T5DoF,...
       'Location',T5Location,...
       'Scale',T5Scale,...
       'PortfolioID',"S&P",...
       'VaRID',["t(5) 95%","t(5) 97.5%","t(5) 99%"],...
       'VaRLevel',VaRLevel);

Конкатенация результатов в одной таблице.

t = [runtests(ebtde1);runtests(ebtde2)];
disp(t)
    PortfolioID        VaRID         VaRLevel    ConditionalDE    UnconditionalDE
    ___________    ______________    ________    _____________    _______________

       "S&P"       "Normal 95%"        0.95         reject            accept     
       "S&P"       "Normal 97.5%"     0.975         reject            reject     
       "S&P"       "Normal 99%"        0.99         reject            reject     
       "S&P"       "t(5) 95%"          0.95         reject            accept     
       "S&P"       "t(5) 97.5%"       0.975         reject            accept     
       "S&P"       "t(5) 99%"          0.99         accept            accept     

Ссылки

[1] Du, Z., and J. C. Escanciano. «Ожидаемая нехватка тестов: учет хвостового риска». Наука менеджмента. Том 63, Выпуск 4, Апрель 2017.

[2] Базельский комитет по банковскому надзору. «Минимальные требования к капиталу для рыночного риска». Январь 2016 (https://www.bis.org/bcbs/publ/d352.pdf).

Введенный в R2019b