esbacktestbysim

Создайте объект esbacktestbysim запустить основанный на симуляции комплект ожидаемого недостатка (ES) backtests

Описание

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

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

  2. Создайте объект esbacktestbysim. Для получения дополнительной информации смотрите, Создают esbacktestbysim.

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

  4. Используйте функцию runtests, чтобы запустить все тесты целиком.

  5. Для дополнительных тестовых деталей, запущенных следующие отдельные тесты:

    • conditional — Условный тест Acerbi-Szekely (2014)

    • unconditional — Безусловный тест Acerbi-Szekely (2014)

    • quantile — Тест квантиля Acerbi-Szekely (2014)

    Для получения дополнительной информации см. Обзор Ожидаемого Недостатка Backtesting.

Создание

Синтаксис

ebts = esbacktestbysim(PortfolioData,VaRData,ESData,DistributionName)
ebts = esbacktestbysim(___,Name,Value)

Описание

пример

ebts = esbacktestbysim(PortfolioData,VaRData,ESData,DistributionName) создает объект esbacktestbysim (ebts) и моделирует сценарии результата портфеля, чтобы вычислить критические значения для трех тестов:

Объект ebts имеет следующие свойства:

  • PortfolioDataNumRows-by-1 числовой массив, содержащий копию PortfolioData

  • VaRDataNumRows-by-NumVaRs числовой массив, содержащий копию VaRData

  • ESDataNumRows-by-NumVaRs числовой массив, содержащий копию ESData

  • Распределение — Структура, содержащая информацию модели, включая образцовое имя распределения и параметры распределения. Например, для нормального распределения, Distribution имеет поля 'Name', 'Mean' и 'StandardDeviation', с набором значений к соответствующим входным параметрам.

  • PortfolioID — Строка, содержащая PortfolioID

  • VaRID1-by-NumVaRs представляет в виде строки вектор, содержащий VaRID s для соответствующих столбцов в VaRData

  • VaRLevel1-by-NumVaRs числовой массив, содержащий VaRLevel s для соответствующих столбцов в VaRData.

Примечание

  • Необходимые входные параметры для PortfolioData, VaRData и ESData должны все быть в тех же модулях. Эти аргументы могут быть выражены, когда возвращается или как прибыль и потери. Нет никаких валидаций в объекте esbacktestbysim относительно модулей этих аргументов.

  • Если существуют отсутствующие значения (NaN s) в PortfolioData, VaRData, ESData или данных о параметрах Distribution, строка данных отбрасывается прежде, чем применить тесты. Поэтому о различном количестве наблюдений сообщают для моделей с различным количеством отсутствующих значений. Количество, о котором сообщают, наблюдений равняется исходному количеству строк минус количество отсутствующих значений. Чтобы определить, существуют ли отброшенные строки, используйте столбец 'Missing' отчета summary.

пример

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

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

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

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

Примечание

Данные PortfolioData должны быть в тех же модулях как VaRData и ESData. Нет никаких валидаций в объекте esbacktestbysim относительно модулей портфеля, VaR и данных о ES. PortfolioData, VaRData и ESData могут быть выражены, когда возвращается или как прибыль и потери.

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

Данные о подверженном риску значения (VaR), заданные как NumRows-by-NumVaRs числовой массив, NumRows-by-NumVaRs таблица или NumRows-by-NumVaRs расписание с числовыми столбцами. Входной параметр VaRData устанавливает свойство VaRData.

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

Примечание

VaRData должен быть в тех же модулях как PortfolioData и ESData. Нет никаких валидаций в объекте esbacktestbysim относительно модулей портфеля, VaR и данных о ES. VaRData, PortfolioData и ESData могут быть выражены, когда возвращается или как прибыль и потери.

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

Ожидаемые данные о недостатке, заданные как NumRows-by-NumVaRs положительный числовой массив, NumRows-by-NumVaRs таблица или NumRows-by-NumVaRs расписание с положительными числовыми столбцами, содержащими данные о ES. Входной параметр ESData устанавливает свойство ESData.

Примечание

Данные ESData должны быть в тех же модулях как PortfolioData и VaRData. Нет никаких валидаций в объекте esbacktestbysim относительно модулей портфеля, VaR и данных о ES. ESData, PortfolioData и VaRData могут быть выражены, когда возвращается или как прибыль и потери.

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

Имя распределения, заданное как строка со значением normal или t. Входной параметр DistributionName устанавливает поле 'Name' свойства Distribution.

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

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

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

Пример: ebts = esbacktestbysim(PortfolioData,VaRData,ESData,DistributionName,'VaRID','TotalVaR','VaRLevel',.99)

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

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

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

Идентификатор VaR для столбцов VaRData, заданных как пара, разделенная запятой, состоящая из 'VaRID' и вектора символов, массива ячеек из символьных векторов, строки или массива строк. Несколько VaRID s заданы с помощью 1-by-NumVaRs (или NumVaRs-by-1) массив ячеек из символьных векторов или массив строк с пользовательскими идентификаторами для столбцов VaRData. Один VaRID идентифицирует столбец VaRData и соответствующий столбец ESData. Аргумент пары "имя-значение" VaRID устанавливает свойство VaRID.

Если VaRData является числовым массивом, значением по умолчанию для VaRID является 'VaR'. Если NumVaRs = 1 или NumVaRs> 1, значением по умолчанию для VaRID является 'VaR1', 'VaR2', и так далее. Если VaRData является таблицей, значение VaRID установлено к соответствующим именам переменных в таблице по умолчанию.

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

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

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

