Как я могу измерить волатильность? - PullRequest
1 голос
/ 26 августа 2009

Я пытаюсь определить волатильность звания.

Более конкретно, ранг может быть от 1 до 16 по X точкам данных (количество точек данных варьируется с максимумом 30).

Я бы хотел измерить эту волатильность и затем каким-то образом отобразить ее в процентах.

Я не математик, поэтому, пожалуйста, не выкладывайте на меня сложные формулы:)

Я просто хочу закодировать это самым простым способом.

Ответы [ 5 ]

3 голосов
/ 26 августа 2009

Я думаю, что самым простым первым проходом было бы стандартное отклонение для точек данных X.

2 голосов
/ 26 августа 2009

Эта ссылка может помочь объяснить, как рассчитать стандартное отклонение в простых терминах: Как рассчитать стандартное отклонение

2 голосов
/ 26 августа 2009

Я думаю, что Стандартное отклонение - это то, что вы ищете. Есть некоторые формулы, с которыми нужно иметь дело, но это не сложно вычислить.

1 голос
/ 27 августа 2009

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

1 голос
/ 27 августа 2009

Если вы хотите что-то действительно простое, вы можете принять среднее значение абсолютных различий между последовательными рангами как волатильность. У этого есть дополнительный бонус того, чтобы быть рекурсивным. Используем это для инициализации:

double sum=0;
for (int i=1; i<N; i++)
{
    sum += abs(ranks[i]-ranks[i-1]);
}
double volatility = sum/N;

Затем для обновления волатильности, если доступен новый ранг в момент времени N + 1, вы вводите параметр K, где K определяет скорость, с которой ваше измерение волатильности адаптируется к изменениям волатильности. Более высокое K означает более медленную адаптацию, поэтому K может рассматриваться как «время затухания» или как-то так:

double K=14 //higher = slower change in volatility over time.
double newvolatility;
newvolatility = (oldvolatility * (K-1) + abs(rank[N+1] - rank[N]))/K;

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

...