量化投資對於數據源、回測、實盤平台的選擇




量化策略開發第一步:數據源

開發量化策略的第一個重要環節:如何獲取數據?

開發量化策略所需要的數據,包括歷史數據和實時數據。特別指出,我們只介紹免費的數據源,以幫助大家降低成本。

先從股票開始,股票的歷史數據,我們可以借用三方平台回測(例如優礦、聚寬、米筐等),相當於借用了平台的歷史數據,但平台歷史數據有一個問題:往往不能將全量數據下載到本地。想要自己搭建股票回測框架的話,推薦用tushare的數據,如果你是學生,tushare是可以免費使用的;而如果你有寫blog的習慣,也可以寫一些tushare相關的技術文,向tushare申請免費的積分以獲取數據權限。

一個tushare獲取數據的小栗子

對於實時數據,目前新浪財經、騰訊股票可以通過爬蟲抓取實時數據,我們曾分享過如何通過新浪財經,以及Easyquotation(包含新浪、騰訊財經接口)獲取數據的文章,傳送門:

實時獲取股票數據,免費!——Python爬蟲Sina Stock實戰

股票數據爬蟲:進階免費、開源的股票爬蟲Python庫,親測真香

然后再看期貨,期貨數據根據數據周期可以分為K線數據和tick數據。期貨的三方平台例如tbquant,提供了tbpy的接口。我們可以通過Python將平台提供的全量歷史k線數據下載到本地,來進行本地的回測,可以說是極為友好了。此外,比如tqsdk(快期天勤的Py接口),以及上文提到過的tushare,也能提供期貨的k線的歷史數據接口。

對於高頻策略需要用到的tick數據,就只能通過自編軟件來收集了,目前我們沒有看到三方平台或數據商有這一類免費的數據源提供。期貨的實時數據,由於有ctp api這個完全免費、高度成熟的期貨接口,任何人都可以通過這個接口接收交易所推送的標准行情數據,與此同時,我們可以配合mysql或mongodb,將數據落地,就形成了本地的tick級數據回測來源。

tick數據落地范例

 

 最后是數字貨幣,數字貨幣的歷史k線數據,可以通過cryptodatadownload網站獲取到。而tick數據,和期貨一樣,全量的數據,只能通過自編代碼收集。好在所有的主流數字貨幣交易所,都提供了api的接口,與期貨所不同的是,數字貨幣的api接口,不僅有websocket的實時行情推送,還可以通過rest api去查詢一定時間范圍內的歷史數據,可以將其落地,作為回測所需數據。關於數字貨幣歷史數據的收集,我們也曾經分享過實用的操作文章,傳送門

如何獲取免費的數字貨幣歷史數據


量化策略開發第二步:回測平台

開發量化策略的第二個重要環節:選擇合適的回測平台/框架

量化策略的回測,我們既可以借助成熟的三方平台,也可以用例如Python等語言自行編寫搭建回測框架。

先說三方平台,股票回測的三方平台,以聚寬、優礦、米筐這3個最常見,這3個平台都是Python API的結構,並且有完善的測試結果的可視化工具。

對於期貨的回測,K線策略同樣可以借助4大三方平台:tbquant、文華財經、金字塔、multicharts來實現,如果對於Python比較熟悉,也可以選擇天勤的tqsdk或者vn.py來回測,其中vn.py需自行對接歷史數據。

最后是數字貨幣,數字貨幣最出名的三方平台是FMZ,FMZ對回測來說是相對比較友好的,支持Python、JS、以及類似文華財經的易語言,但不建議用FMZ進行實盤,機器人托管費用實在是太高。除了FMZ,對於邏輯相對簡單的K線策略,我們也可以采用TradingView來進行測試,TradingView可以理解為是網頁版本的文華財經。TradingView的內置語言也比較簡單,適合初學者。TradingView回測數字貨幣策略,可以參考

如何使用TradingView(TV)回測數字貨幣交易策略

 

 

三方回測平台的優勢與劣勢