Средства для нормального распределения, заданного как пара, разделенная запятой, состоящая из 'Mean' и числового значения или NumRows-by-1 числовой массив. Аргумент пары "имя-значение" Mean устанавливает поле 'Mean' свойства Distribution.

Примечание

Вы устанавливаете аргумент пары "имя-значение" Mean только, когда входной параметр DistributionName задан как normal.

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

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

Примечание

Вы устанавливаете аргумент пары "имя-значение" StandardDeviation только, когда входной параметр DistributionName задан как normal.

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

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

Примечание

Аргумент пары "имя-значение" DegreesOfFreedom только установлен, когда входной параметр DistributionName задан как t. Значение для DegreesOfFreedom требуется, когда значением DistributionName является t.

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

Параметры положения для распределения t, заданного как пара, разделенная запятой, состоящая из 'Location' и числового значения или NumRows-by-1 массив. Аргумент пары "имя-значение" Location устанавливает the'Location' поле свойства Distribution.

Примечание

Аргумент пары "имя-значение" Location только установлен, когда входной параметр DistributionName задан как t.

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

Масштабные коэффициенты для распределения t, заданного как пара, разделенная запятой, состоящая из 'Scale' и положительного числового значения или NumRows-by-1 массив. Аргумент пары "имя-значение" Scale устанавливает поле 'Scale' свойства Distribution.

Примечание

Аргумент пары "имя-значение" Scale только установлен, когда входной параметр DistributionName задан как t.

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

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

Типы данных: логический

Свойства

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

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

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

Данные VaR для ES backtesting анализ, заданный как NumRows-by-NumVaRs числовой массив, содержащий копию данных VaR.

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

Ожидаемые данные о недостатке для ES backtesting анализ, заданный как NumRows-by-NumVaRs числовой массив, содержащий копию ESData.

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

Информация о распределении, включая имя распределения и связанные параметры распределения, заданные как структура.

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

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

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

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

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

Идентификатор VaR, заданный как 1-by-NumVaRs массив строк, содержащий идентификаторы VaR для соответствующих столбцов в VaRData.

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

Уровень VaR, заданный как 1-by-NumVaRs числовой массив со значениями между 0 и 1, содержащим уровни VaR для соответствующих столбцов в VaRData.

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

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

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

summaryОсновной отчет ожидаемого недостатка (ES) относительно отказов и серьезности
runtestsЗапустите весь ожидаемый недостаток backtests (ES) для объекта esbacktestbysim
conditionalУсловный ожидаемый недостаток (ES) backtest
unconditionalБезусловный ожидаемый недостаток backtest
quantileОжидаемый недостаток (ES) квантиля backtest
simulateМоделируйте тестовую статистику ожидаемого недостатка (ES)

Примеры

свернуть все

esbacktestbysim берет в данных по результатам портфеля, соответствующих данных о подверженном риску значения (VaR), данных об ожидаемом недостатке (ES) и информации о Распределении и возвращает объект esbacktestbysim.

Создайте объект esbacktestbysim и отобразите свойство Distribution.

load ESBacktestBySimData
rng('default'); % for reproducibility
ebts = esbacktestbysim(Returns,VaR,ES,"t",...
       'DegreesOfFreedom',10,...
       'Location',Mu,...
       'Scale',Sigma,...
       'PortfolioID',"S&P",...
       'VaRID',["t(10) 95%","t(10) 97.5%","t(10) 99%"],...
       'VaRLevel',VaRLevel)
ebts = 
  esbacktestbysim with properties:

    PortfolioData: [1966x1 double]
          VaRData: [1966x3 double]
           ESData: [1966x3 double]
     Distribution: [1x1 struct]
      PortfolioID: "S&P"
            VaRID: ["t(10) 95%"    "t(10) 97.5%"    "t(10) 99%"]
         VaRLevel: [0.9500 0.9750 0.9900]

ebts.Distribution
ans = struct with fields:
                Name: "t"
    DegreesOfFreedom: 10
            Location: 0
               Scale: [1966x1 double]

ebts, объект esbacktestbysim, содержит копию данных данных о портфеле (свойство PortfolioData), данные данные VaR (свойство VaRData), данное свойство (ESData) данных о ES и данная информация о Distribution. Объект также содержит все комбинации ID портфеля, VaR ID и уровня VaR, который будет протестирован (PortfolioID, VaRID и свойства VaRLevel).

Запустите тесты с помощью объекта ebts.

TestResults = runtests(ebts)
TestResults=3×6 table
    PortfolioID        VaRID        VaRLevel    Conditional    Unconditional    Quantile
    ___________    _____________    ________    ___________    _____________    ________

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

Измените свойство PortfolioID с помощью записи через точку. Для получения дополнительной информации о создании объекта esbacktestbysim см. esbacktestbysim.

ebts.PortfolioID = 'S&P, 1996-2003'
ebts = 
  esbacktestbysim with properties:

    PortfolioData: [1966x1 double]
          VaRData: [1966x3 double]
           ESData: [1966x3 double]
     Distribution: [1x1 struct]
      PortfolioID: "S&P, 1996-2003"
            VaRID: ["t(10) 95%"    "t(10) 97.5%"    "t(10) 99%"]
         VaRLevel: [0.9500 0.9750 0.9900]

Запустите все тесты с помощью обновленного объекта esbacktestbysim.

runtests(ebts)
ans=3×6 table
      PortfolioID           VaRID        VaRLevel    Conditional    Unconditional    Quantile
    ________________    _____________    ________    ___________    _____________    ________

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

Ссылки

[1] Acerbi, C. и Б. Сзекели. Бэктестинг ожидаемый недостаток. Декабрь 2014 MSCI Inc.

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

Введенный в R2017b