2009-08-26 65 views
1

我正在嘗試確定排名的波動性。我如何測量波動率?

更具體地說,在X個數據點上的等級可以是從1到16(數據點的數量隨着最多30個而變化)。

我想能夠測量這種波動性,然後將其映射到某個百分比。

我不是一個數學怪才,所以請不要吐出複雜的公式我:)

我只是想以儘可能簡單的方式實現代碼。

+0

任何給出的答案中缺少任何東西? – 2009-09-02 11:38:55

回答

3

我認爲最簡單的第一遍是X數據點的標準偏差。

2

我認爲Standard Deviation是你在找什麼。有一些公式需要處理,但這並不難計算。

1

如果你想很簡單的東西,你可以採取的波動性逐次隊伍之間的絕對差值的平均值。這具有遞歸的額外好處。我們本作初始化:

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可以是雖然作爲一個「衰減時間」或諸如此類:

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

這也被稱爲一個moving average(絕對值差值在行列在這種情況下)。

1

鑑於您有一個小樣本集(您最多說30個數據點),並且標準差很容易受到異常值的影響,我建議您使用interquartile range作爲衡量波動率的指標。這是一個微不足道的計算,可以給你的小樣本集上的數據有意義的表示。