国产农村妇女毛片精品久久-东京热加勒比无码少妇-国产全肉乱妇杂乱视频-国产熟妇久久777777

我已授權

注冊

賈瑞斌:使用甲醇庫存數據開發基本面量化策略

2019-06-27 07:56:04 和訊名家 

 

  1

  概述

  

  在諸多從期貨投資交易的公司中,基本面分析一直處于認知上的重要地位,但想要把對基本面的正確認識轉換為對交易的成功執行,則需要很強的交易藝術,這二者之間的鴻溝如同千軍萬馬過獨木橋,能跨越的研究員終究是少數。

  而量化交易的優勢在于明確的交易執行,但在邏輯分析上卻無法自圓其說,尤其是多數的量化模型都是對價量數據的一階、二階乃至N階的變換,再怎么變換也依然是對價量數據的交易。就如同用土豆做菜,無論是炒酸辣土豆絲、醋溜土豆絲,還是蒸土豆、燜土豆,即使花樣再多,也還是脫離不了土豆的范疇。而隨著參與者的增加,類似策略的收益會顯著下降。

  在上述兩種局面陷入僵局的情況下,基本面量化策略可以給期貨行業打開新的大門,基于基本面的策略邏輯性強,而量化工具的加入又可以提供精準的買賣點支持。而基本面數據千千萬,基于這些數據產生的高維數據更是不可勝數,這也讓量化交易能夠脫離簡單的價量數據束縛,尋找到更有價值的策略藍海。

  基于上述目的,再加上本人IT和甲醇基本面研究的背景,我這兩年開發出了多種基本面量化交易策略,也有一些心得體會,在此選擇性地向大家做個匯報。

  值得指出的是,我使用的基本面的數據有的來自于資訊機構,有的來自于研究員提供,但這些不同來源的數據已被集成在天風期貨研究所自己使用的風云研究平臺上,從而可以極大地方便我開展量化策略的開發。目前系統已經收集了上萬個不同維度的基本面指標和5000萬個基本面的數據點,其涵蓋的分析維度之豐富遠超想象。

  下面我將以甲醇的庫存數據為例,詳細介紹基本面量化策略的開發過程。該策略定型于一年前,參數從未調整過,但即使如此,該策略在近一年(即樣本外)依然取得了較好的成果,凸顯出了基本面的力量。而更復雜的策略可以該策略為藍本進行疊加開發。

  2

  基本面邏輯的設計

  搞基本面量化有兩種思路,一種是把基本面的思路清晰化、邏輯化、數量化,然后寫成代碼,塞入量化環境進行參數調優,從而獲得基本面量化模型。

  另一種思路是編寫無監督學習模型,直接喂給系統成千上萬個基本面的數據點,讓系統自己去找規律,這其中可能會發現一些不為人知的機會,但黑箱式的機會卻意味著很難從邏輯上去進行解釋(或只能強行解釋)。

  對于研究員來講,從前一種思路入手是比較可靠的思路。

  下面我們先來看一下甲醇庫存與價格的關系。如下圖,左軸為庫存,右軸為價格,從標出的淺藍色線框上,可以明顯看出,去庫價格上行,累庫價格下行。這在視覺上存在直觀的對照關系,而邏輯上也存在較強的可行性。

  因此我們可以編寫出如下最簡單的代碼(即偽代碼):

  偽代碼是一種代碼邏輯,不能直接運行,但是能夠幫助代碼初學者理清思路。如果公司有IT開發團隊,研究員可以利用偽代碼與編程人員更好地進行交流。

  了解了偽代碼,我們返回頭來看這個邏輯中的問題。從上面價格庫存對比圖上可以看出,市場多數時間的庫存其實變化并不明顯,可能只是兩三萬噸的擾動,這種擾動可能會導致市場產生錯誤的交易信號,而庫存數據的小反彈和小回撤也可能會給出錯誤的信號。因此有必要對上述偽碼進行修正,比如庫存單期增加3萬噸(這里的3萬噸就可以是動態參數,可通過后期參數自動調優)或者連續兩周增加才發出交易信號:

  我們繼續觀察庫存與價格,可以發現在下圖的藍圈處,低庫存的情況下去做空經常容易被打臉,即使后續走勢能夠與庫存帶來的驅動一致,但這期間要承擔的浮虧也是難以忍受。所以我們可以做一些信號過濾,或者是頭寸管理,比如默認開單是50手,但低庫存的空單只允許開5手。高庫存的多單,也只允許開5手。這里的高和低,可以認為設置,也可以由計算機自行優化。而開多少手,也可以設置為參數,讓系統自己去優化。當然了,頭寸管理可以配置地更細一些。

  新編寫的偽碼如下:

  在此,一個帶頭寸管理的粗略基本面量化策略的原型就基本編寫完成了。下面我們進入實戰環節。

  3

  量化平臺的選擇

  進入實戰領域,首先面臨的是量化平臺的選擇。當前市場上有諸多量化回測平臺,比較方便入門的有開拓者、文華財經WH8,追求效率的有OpenQuant,基于python且代碼簡潔的有VNPY、quicklib,支持在線策略開發的有聚寬、點寬,甚至還有Matlab和Wind自帶的量化工具萬礦。

  這些平臺各有所長,沒有絕對的NO.1。由于我們需要用自己的基本面數據做回測,這部分數據在Wind里也未見的全,再加上python代碼編寫的便利性,因此我們選擇VNPY作為本文的回測平臺。

  VNPY的安裝過程我們略過不提,大家可以參考github網站上的安裝指南。目前系統版本已更新到2.0,但我個人使用VNPY較早,對應的版本號為1.5。1.5與2.0的版本差異較大,后文附上的代碼不能直接使用,需要大家自己動手修改,或者也可以從github上下載1.5的版本。

  4

  編寫量化策略的核心部分

  選擇好了平臺之后,就需要按照平臺的要求準備各類文檔。

  對于VNPY平臺,需要準備的有如下文檔:

  1.基本面數據獲取方法(類或文件)

  2.獲取到的基本面數據

  3.交易標的(這里指期貨合約)價量數據獲取方法(類或文件)

  4.獲取到的交易標的價量數據

  5.策略文件

     1. 基本面數據獲取方法

  

  

  我們基本面的數據來自于自己的風云系統,需要編寫指定的數據獲取方法,告訴風云系統我需要哪個指標、什么維度、什么頻率、開始時間、結束時間之類的信息,然后由風云系統給我返回數據。

  這個方法一般會定義成【類】或者是【函數】,函數的意思跟我們數學中的函數有些像,比如A=F(x),其中F就是函數,x就是參數,A就是返回的結果。至于這個F是對x進行了方,還是開方,還是怎么樣的數學變化,則是【函數】里面的內容了。

  我們想要實現的目標是,甲醇庫存數據表=F(甲醇港口庫存,日度,2011-1-1,至今)。但如果我們想拿開工數據做回測,則甲醇開工數據表=F(甲醇全國開工率,日度,2011-1-1,至今)。這樣通過定義函數,就避免了把整個方法重寫一次。

  該【函數】的寫法因人而異,取決于我們基本面數據存在什么地方。比如說存在excel里面,那該方法就是去讀excel,篩選對應的行和列,重組生成想要的數據。

  我們的數據存儲在風云系統中,是通過接口訪問數據,所以文檔中主要寫的就是構造符合要求的接口請求,并把返回來的數據重組成想要的數據。部分代碼如下。

     2.獲取到的基本面數據

  獲取到的基本面數據要存儲在系統內,后續回測時用的到。

  首先這類數據都是時間序列數據,其次這些數據可能跟盤面高開低收的數據一起作為策略的輸入參與計算。為了便于后續的開發,因此建議將所有的數據都保存在類似如下表中:

  其中基本面數據的開、高、低等屬性可以為空。

  

  

  時間

  

  開

  

  高

  

  低

  

  收

  

  量

  

  倉

  

  MA01

  

  2019-06-12

  

  2010

  

  2050

  

  2000

  

  2015

  

  Xxxx

  

  Xxxx

  

  MA01

  

  2019-06-13

  

  2015

  

  2045

  

  2005

  

  2010

  

  Xxx

  

  Xxxx

  

  ……

  

  

  

  

  

  

  

  

  甲醇港口庫存

  

  2019-07-31

  

  

  

  

  54.75

  

  

  

     3.交易標的價量數據獲取方法

  交易標的的價量數據跟基本面數據類似,也是一個【函數】,但這個函數跟基本面數據函數可能是不是同一個,原因在于交易標的的價量數據可以包含盤口等信息,如果跟基本面數據用同一個函數可能顯得比較臃腫,后期代碼不便于調整,畢竟寫代碼強調高內聚低耦合的特征。

  獲取數據需要注意避免重復獲取同一數據,否則會導致系統內出現重復的日期或重復數據,甚至是沖突的數據,從而使策略回測的可靠性大幅下降。

  但也要注意的是,我們常常從Wind獲取期貨交易數據,但下午4:00前獲取的數據有時會缺少最高價、最低價等信息,這就提示我們在數據獲取方法中,要注意屏蔽有空值的數據,或者是用新的數據替換掉舊的沖突數據等。

     4.交易標的價量數據

  交易標的的價量數據獲取到后也要存儲在一張實體表中,方便回測使用。交易標的表中最好加入盤口信息,但如果不需要回測高頻交易,也可以不加。

     5.策略文件

  策略文件的編寫就是把我們之前的偽代碼轉換為系統能夠運行的代碼,是整個回測體系中的核心。VNPY提供了多個量化回測的策略模板,我們利用模板進行修改后,就可以生成自己的量化策略。本文最后給大家提供的也是這份策略文件。

  模板本身的結構可以給大家簡要介紹下

  i.           Class XXX #定義策略名

  i.             Init   #初始化

  i.             onStart    #啟動策略時執行的操作

  ii.             onStop   #停止策略時執行的操作

  iii.             tick               #跳價變化時執行的操作(本文不考慮)

  iv.             Bar               #K變化時執行的操作(劃重點!)

  v.             Order    #發送委托的操作

  vi.             Trade     #成交回報的操作

  其中最重要的就是Onbar操作,部分核心代碼截圖如下

  5

  策略的回測與調優

  策略編寫完成后,就可以塞入回測引擎,生成回測報告了。我們還可以根據回測報告的表現,讓VNPY幫忙完成參數調優的過程。

  下圖是策略跑完的回測報告。

  下圖是跑完的賬戶權益,值得注意的是,2018年1月中旬權益發生斷崖式下跌,其實因為01合約換月所致。所以后續的曲線其實應該整體向上平移。能夠注意到這一點,就可以走入更深的交易細節了,譬如合約換月怎么辦,合約活躍量怎么評價,劃點怎么計算等。但整體來看,在考慮了手續費和滑點之后,甲醇的基本面策略還是取得了比較優秀的成果。

  盈虧頻數分析中,最大的那筆虧損其實也是合約換月所致。

  各位讀者可能看圖片不太直觀,也可以通過訪問下面的鏈接得到更好的體驗。下文中的策略數據也是會日度自動更新的。

  策略鏈接地址:

  http://robinjia.top/hangqing/kucunStrategyma01.html

  6

  總結與思考

  經過了上文的量化之旅,相信各位對怎么開展基本面量化也有了初步的認識,回顧過去的量化經歷,我有如下想法與諸君共勉:

  1.基本面的量化是研究價值最大化的利器,是給研究員插上了量化的翅膀,是商品交易領域的藍海

  2.基本面的量化就跟生活一樣,從來沒有容易二字,如果沒有親自寫過策略代碼,那就不可能是一個好的Quants(寬客)。

  3.基本面量化,重點不在于選參數進實盤,而在于把基本面的正確認知用代碼實現,所以不應該迷信參數,要迷信的是正確的邏輯。

  最后,給大家分享下文章開篇答應過的核心代碼。

本文首發于微信公眾號:撲克投資家。文章內容屬作者個人觀點,不代表和訊網立場。投資者據此操作,風險請自擔。

(責任編輯:張洋 HN080)
看全文
寫評論已有條評論跟帖用戶自律公約
提 交還可輸入500

最新評論

查看剩下100條評論

熱門新聞排行榜

推薦閱讀

    和訊熱銷金融證券產品

    【免責聲明】本文僅代表作者本人觀點,與和訊網無關。和訊網站對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。