程式

如何將各種指標正規化為一列?

  • February 14, 2017

我看過這個影片,它討論瞭如何將不同的指標壓縮成一個罪

https://www.youtube.com/watch?v=sDu6CudKa0Q

我試圖通過這種方式做同樣的事情:

data_hist['sma10']  = talib.SMA(data_hist['close'].values, 10)  
data_hist['difsma'] = data_hist['close'] - data_hist['sma10']  
data_hist['cci10']  = talib.CCI(data_hist['high'].values, data_hist['low'].values, data_hist['close'].values, 10)  
data_hist['mom5']   = talib.MOM(data_hist['close'].values, 5)


data_hist.dropna(inplace=True)  

cols = ['cci10', 'mom5', 'difsma']  
data_hist['norm'] = ( data_hist[cols].sum(axis=1) - data_hist[cols].mean(axis=1) ) / data_hist[cols].std(axis=1)

但這是輸出數據的一個例子(它不在 -1 和 1 之間……)

2013-09-11 00:00:00+00:00   -1.557247
2013-09-12 00:00:00+00:00   -1.686368
2013-09-13 00:00:00+00:00   -2.160459
2013-09-16 00:00:00+00:00   -2.805381
2013-09-17 00:00:00+00:00   -2.770916
2013-09-18 00:00:00+00:00   -1.726371
2013-09-19 00:00:00+00:00   -1.610760
2013-09-20 00:00:00+00:00   -1.645410
2013-09-23 00:00:00+00:00    2.143846
2013-09-24 00:00:00+00:00    1.863802
2013-09-25 00:00:00+00:00    1.847545
2013-09-26 00:00:00+00:00    1.956981
2013-09-27 00:00:00+00:00    2.507031
2013-09-30 00:00:00+00:00   -0.856816
2013-10-01 00:00:00+00:00    1.422277
2013-10-02 00:00:00+00:00    1.604809 

我錯過了什麼?將各種指標壓縮在單個列中的任何替代方法?

規範化的數據不應該在 $ [-1,1] $ ,但它們應該以 0 為中心(因為您減去樣本的平均值),並且值從 0 開始分佈,使其在不同的變數大小之間具有可比性(因為您除以標準偏差樣本)。

一個簡單的例子是假設你比較兩個隨機樣本 $ X $ 和 $ Y=7 \cdot X $ . 看到這些點可能有點“困難” $ X $ 和 $ Y $ 實際上,它們以相同的方式分佈,但對於比例因子,只需查看值即可。

但正規化的數據會顯示它們實際上是完全相同的:

$$ X_\text{normalized} = \frac{X-\mu_X}{\sigma_X} $$ $$ \begin{align} Y_\text{normalized} &= \frac{Y-\mu_Y}{\sigma_Y} \ &= \frac{7X-7\mu_X}{7\sigma_X} \ &= \frac{X-\mu_X}{\sigma_X} \ & = X_\text{normalized} \end{align} $$ This, however, does not imply it will be contained between -1 and 1.

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