в Исследования

Пример подгонки распределения семейством Johnson

Автор: Александр Кургузкин (mehanizator).

Данные, которые я обычно использую для работы с SPX – логарифмы ценовых изменений, нормированные на историческую волатильность предшествующего периода, обычно месяца. Для оценки опционов, особенно далеко вне денег, важно учитывать ненормальность этого распределения. Там есть и ассимметрия, вызванная “эффектом плеча”, и эксцесс (толстые хвосты).

Если подгонять эмпирическое распределение нормальным, на концах подгонится плохо. Вот картинка, черные точки – эмпирическое распределение, красные – его подгонка нормальным распределением. Шкала логарифмическая.

Для ориентировки – моменты эмпирического распределения (данные по SPX с 2003 года):

n 2623 mean 0.0410 sigma 1.5247 skew -0.4507 kurtosis 4.6586

Надо использовать другое распределение, где есть ассимметрия и эксцесс. Вариантов вообще много, есть семейство Pearson, есть Johnson, есть другие способы, вот статья попалась на эту тему, если кому вдруг интересно, там много разных вариантов: Financial Economics, Fat-tailed Distributions (eng, pdf).

Я взялся подгонять с помощью Johnson SU, это распределение имеет эксцесс (kurtosis > 3) и ассимметрию в области определений, пригодной для работы с ценовыми данными. К сожалению имеющийся в открытом доступе код для подгонки, который мне удалось обнаружить, представляет из себя код на фортране, чуть менее, чем полностью состоящий из GOTO (алгоритм AS99, опять же если кому вдруг интересно). А из Java метки выпилили, приходится переписывать код руками. Johnson SU я перевел успешно, а вот Johnson SB пока не заводится. Johnson SB нужен для отрицательных/нулевых эксцессов или слишком сильных ассимметрий, что может оказаться полезным, если подгонять на лету всякие условные/фильтрованные распределения.

В R или Matlab это все есть в библиотеках, конечно.

Вот как подгоняется вышеозначенное эмпирическое распределение через Johnson SU: