開發(fā)量化策略所需要的數(shù)據(jù),包括歷史數(shù)據(jù)和實時數(shù)據(jù)。特別指出,我們只介紹免費的數(shù)據(jù)源,以幫助大家降低成本。
量化策略開發(fā)第一步:數(shù)據(jù)源

量化策略開發(fā)第一步:數(shù)據(jù)源

開發(fā)量化策略的第一個重要環(huán)節(jié):如何獲取數(shù)據(jù)?
先從股票開始,股票的歷史數(shù)據(jù),我們可以借用三方平臺回測(例如優(yōu)礦、聚寬、米筐等),相當于借用了平臺的歷史數(shù)據(jù),但平臺歷史數(shù)據(jù)有一個問題:往往不能將全量數(shù)據(jù)下載到本地。想要自己搭建股票回測框架的話,推薦用tushare的數(shù)據(jù),如果你是學(xué)生,tushare是可以免費使用的;而如果你有寫blog的習(xí)慣,也可以寫一些tushare相關(guān)的技術(shù)文,向tushare申請免費的積分以獲取數(shù)據(jù)權(quán)限。
對于實時數(shù)據(jù),目前新浪財經(jīng)、騰訊股票可以通過爬蟲抓取實時數(shù)據(jù),
然后再看期貨,期貨數(shù)據(jù)根據(jù)數(shù)據(jù)周期可以分為K線數(shù)據(jù)和tick數(shù)據(jù)。期貨的三方平臺例如tbquant,提供了tbpy的接口。我們可以通過Python將平臺提供的全量歷史k線數(shù)據(jù)下載到本地,來進行本地的回測,可以說是極為友好了。此外,比如tqsdk(快期天勤的Py接口),以及上文提到過的tushare,也能提供期貨的k線的歷史數(shù)據(jù)接口。
對于高頻策略需要用到的tick數(shù)據(jù),就只能通過自編軟件來收集了,目前我們沒有看到三方平臺或數(shù)據(jù)商有這一類免費的數(shù)據(jù)源提供。期貨的實時數(shù)據(jù),由于有ctp api這個完全免費、高度成熟的期貨接口,任何人都可以通過這個接口接收交易所推送的標準行情數(shù)據(jù),與此同時,我們可以配合mysql或mongodb,將數(shù)據(jù)落地,就形成了本地的tick級數(shù)據(jù)回測來源。
最后是數(shù)字貨幣,數(shù)字貨幣的歷史k線數(shù)據(jù),可以通過cryptodatadownload網(wǎng)站獲取到。而tick數(shù)據(jù),和期貨一樣,全量的數(shù)據(jù),只能通過自編代碼收集。好在所有的主流數(shù)字貨幣交易所,都提供了api的接口,與期貨所不同的是,數(shù)字貨幣的api接口,不僅有websocket的實時行情推送,還可以通過rest api去查詢一定時間范圍內(nèi)的歷史數(shù)據(jù),可以將其落地,作為回測所需數(shù)據(jù)。
量化策略開發(fā)第二步:回測平臺

量化策略開發(fā)第二步:回測平臺

