提到量化交易,大家就會想到 FPGA,,微波,高頻,納秒級別延遲,對沖基金這些大名詞——并且認(rèn)為這些高端技術(shù)是基金公司的專利,不是普通人能玩的轉(zhuǎn)的事兒。所以,搭建私人量化平臺,看起來似乎是不可能的任務(wù)。 今天,就讓點融黑幫的技術(shù)專家,教你用一種簡單易行的方法顛覆這個認(rèn)知。 導(dǎo)語中提到的各種技術(shù)是高頻交易(HFT)經(jīng)常采用的,但量化交易不等同于高頻交易。交易根據(jù)頻率來劃分的話,可分為: 高頻: ticke納秒級別的 1s級別 中低頻:1s~1h級別 超低頻:1d~1w 等長線投資 高頻交易對延遲,性能和穩(wěn)定性要求非常高,需要大量的硬件的成本和人工成本,一般只有基金公司才有能力進(jìn)行高頻交易。 硬件上的極高要求,導(dǎo)致個人無法參與高頻交易, 但中低頻交易對硬件要求就會低很多。個人與基金公司差距主要體現(xiàn)在算法上,普通程序也有能力捕獲到這一頻度的交易信號。 搭建平臺的步驟 如果做過外匯交易的同學(xué)應(yīng)該知道,著名MetaTrade4 (mt4) 交易客戶端. Mt4客戶端提供一整套交易策略開發(fā)框架平臺。 支持MQL4語言(語法與C語言類似) ,而且提供了非常豐富的指標(biāo),擴(kuò)展函數(shù)。可以很方便地開發(fā)交易策略和進(jìn)行回歸測試。在零售外匯領(lǐng)域很多個人交易者或者專業(yè)的交易者都使用MT4做自動化交易。MT4有相當(dāng)活躍的社區(qū),國外有很多論壇討論和分享MT4 EA程序。但是令人遺憾的是 Mt4 客戶端必須配合Meta Qutes服務(wù)器使用。所以Mt4 一般只限制在外匯行業(yè)使用。 如果想要分析A股,或者比特幣,就需要自己搭建一套環(huán)境。一般搭建一個量化平臺需要這些步驟: 開設(shè)證券賬戶 >開發(fā)環(huán)境搭建->數(shù)據(jù)準(zhǔn)備 ->交易策略開發(fā)->回歸測試->模擬交易-> 實盤交易 1開設(shè)證券賬戶 下面介紹幾種比較適合個人交易證券品種: 國內(nèi)A股:怎么開戶大家應(yīng)該都只,目前由于政策的原因,股票交易的第三方接口都關(guān)閉。不過歷史數(shù)據(jù)比較容易獲取。所以國內(nèi)股票的量化主要集中在選股和趨勢分析。自動交易等明年市場穩(wěn)定后,應(yīng)該會重新開放。 期貨:商品期貨開戶門檻比低。股指期貨要至少50萬資本。期貨這一塊主要是CTP協(xié)議。網(wǎng)上都可以找到j(luò)ava,和python的封裝。對開發(fā)者真友好。 債券:可轉(zhuǎn)債, 開戶資金有要求。 外匯:開戶門檻比較低一般50美元起。但需要選擇信譽比較好的券商。有一些比較知名的券商比如Oanda 會有提供HTTP api 接口。如家交易者資金有比較大,可以直接到LP 提供商如果,lmax,cfh開戶。LP提供會提供FIX交易接口。FIX接口非常適合程序化交易。 美股,期貨,期權(quán):IB(interactive broker)賬戶有提供程序化交易接口,賬戶最低余額需要1萬美元。其它美股券商,如史考特,或者國內(nèi)的老虎證券,富途對資金沒有要求,但都沒提供API。 比特幣:可以選選擇coinbase, bitstamp. 這兩個公司總部都是在美國,各方面監(jiān)管比較嚴(yán)格,所以開戶周期比較長。都提供有API. 2開發(fā)環(huán)境搭建 目前主流的兩種平臺是,python和R語言。這兩個語言有提供回測框架,時間序列分析,統(tǒng)計分析的庫。當(dāng)然也可以使用Java,C++,不過但開發(fā)難度要大一些。 Python :目前應(yīng)該是最普遍的個人量化技術(shù)。相關(guān)的開源框架相當(dāng)豐富。比如Panda ,Scipy, numpy, Zipline (Backtest framework ) 。 R:高級算法比較方便,社區(qū)比較活躍。 Java ,C++:沒有的時間序列操作框架,自己寫比較麻煩。 MatLab:算法庫比較成熟,但處理大量數(shù)據(jù)比較麻煩。 3數(shù)據(jù)準(zhǔn)備 國內(nèi)的股票,有一些服務(wù)商提供,比如通聯(lián)數(shù)據(jù),tushare。國外證券數(shù)據(jù)可以從 xignite.com獲取。 還有一些信息,比如新聞,匯率。需要自己寫爬蟲去抓取?;蛘咄ㄟ^一些數(shù)據(jù)提供商去購買。 得這些數(shù)據(jù)后就可以導(dǎo)入到數(shù)據(jù)庫去。關(guān)于數(shù)據(jù)庫的選擇,一般使用Mysql ,如果數(shù)據(jù)量比較大(>100G)可以使用mogodb。一般個人不會這么大數(shù)據(jù)量。 這些準(zhǔn)備看起來很有難度和麻煩的樣子。 的確,筆者曾經(jīng)搭建一個python的初級量化平臺,也要花費個3周時間。很多人,特別是非程序員,很有可能在還沒開始寫代碼前就放棄了。不過別著急,我們還是B計劃。 數(shù)據(jù)準(zhǔn)備的第2種方式 搭建一個量化平臺,需要做一些繁瑣的準(zhǔn)備工作: 搭建開發(fā)環(huán)境,準(zhǔn)備歷史數(shù)據(jù)。 很多同學(xué)心里想 “我只想好好寫代碼,不想準(zhǔn)備這些臟活”。有一些互聯(lián)網(wǎng)的創(chuàng)業(yè)者也看到這個問題。最近今年出現(xiàn)的一些創(chuàng)業(yè)公司提供cloud+social量化交易平臺,比較出名有: 。Quantopian 操作非常便捷,給你一站式體驗。 打開:https://www./algorithms/ 選擇:Sample Mean Reversion Algorithm Build 代碼注釋里有什么這個算法。 執(zhí)行 Build 然后 BackTest 結(jié)果就可以出來。 你可以在2,3分鐘內(nèi),使用全部美股分鐘級別報價數(shù)據(jù) 測試交易算法。并且給出非常好看的分析報表, 甚至不用注冊。此外quantopian上的社區(qū)也比較活躍。經(jīng)常有媒體把quantopian當(dāng)做互聯(lián)網(wǎng)創(chuàng)新的案例。 從去年開始國內(nèi)也逐漸出現(xiàn)一些模仿者 如Ricequant,優(yōu)礦。國內(nèi)這些平臺都提供了A股數(shù)據(jù),對于國內(nèi)交易者是個好笑。目前國內(nèi)平臺處于起步階段,還不是很穩(wěn)定。目前推廣比賽比較多。 想試試手的交易者,可以先嘗試這些Saas量化平臺。不過這些量化平臺在,交易品種,數(shù)據(jù)和算法上都有一定限制。 4交易算法開發(fā) 說了這么如何多如果搭建平臺,總算開始寫代碼。說到交易算法,同學(xué)玩玩會想到那些高大上的,如機器學(xué)習(xí),馬爾可夫模型,大數(shù)據(jù)分析,深度學(xué)習(xí),神經(jīng)網(wǎng)絡(luò)。這些名稱天天被媒體炒作預(yù)測。 那么什么樣算法比較適合個人交易? 對于普通交易者可以選用簡單高效的算法。畢竟個人交易者精力有限??梢試L試從這幾方面去探索。 1、將自己操作和想法程序化 三連陽 ,買低價股 或者你聽說過什么神奇的操作手法都是用代碼測試一遍。畢竟我們都是理科生(talk is cheap ,show me the code). 一般實現(xiàn)起來都比較簡單都比較簡單。也可以將自己的猜想和經(jīng)驗用代碼實現(xiàn)成交易策略。然后使用歷史數(shù)據(jù)進(jìn)行回測。比如最近比較火的一個帖子。這為同學(xué)就只買小盤股。收益率令人吃驚。 2.傳統(tǒng)的指標(biāo)交易 像均線,MACD ,布林帶等,蠟燭圖理論,RSI, 波浪理論。 這些純技術(shù)分析指標(biāo)需要在特定的場景才能有作用。大家都聽說過海龜趨勢,可能都覺挺有道理的。但真實情況如何,可以A股或者外匯數(shù)據(jù)測試一下。就會發(fā)現(xiàn)長期收益率不是特別好??梢匀ニ伎寄切┣闆r使用那些指標(biāo)。 3.多因子選股 每個股民都有自己的選股理論,比如有人會看市盈率,換手率,市盈率,行業(yè)情況,成交量。 這些篩選因素很簡單,但要是從幾千股票里去篩選,往往需要大量精力。程序就能特別好解決這些問題。 比較專業(yè)的交易者也可以嘗試一下高級的算法。比如機器學(xué)習(xí),大數(shù)據(jù)分析等。大數(shù)據(jù)在金融交易領(lǐng)域應(yīng)用還是處于開始階段。從目前信息來看,大數(shù)據(jù)基金收益的還算不錯,比如百度和廣發(fā)證券合作的 百發(fā)指數(shù)基金,騰訊和嘉實合作的大數(shù)據(jù)基金。 5回歸測試&模擬交易 如果回測效果不錯,收益率,最大回撤率,Sharp值,等指標(biāo),都在可接受的范圍內(nèi)容,你肯定就會興奮急著要上真實交易,甚至開始計劃成立私募基金 。 但在真的實盤交易前,還需要做一兩個月模擬交易(paper trading) 。很多回測效果很好的策略不一定在模擬交易時候就表現(xiàn)的好。歷史數(shù)據(jù)是固定,回測的時候可以通過不斷調(diào)整參數(shù),讓各項指標(biāo)趨于完美,有時候會導(dǎo)致算法過度擬合,因為市場總是千變?nèi)f化,太過意死板的算法是無法適應(yīng)市場變化。 模擬交易最終效果一般取決于你的程序是否靈活,是否良好的風(fēng)險和資金管理算法。 總結(jié) 有耐心看到這里的人,想必大部分都是程序員。可能最終你寫代碼不會真的拿去去實盤交易,或者上線后甚至?xí)潛p 。但在實踐過程中,可能會花幾個小時或者幾天去優(yōu)化和思考那幾十行代碼。這樣的經(jīng)歷會提高你對代碼的理解能力思考的深度,而且也是一件很有意思的事情。 本文作者:李國建(點融黑幫),現(xiàn)就職于點融網(wǎng)成都團(tuán)隊Data Team,喜歡研究各種機器學(xué)習(xí),爬蟲,自動化交易相關(guān)的技術(shù)。 |
|