然后,我們來分析一下三方平台的優勢、劣勢。首先是優勢,第一點,三方平台把回測的基礎框架都搭建好了,用戶只需要專注最核心的策略邏輯部分,而不需要關注其他的底層;第二點,三方平台往往回測和實盤代碼是同一套,回測、實盤的邏輯由三方平台自建的底層代碼來做切換,給予用戶編程最大程度的方便。

說完優勢,我們再來看一下劣勢,第一,三方平台封裝好了底層,是一個雙刃劍,在提供編程便利的同時,也把底層變成了黑盒,有些指標計算、開平倉價格的細節,無法通過代碼去定位是否有潛在錯誤,導致回測結果變得不十分可信。代碼控制的不好,很容易產生未來數據或偷價格等錯誤,導致回測出上帝視角的策略效果。第二,三方平台的回測速度,往往不如自編更快,因為三方平台需要兼顧許許多多客戶的不同需求,增加越多通用性的功能,往往意味着性能上的妥協。第三,使用三方平台會產生一定的費用,例如需要購買歷史數據、服務器磁盤空間、實盤權限等等(畢竟免費的三方回測,也不是做雷鋒,總有其需要變現之處)。

總結一下,如果有一定的Python編寫能力,或是對於策略的回測精度細節要求很高,基本上只能自己搭建框架來回測;而如果測試一些通用的策略,且編程是剛剛上手的,那么三方平台能盡快地幫助你去實現一些想法,並驗證這些想法在歷史上是否可行,以及是否有應用到實盤的價值。

我們在此前的直播中,分別分享了基於K線策略的自編Python回測框架,以及基於橫截面策略的自編Python回測框架,感興趣的朋友可以參考

【系列培訓第三講】魔改經典策略:變種肯特納通道策略(完整錄播版)

【系列培訓第四講】量價之外:期貨基本面量化策略(完整錄播)



量化策略開發第三步:實盤平台

開發量化策略的第三個重要環節:選擇合適的實盤平台/API

首先是股票,股票目前監管較為嚴格,比較有名的像XTP,接入門檻在300萬-500萬起步;此外,市面上有一些類似外掛的接口,極不穩定,實盤請注意風險,不建議大資金使用,上述接口都是基於C++語言的。也有部分“科學家”用Python開發了類似按鍵精靈功能的偽接口,不算是完善的接口,實盤同樣需要注意風險。

再說期貨,期貨入門門檻最低的是4大三方平台:tbquant、文華財經、金字塔、multicharts,這4個平台采用編程極為友好的easylanguage,建議編程初學者使用,但有需要支付額外手續費、速度慢等缺點;再難一點的是vn.py,開源的python平台,對於熟悉python的同學比較友好;然后更為復雜的就是C++ API了,大家用的最多的是ctp,速度更快的還有ctp mini、盛立、艾克朗科、恆生等。對於平台的選擇,如果做的是中低頻的策略,優選4大平台或vn.py,但如果做高頻策略,C++是必須配置,ctp是起步要求,如果策略對於速度要求更高的話,選用盛立等以FPGA作為底層的平台更合適。FPGA為底層的交易系統(下圖是一個典型的FPGA通路),可以將交易系統的響應速度提升到極致。

 

 

最后是數字貨幣,數字貨幣的三方平台都需要收取不菲的手續費,不建議大家使用。幾乎所有數字貨幣交易所都提供了免費接口,而接口中Python又是最通用的語言。如果大家需要交易數字貨幣的策略,建議直接接入交易所的Python API,或借助三方Python庫CCXT來接入。CCXT接入數字貨幣交易所可以參考傳送門

如何利用CCXT交易數字貨幣合約

對於數字貨幣來說,不論是中低頻還是高頻策略,物理位置的延遲都遠遠大於語言的延遲,所以不像期貨那樣一定要用C++語言。舉個例子,比如做火幣和BitMex之間的套利,一個服務器在日本,另一個在歐洲,傳輸的物理時間是主要延遲,語言的延遲與物理時間的延遲,不在一個量級。因此,Python作為一個數字貨幣交易所通用型接口支持的語言,具有開發相對便捷、擴展性高的優勢,是適合作為數字貨幣交易系統的實盤開發語言的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM