Постов с тегом "VaR": 23

VaR


Слепая зона VaR: как нормальная модель маскирует хвостовые риски

Гауссовский VaR стабильно ошибается в обе стороны. Нормальная модель заставляет инвесторов излишне перестраховываться вблизи середины распределения, но при этом становится абсурдно оптимистичной и совершенно слепой к реальной угрозе там, где начинается дальний хвост.

Срез истории рынка США по базе Кеннета Френча охватывает век. Архив с июля 1926 года вместил 26 317 торговых дней. Нормальная модель с аналогичной волатильностью ожидает падение глубже четырех стандартных отклонений всего 0,83 раза. Факт суровее. Рынок пробивал этот порог 105 раз.

Столбчатая диаграмма сравнивает реальное количество глубоких просадок рынка с предсказаниями нормальной модели.

Дальше разрыв становится астрономическим. За пределами пяти отклонений гауссовская математика допускает 0,0075 случая, тогда как реальность выдала 51 обвал. Зато около центра распределения модель пугает зря. За границей 1,645 стандартного отклонения она ждет 1315 убыточных сессий. Рыночный факт мягче. История зафиксировала 1082 таких дня.

Параметрический VaR 95% останавливается на самом пороге. Он скрывает от риск-менеджера истинную глубину просадки при внезапных катастрофах масштаба Черного понедельника, когда историческое дневное падение рынка на 17,41% обернулось аномальным движением в 16,2 стандартного отклонения. Исторически скользящий VaR 99% пробивался в 2,36% случаев вместо заложенного одного процента.



( Читать дальше )

Стохастическая Волатильность #SV #VaR #опционы #MCMC

Финальная модель SV with Jumps, пример предсказания цены КокаКолы на 3 года, откалибрована MCMC на исторических данных

Стохастическая Волатильность #SV #VaR #опционы #MCMC

( Читать дальше )

PhiFlow: Инкрементальные вычисления для финансовых приложений — пересчёт рисков за миллисекунды вместо минут

PhiFlow: Инкрементальные вычисления для финансовых приложений — пересчёт рисков за миллисекунды вместо минут

Привет, коллеги!

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

Проблема, знакомая каждому, кто строил риск-модели

Представьте: у вас портфель из тысяч инструментов. Вы считаете Value-at-Risk (VaR), ожидаемые потери (Expected Shortfall), греки для опционов, скоринговые модели. Данные обновляются постоянно — новые цены, ставки, волатильности.

Как это обычно работает?

  • Либо вы пересчитываете всё с нуля каждый раз (дорого, медленно, особенно если инструментов много)

  • Либо вы строите сложные триггеры и кэши, которые потом отлаживаете месяцами

В обоих случаях вы либо жертвуете скоростью, либо тратите уйму времени разработчиков.

Как мы пытались решить эту проблему

Мы начали с простого вопроса: «А что, если пересчитывать только то, что реально изменилось?»

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



( Читать дальше )

🚀 QuantCore.Net: .NET-библиотека для количественных расчётов. 100 000 опционов в секунду и zero-alloc

О чём это.
Все нормальные расчёты (опционы, VaR, греки) либо дёргают неуправляемый C++ код, либо жрут память и GC, либо просто медленные.

Я написал свою библиотеку — QuantCore.Net. Это in-process .NET 8 ядро для финансовых вычислений. Без REST, без Python-прослоек, без боли.

Под капотом: SIMD, ArrayPool, детерминированный RNG, батч-режимы. Всё, чтобы считать сотни тысяч инструментов за миллисекунды и не ловить StopTheWorld в 3 часа ночи.


📊 Для кого это вообще?
  1. Вы пишете своих роботов на C#.
    — Хотите быстро считать справедливую цену опционов или греки в реальном времени.
    — Надоело дёргать Excel или самопальные функции из интернета, которые плавают на 5%.

  2. Вы управляете портфелем и считаете риск.
    — Historical VaR / ES (CVaR) за 0.4 мс на 100 000 наблюдений.
    — Ни одной аллокации памяти — GC молчит.

  3. Вы делаете factor model PnL.
    — SIMD-скалярка экспозиций и факторных доходностей.
    — 100 000 позиций × 32 фактора = 2.8 мс.



( Читать дальше )

GARCH может измерить Variance

Н. Талеб упомнал что при тяжелых хвостах 3 (именно такие у дневных цен) Var[Var] равен бесконечности.

Это значит огромные ошибки измерения Var (очень медленное схождение) и неприменимость GARCH и т.п.

Я в прошлом посте упустил что GARCH измеряет условную волатильность а не i.i.d, и ее сходимость может быть совершенно другая, быстрее и стабильнее, чем сходимость i.i.d.

Итог — походу GARCH с Variance использовать можно, или как вариант можно использовать GARCH с MeanAbsDev (она имеет очень быструю и стабильную сходимость, но, менее чувствительна к всплескам). Что лучше — непонятно, вопрос оставляем открытым.

