【邢不行|量化小講堂系列18-Python量化入門】簡易波動指標(EMV)策略在A股的實證

引言:

邢不行的系列帖子“量化小講堂”,通過實際案例教初學者使用python進行量化投資,瞭解行業研究方向,希望能對大家有幫助。

【歷史文章彙總】請點擊此處

【必讀文章】EOS期現套利,一週時間,15%無風險收益

                     10年400倍策略分享(附視頻逐行代碼講解)

個人微信:xbx9025,有問題歡迎交流。

 


簡易波動指標(EMV)策略在A股的實證

上一期量化小講堂向大家介紹了布林帶策略在A股的實證效果。本期將以簡易波動指標(EMV)策略爲例,實證檢驗一下EMV策略在A股的實際效果。

—策略簡介—

簡易波動指標(EMV),是爲數不多的考慮價量關係的技術指標。它是根據成交量和人氣的變化,構成一個完整的股價系統循環。該指標指示投資者在人氣聚集且成交熱絡的時候買進股票,並且在成交量逐漸展現無力時,賣出股票。具體來說,當股價下跌時,由於買方萎靡退縮,致使成交量逐漸的減少,EMV數值也因而尾隨下降,直到股價下跌至某一個合理支撐區,撿便宜貨的買單促使成交量再度活躍,EMV 數值於是作相對反應向上攀升。所以EMV 指標的上升下降意味着市場的強弱變化,可以以此作爲擇時的判斷依據。

本文采用的EMV策略的具體規則爲:

第一步:計算EM指標的值

其中,$H_i,L_i,VOL_i$分別是第i日股票的最高價、最低價和成交量。

第二步:計算EMV = EM的n日簡單移動平均

第三步:計算MAEMV = EMV的m日簡單移動平均

第四步:當EMV大於MAEMV時,買入,信號爲1;當EMV小於MAEMV時,賣出,信號爲-1。


—實戰—

爲了檢驗EMV策略在A股的實際效果,本文將該策略在所有A股都運行一遍。由於策略用不同的參數回測結果也不一樣,因此對每隻股票回測時都遍歷一遍參數,選擇使超額收益率最大的參數作爲該股票的最優參數。具體步驟如下:

一、遍歷數據文件夾中所有股票文件的文件名,得到股票代碼列表

用python提取股票歷史數據文件夾下每個股票對應的文件名(即股票代碼)並存放到一個列表裏,這樣就得到了所有A股的代碼列表。

接着遍歷股票代碼的列表,讀取每隻股票的歷史數據。

二、計算股票的後復權價格

在讀取某隻股票的歷史數據後,爲了回測結果的可靠性,本文重新計算了復權後的開盤價、收盤價、最高價和最低價,後面計算指標值和漲跌幅都以復權後的數據爲基礎。有些上市不久的股票由於時間太短可能不具有代表性,因此本文在運行策略之前會先判斷該股票上市至今的交易天數,剔除掉上市不到1年半的股票。

三、遍歷參數進行回測

接着就是計算EMV指標並給出每天的信號了,在計算EMV和MAEMV時本文用到參數範圍分別是n取16到26,間隔爲2,m取20到25,間隔爲1。即遍歷該範圍內的所有參數組合,每一參數組都會輸出對應的每天的信號,根據買賣信號,可以得到每天的倉位,進而可以得到資金曲線及相關的回測指標(相關內容可參考量化小講堂)。在得到所有參數的回測結果後,根據超額收益率大小進行排序,選擇使超額收益最大的參數作爲該股票的最優參數,並將相應數據存入csv文件。

最後,在遍歷完所有A股後,我們可以得到每隻股票在最優參數組下使用EMV策略的回測結果,並和股票的年化收益及最大回撤做了一下對比。

本文希望通過對EMV策略的實際操作,向大家介紹pandas的以下幾個功能的運用:

1. 移動標準差函數rolling_std()函數的用法

2. 時間序列超前滯後函數shift()函數的用法

3. 空值填充函數fillna()函數的用法


—程序—

要運行EMV策略,需要所有A股的歷史交易數據,在www.yucezhe.com可以下載到所有股票歷史至今的數據。如下圖所示,每一行是每一天的數據:

數據有以下的字段:

  • 【code】股票的代碼,上證股票以sh開頭,深證股票以sz開頭
  • 【date】交易日期
  • 【open】開盤價
  • 【high】最高價
  • 【low】最低價
  • 【close】收盤價
  • 【change】漲跌幅,復權之後的真實漲跌幅,保證準確
  • 【volume】成交量
  • 【money】成交額
  • 【traded_market_value】流通市值
  • 【market_value】總市值
  • 【turnover】換手率,成交量/流通股本
  • 【adjust_price】後復權價,復權開始時間爲股票上市日,精確到小數點後10位
  • 【report_date】最近一期財務報告實際發佈的日期
  • 【report_type】最近一期財務報告的類型,3-31對應一季報,6-30對應半年報,9-30對應三季報,12-31對應年報
  • 【PE_TTM】最近12個月市盈率,股價 / 最近12個月歸屬母公司的每股收益TTM
  • 【PS_TTM】最近12個月市銷率, 股價 / 最近12個月每股營業收入
  • 【PC_TTM】最近12個月市現率, 股價 / 最近12個月每股經營現金流
  • 【PB】市淨率,股價 / 最近期財報每股淨資產

下面是代碼的截圖,代碼裏面有詳細的註釋,有問題可以留言,附件中有程序的源碼,回覆即可下載。

 

 

 

 

 

這是最後回測結果的部分截圖:

運行該策略的一共有2607只股票,其中,策略年化收益大於股票本身年化收益的有1950只個股,佔比大概爲74.8%,而年化收益除以最大回撤絕對值能超過股票本身的有2304只個股,大概佔88.4%,總的來說EMV策略的效果還不錯。大家有其他一些技術指標也可以嘗試一下,看看效果如何,只需要將第一部分信號產生方式改成自己的策略邏輯就可以了。

對本文研究有自己的想法的朋友,歡迎在評論區留言。關於文中的代碼、數據,以及下期《量化小講堂》想了解的內容,也可以加我個人微信xbx9025交流。

如果你想入門量化,但是始終找不到方向,可以加入我的知識星球。我會在裏面解答你的問題,分享我的感悟,不論是投資、技術,還是職業選擇、思維方式。 

                                                                         -- 學習和成長從來都不是一個人的事 --

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章