算法交易
音量標準化
假設我們每分鐘都有捲,如下所示
100, 200 , 19, 0 , 200 , 12 , 100
我想將所有這些數字轉換為小於 10 ,其中 10 是最大值,1 是最小值。
我可以通過標準化來做到這一點,但是當突然出現一些高音量時會出現問題,如下所示
100, 200 , 19, 0 , 200 , 12 , 20000
當我對過去的 100 卷使用標準化時,這 20000 會影響所有其他卷。
我可以通過取平均數量並為此進行標準化來做些什麼嗎?
因為它是你的模型,所以你可以做任何事情。我要做的是使用一些動態異常值排除。例如,在這種情況下,您知道最小值為零。
一種(許多)方法可能是評估中位數(因為它可能比標準差或平均值更穩健)並使用 2 x 中位數作為上限:
>>> arr = np.array([100,200,19,0,200,12,20000]) >>> upper_lim = np.median(arr) * 2 >>> arr_adj = np.where(arr>upper_lim, upper_lim, arr) / upper_lim >>> arr_adj *= 10 >>> arr_adj array([5, 10, 0.95, 0, 10, 0.6, 10])