ランクのボラティリティを判断しようとしています。
より具体的には、ランクはXデータポイントに対して1〜16にすることができます(データポイントの数は最大30で異なります)。
このボラティリティを測定し、それを何らかの形でパーセンテージにマッピングできるようにしたいと思います。
私は数学オタクではないので、複雑な数式を吐き出さないでください:)
可能な限り簡単な方法でこれをコーディングしたいと思います。
ランクのボラティリティを判断しようとしています。
より具体的には、ランクはXデータポイントに対して1〜16にすることができます(データポイントの数は最大30で異なります)。
このボラティリティを測定し、それを何らかの形でパーセンテージにマッピングできるようにしたいと思います。
私は数学オタクではないので、複雑な数式を吐き出さないでください:)
可能な限り簡単な方法でこれをコーディングしたいと思います。
最も簡単な最初のパスは、X データ ポイントの標準偏差だと思います。
標準偏差はあなたが探しているものだと思います。いくつかの数式を扱う必要がありますが、計算するのは難しくありません。
本当に単純なものが必要な場合は、連続するランク間の絶対差の平均をボラティリティとして取ることができます。これには、再帰的であるという追加のボーナスがあります。これを初期化に使用します。
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;
これは移動平均とも呼ばれます(この場合、ランクの絶対差の)。
サンプル セットが小さく (最大 30 データ ポイント)、標準偏差が外れ値の影響を受けやすいことを考えると、ボラティリティの尺度として四分位範囲を使用することをお勧めします。これは簡単な計算であり、小さなサンプル セットに分散されたデータを意味のある表現にします。