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

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

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

量化策略開(kāi)發(fā)第二步:回測(cè)平臺(tái)

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

量化策略開(kāi)發(fā)第三步:實(shí)盤(pán)平臺(tái)

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