開發(fā)量化策略的第二個重要環(huán)節(jié):選擇合適的回測平臺/框架
量化策略的回測,我們既可以借助成熟的三方平臺,也可以用例如Python等語言自行編寫搭建回測框架。
先說三方平臺,股票回測的三方平臺,以聚寬、優(yōu)礦、米筐這3個最常見,這3個平臺都是Python API的結(jié)構(gòu),并且有完善的測試結(jié)果的可視化工具。
對于期貨的回測,K線策略同樣可以借助4大三方平臺:tbquant、文華財經(jīng)、金字塔、multicharts來實現(xiàn),如果對于Python比較熟悉,也可以選擇天勤的tqsdk或者vn.py來回測,其中vn.py需自行對接歷史數(shù)據(jù)。
最后是數(shù)字貨幣,數(shù)字貨幣最出名的三方平臺是FMZ,F(xiàn)MZ對回測來說是相對比較友好的,支持Python、JS、以及類似文華財經(jīng)的易語言,但不建議用FMZ進行實盤,機器人托管費用實在是太高。除了FMZ,對于邏輯相對簡單的K線策略,我們也可以采用TradingView來進行測試,TradingView可以理解為是網(wǎng)頁版本的文華財經(jīng)。TradingView的內(nèi)置語言也比較簡單,適合初學(xué)者。
三方回測平臺的優(yōu)勢與劣勢
學(xué)姐可以把當時上岸的備考規(guī)劃給你。少走1個月的彎路,同時我把備考的資料分享給大家,都是課程的內(nèi)部資料,大家需要的可以戳下面卡片領(lǐng)取↓↓↓
然后,我們來分析一下三方平臺的優(yōu)勢、劣勢。首先是優(yōu)勢,第一點,三方平臺把回測的基礎(chǔ)框架都搭建好了,用戶只需要專注最核心的策略邏輯部分,而不需要關(guān)注其他的底層;第二點,三方平臺往往回測和實盤代碼是同一套,回測、實盤的邏輯由三方平臺自建的底層代碼來做切換,給予用戶編程最大程度的方便。
說完優(yōu)勢,我們再來看一下劣勢,第一,三方平臺封裝好了底層,是一個雙刃劍,在提供編程便利的同時,也把底層變成了黑盒,有些指標計算、開平倉價格的細節(jié),無法通過代碼去定位是否有潛在錯誤,導(dǎo)致回測結(jié)果變得不十分可信。代碼控制的不好,很容易產(chǎn)生未來數(shù)據(jù)或偷價格等錯誤,導(dǎo)致回測出上帝視角的策略效果。第二,三方平臺的回測速度,往往不如自編更快,因為三方平臺需要兼顧許許多多客戶的不同需求,增加越多通用性的功能,往往意味著性能上的妥協(xié)。第三,使用三方平臺會產(chǎn)生一定的費用,例如需要購買歷史數(shù)據(jù)、服務(wù)器磁盤空間、實盤權(quán)限等等(畢竟免費的三方回測,也不是做雷鋒,總有其需要變現(xiàn)之處)。
總結(jié)一下,如果有一定的Python編寫能力,或是對于策略的回測精度細節(jié)要求很高,基本上只能自己搭建框架來回測;而如果測試一些通用的策略,且編程是剛剛上手的,那么三方平臺能盡快地幫助你去實現(xiàn)一些想法,并驗證這些想法在歷史上是否可行,以及是否有應(yīng)用到實盤的價值。
量化策略開發(fā)第三步:實盤平臺

量化策略開發(fā)第三步:實盤平臺

開發(fā)量化策略的第三個重要環(huán)節(jié):選擇合適的實盤平臺/API
首先是股票,股票目前監(jiān)管較為嚴格,比較有名的像XTP,接入門檻在300萬-500萬起步;此外,市面上有一些類似外掛的接口,極不穩(wěn)定,實盤請注意風(fēng)險,不建議大資金使用,上述接口都是基于C++語言的。也有部分“科學(xué)家”用Python開發(fā)了類似按鍵精靈功能的偽接口,不算是完善的接口,實盤同樣需要注意風(fēng)險。
再說期貨,期貨入門門檻最低的是4大三方平臺:tbquant、文華財經(jīng)、金字塔、multicharts,這4個平臺采用編程極為友好的easylanguage,建議編程初學(xué)者使用,但有需要支付額外手續(xù)費、速度慢等缺點;再難一點的是vn.py,開源的python平臺,對于熟悉python的同學(xué)比較友好;然后更為復(fù)雜的就是C++API了,大家用的最多的是ctp,速度更快的還有ctp mini、盛立、艾克朗科、恒生等。對于平臺的選擇,如果做的是中低頻的策略,優(yōu)選4大平臺或vn.py,但如果做高頻策略,C++是必須配置,ctp是起步要求,如果策略對于速度要求更高的話,選用盛立等以FPGA作為底層的平臺更合適。FPGA為底層的交易系統(tǒng)(下圖是一個典型的FPGA通路),可以將交易系統(tǒng)的響應(yīng)速度提升到極致。
最后是數(shù)字貨幣,數(shù)字貨幣的三方平臺都需要收取不菲的手續(xù)費,不建議大家使用。幾乎所有數(shù)字貨幣交易所都提供了免費接口,而接口中Python又是最通用的語言。如果大家需要交易數(shù)字貨幣的策略,建議直接接入交易所的Python API,或借助三方Python庫CCXT來接入。
對于數(shù)字貨幣來說,不論是中低頻還是高頻策略,物理位置的延遲都遠遠大于語言的延遲,所以不像期貨那樣一定要用C++語言。舉個例子,比如做火幣和BitMex之間的套利,一個服務(wù)器在日本,另一個在歐洲,傳輸?shù)奈锢頃r間是主要延遲,語言的延遲與物理時間的延遲,不在一個量級。因此,Python作為一個數(shù)字貨幣交易所通用型接口支持的語言,具有開發(fā)相對便捷、擴展性高的優(yōu)勢,是適合作為數(shù)字貨幣交易系統(tǒng)的實盤開發(fā)語言的。
高頓教育
精彩內(nèi)容已結(jié)束,欲知更多CQF考試相關(guān)內(nèi)容,請移步【報考指南】欄目!一鍵輕松GET最新CQF報名流程、考試內(nèi)容、證書獲取等全面信息!CQF(量化金融分析師)考證新征程,高頓教育CQF陪您一起走過!