Эксперимент измерение сходимости Var для i.i.d. ь действительно как видим медленная и нестабильная, но как сказал для реальных цен ситуация мож быть гораздо лучше
GARCH может измерить Variance



Определение степени тяжелых хвостов прибыли акций, видео и расчеты #риск #убытки #прибыль

Видео, что это такое и зачем нужно, обычно оценка хвостов используется для оценки убытков, но это также имеет смысл и для прибыли www.youtube.com/watch?v=BzWMapIpdSE

Расчеты, можно запустить и проверить github.com/al6x/profit_hunting/tree/main/tail

Результаты полученные на исторических данных: для лог прибылей 1д правый хвост ν=3.6, левый хвост ν=3.2. Не зависит от волатильности. Цифры растут с ростом периода 30д, 365д.

Скорректированные результаты с учетом здравого смысла: левый и правый хвост равны 3.1, и постоянны для всех волатильностей и всех периодов.

Пара картинок...

Определение степени тяжелых хвостов прибыли акций, видео и расчеты #риск #убытки #прибыль

( Читать дальше )

Я был прав что Extreme Value Theory дает полнейшую дич

Исследование Банка Канады, один из авторов — Лоренс Хан, пионер EVT, соавтор одного из лучших EVT эстиматоров DEDH, так что видимо он знает что делает и исследование стоит рассмотреть. Смысл исследования — улучшенный эстиматор KS, но не в том реч, нам интересно что они также оценивают точность классические EVT эстиматоры.

Они сделали то же что и я, посмотрели симуляции — насколько хорошо эстиматоры EVT оценивают заведомо известное распределение, результаты (таблица 1).

Цифры в таблице СРЕДНЕЕ множества симуляций. Т.е. по отдельным симуляциям там походу результаты вообще разброс огромный и дич полнейшая, также как и у меня получилось.

Я был прав что Extreme Value Theory дает полнейшую дич



Походу когда эту EVT изначально использовали для высоты дамб — типа «ну где то по расчетам четыре-пять получается надо, давай для надежности чтоб с запасом было сделаем три» — и точность устраивала.

Но когда нужно точнее цифры, в классичесом виде EVT это чисто с потолка цифры, нужно использовать новые более точные эстиматоры и возможно вносить поправку на байес.

Насколько практически малы малые хвостовые вероятности?

Как выбрать практически разумную малую вероятность, не будешь же сто лет ждать пока выпадет золотая акция с вероятностью один на миллион. 

Мысли вслух — минимальное событие на которое можно расчитывать практически это: имея 10 акций, что раз в 10 лет выпадет золотое событие. Также нам не важен знак, плюс или минус, поэтому умножаем на 2.

Это 1/365*10*10*2 = 1/75_000 для дневных событий, 1/12*10*10*2 = 1/2500 месячных, 1/10*10*2 = 1/200 годовых.

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

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

Левый и правый хвост имеют разную степень, VaR

Дневные левый 3, правый 3.7.
Месячные левый 3, правый 5.2 (но я думаю он тоже 3.7, просто данных меньше и его не видно).

Это значит SkewStudentT(𝜇,𝜎,𝜈,𝜆) может быть не достаточно, если мы зафиксируем nu=3, это переоценит вероятность редких положит событий, и хотя сама по себе ошибка может быть малой, тот факт что это экстремальное событие большого масштаба, да еще и в экспоненте exp(log r) увеличит ошибку.

В идеале конечно надо что то типа SkewStudentT(𝜇,𝜎,𝜈𝑙,𝜈𝑟,𝜆) с разными хвостами, но таких вроде как нет.

Либо, зафиксировать nu=3.7, это недооценит убытки, но зато ошибка не будет увеличиваться большим масштабом события.

Добавлено:

Ошибка (относителная) для VaR, портфель из 10 акций и события раз в 10 лет, при хвосте 3 и 3.7. Дневные: ~1.22 раза, месячные: ~1.24 раза. Вполне ощутимая разница.
# Daily, typical daily log returns StudentT(0.001, 0.015)
p = 1-1/(365*10*10) # once in 10y for portfolio of 10 stocks
exp(
  quantile(StudentT(0.001, 0.015, 3), p) - 
  quantile(StudentT(0.001, 0.015, 3.7), p)
) # => 1.22

# Monthly, typical monthly log returns StudentT(0.01, 0.08)
p = 1-1/(12*10*10) # once in 10y for portfolio of 10 stocks
exp(
  quantile(StudentT(0.01, 0.08, 3), p) - 
  quantile(StudentT(0.01, 0.08, 3.7), p)
) # => 1.24

10-Q - VARIAN MEDICAL SYSTEMS INC

Компания с кодом VAR выпустила квартальный отчет, форма 10-Q
Прочитать его можно по ссылке: www.sec.gov/Archives/edgar/data/203527/000020352721000010/0000203527-21-000010-index.htm
Дата публикации: 09.02.21 04:35 PM (NYT)

....все тэги
UPDONW
Новый дизайн