Skip to content

NastiaBur/NIS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Conditional VAR based on real data (1 dataset)

Анастасия Буркова и Валерия Рублева

Нашим проектом являлся подсчёт $CVaR$ для 1 датасета. Перед тем, как приступить к описанию кода, уточним данный термин.

$CVaR(p)$ - это условная стоимость под риском. $p$ - это вероятность риска (или 1 - уровень доверия). Стандартными значениями $p$ являются $0,01$ и $0.05$. Для подсчета $CVaR(p)$ предполагается, что $VaR(p)$ существует.

Также важно уточнить, что мы использовали исторический метод подсчёта, потому что этот метод дает меньше всего ограничений на рассматриваемую выборку и в предосталенных данных распределение доходностей дискретно и взято из уже прошедших лет, то есть до 2022 года включительно.

Нужные библиотеки

Перед тем, как начать работу с кодом, мы подключили билиотеки:

  • $openpyxl$ (для чтения файла формата $xslx$)
  • $pandas$ (для работы с датасетом)
  • $numpy$ (для математических выражениях на массивах)

1. Выгрузка данных

Чтобы воспользоваться датасетом, находящимся в файле формата $excel$, надо изначально выгрузить в программу все нужные данные. Для этого мы использовали

df = pd.read_excel('dataset.xlsx', sheet_name='1')

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

2. Предподсчёт

Перед тем как подсчитать $CVaR$, с помощью данной таблицы был получен отдельный столбец (объект типа $pd.Series$): отношение $curs$ нынешней даты к предыдущей. Затем этот столбец был отсортирован по возрастанию и проранжирован. В представленном коде этот объект имеет название $ret$.

3. Функция для подсчётa CVaR

После подсчета $CVaR$ для конкретных данных, в код была добавлена функция, считающая $CVaR$ для любого процента (переменная $p$) и для любого столбца данных (переменная $data$), которые пользователь хочет указать.

Алгоритм работы функции:

  • Подсчитывается количество данных в $ret$ - переменная count

  • Находится позиция c номером $p$ процентов от $count$ - переменная $pos$

  • Берётся среднее значение всех чисел с меньшей позицией (сами значения тоже меньше, чем число, стоящее на $pos$ благодаря сортирвоке) - это $CVaR$

4. Результаты

В итоге получилась функция, которая подсчитывает $CVaR$ для нужного датасета и процента. Запустив эту функцию на стандратных значениях вероятности риска, можно получить условную стоимость на риск для любых дискретных распределений доходности в прошлом.

Запустив функцию на самом встречаемой вероятности риска (0.01), мы получили результат: 0.9048620951800836

В приложенных файлах можно увидеть написанный код н python.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors