搭建量化系統|股票數據的除權和復權

在行情軟件中常常會看到除權、復權選項,咱們選擇不一樣的選項,軟件上股票的價格回相應地轉換。spa

在量化交易中,咱們開發了一個交易策略,須要對策略在歷史行情數據上進行回測,那麼咱們該選擇除權,仍是復權,哪種形式的行情數據呢?3d

除權一般是除權除息的簡稱,這兩種狀況會在走勢圖上出現不一樣程度的下跌缺口,咱們稱爲除權缺口。code

除權除息會使投資者誤認爲是一個向下跳空缺口,以下所示:cdn

圖片描述

若是根據除權的股價去計算股票漲跌幅顯然是不對的,同花順軟件裏面顯示的是-52.49%。一樣計算獲得的各種指標也是毫無參考價值的。blog

爲了使得走勢圖能真實反映各股價趨勢,除權除息後的價格是要通過復權處理後纔有可比性。接口

拿剛纔的例子來講。2016年6月27日新但願收盤價爲17.64元,次日6月28日每十股轉增10股,紅利5.5元,那麼股票除權以後的收盤價應該是(17.64 – 0.55) * 10 / (10 + 10) = 8.55元,6月28日的收盤價是8.38,真實漲跌幅應該是8.38 /8.55 - 1 = -1.99%,而不是軟件上顯示的-52.49%。圖片

當咱們獲得股票第一天的價格以後,經過真實漲跌幅的連乘計算,就能夠計算出以後每一天的復權價,這個叫作後復權價。一樣的,知道了股票最後一天的價格,那麼反向處理也就能夠計算出以前每一天的價格,這個叫作前復權價。開發

接下來咱們分別用接口獲取「新但願」除權、前復權、後復權的行情數據,以下所示:it

# "除權"
"""
             High    Low   Open  Close     Volume
Date                                             
2010-01-04  14.38  13.94  13.94  14.17  216924.78
2010-01-05  14.28  13.85  14.22  14.18  107631.41
2010-01-06  14.31  13.87  14.15  13.88   89684.00
2010-01-07  13.97  13.38  13.80  13.48   85856.01
2010-01-08  13.64  13.35  13.43  13.62   58864.09
...           ...    ...    ...    ...        ...
2019-12-25  18.79  18.44  18.59  18.60  207776.34
2019-12-26  18.76  18.46  18.69  18.60  189935.42
2019-12-27  19.43  18.58  18.74  19.28  504214.70
2019-12-30  19.50  18.92  19.24  19.38  379296.95
2019-12-31  20.31  19.55  19.55  19.95  562873.40

[2244 rows x 5 columns]
"""
# "後復權"
"""
              High     Low    Open   Close     Volume
Date                                                 
2010-01-04   75.15   72.85   72.85   74.05  216924.78
2010-01-05   74.63   72.38   74.32   74.11  107631.41
2010-01-06   74.79   72.49   73.95   72.54   89684.00
2010-01-07   73.01   69.93   72.12   70.45   85856.01
2010-01-08   71.28   69.77   70.19   71.18   58864.09
...            ...     ...     ...     ...        ...
2019-12-25  261.18  256.31  258.40  258.54  207776.34
2019-12-26  260.76  256.59  259.79  258.54  189935.42
2019-12-27  270.07  258.26  260.48  267.99  504214.70
2019-12-30  271.05  262.99  267.43  269.38  379296.95
2019-12-31  282.31  271.74  271.74  277.30  562873.40
"""
# "前復權"
"""
             High    Low   Open  Close     Volume
Date                                             
2010-01-04   5.41   5.24   5.24   5.33  216924.78
2010-01-05   5.37   5.21   5.35   5.33  107631.41
2010-01-06   5.38   5.21   5.32   5.22   89684.00
2010-01-07   5.25   5.03   5.19   5.07   85856.01
2010-01-08   5.13   5.02   5.05   5.12   58864.09
...           ...    ...    ...    ...        ...
2019-12-25  18.79  18.44  18.59  18.60  207776.34
2019-12-26  18.76  18.46  18.69  18.60  189935.42
2019-12-27  19.43  18.58  18.74  19.28  504214.70
2019-12-30  19.50  18.92  19.24  19.38  379296.95
2019-12-31  20.31  19.55  19.55  19.95  562873.40

[2431 rows x 5 columns]
"""

