算法交易

音量標準化

  • December 7, 2019

假設我們每分鐘都有捲,如下所示

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])

引用自:https://quant.stackexchange.com/questions/50149