初步看在2010年1月的股價,除權和前復權、後復權相差較大。接下來可視化收盤價進行對比:class

圖片描述

圖片描述

圖中可知他們相差甚大,用除權數據執行策略回測效果會和真實狀況相差不少。
因而,當咱們獲取的數據爲除權數據時,咱們須要轉換爲前復權/後復權數據。

這裏的關鍵是獲取到剛纔提到的真實漲跌幅數據,這樣咱們能夠在該數據的基礎上計算出前/後復權因子。咱們之前復權爲例,以下所示:

"""
trade_date
2019-12-31    0.97
2019-12-30    0.97
2019-12-27    0.93
2019-12-26    0.93
2019-12-25    0.93
              ... 
2010-01-08    0.25
2010-01-07    0.26
2010-01-06    0.27
2010-01-05    0.27
2010-01-04    0.26
Name: fd_factor, Length: 2244, dtype: float64        
"""

若是未包含漲跌幅數據時,根據除權股價所計算獲得的漲跌幅是不正確的。如下pct_chg1爲除權股價的漲跌幅,可見與原始的漲跌幅pct_chg差異很大,pct_chg2爲差值。

"""
            pct_chg  pct_chg1  pct_chg2
Date                                   
2010-01-04     2.83       NaN       NaN
2010-01-05     0.07  7.06e-04      0.07
2010-01-06    -2.12 -2.12e-02      2.10
2010-01-07    -2.88 -2.88e-02      2.85
2010-01-08     1.04  1.04e-02      1.03
...             ...       ...       ...
2019-12-25     0.38  3.78e-03      0.37
2019-12-26     0.00  0.00e+00      0.00
2019-12-27     3.66  3.66e-02      3.62
2019-12-30     0.52  5.19e-03      0.51
2019-12-31     2.94  2.94e-02      2.91

[2244 rows x 3 columns]

"""

處理完成後,咱們再次可視化「新但願」的收盤價數據,以下所示。可見將除權股價復權後,與前復權曲線重合。

圖片描述

對於後復權來講,選取初始價格不一樣相應計算獲得的復權價格也會不同。好比咱們從2010年1月1日那天開始後復權獲得的行情數據和收盤價走勢圖以下所示:

# "後復權"
"""
             High    Low   Open  Close     Volume
Date                                             
2010-01-04  14.38  13.94  13.94  14.17  216924.78
2010-01-05  14.28  13.85  14.22  14.18  107631.41
2010-01-06  14.31  13.87  14.15  13.88   89684.00
2010-01-07  13.97  13.38  13.80  13.48   85856.01
2010-01-08  13.64  13.35  13.43  13.62   58864.09
...           ...    ...    ...    ...        ...
2019-12-25  49.98  49.05  49.45  49.48  207776.34
2019-12-26  49.90  49.10  49.72  49.48  189935.42
2019-12-27  51.68  49.42  49.85  51.29  504214.70
2019-12-30  51.87  50.33  51.18  51.55  379296.95
2019-12-31  54.03  52.00  52.00  53.07  562873.40

[2244 rows x 5 columns]
"""

圖片描述

以上咱們介紹了除權和復權的定義,以及它們之間的區別,最重要的是在回測時須要考慮當股票發生拆分,合併或者分成時,股票價格由於除權而受到影響。後續咱們會繼續推出回測中如何去處理除權的狀況。

關於以上內容更多的探討歡迎你們關注【元宵大師帶你用Python量化交易】!!

相關文章
相關標籤/搜索