生活随笔
收集整理的這篇文章主要介紹了
[转载]Python量化交易平台开发教程系列0-引言
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文出處:http://vnpy.org/2015/03/04/20150304_Python%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93%E5%B9%B3%E5%8F%B0%E5%BC%80%E5%8F%91%E6%95%99%E7%A8%8B%E7%B3%BB%E5%88%970-%E5%BC%95%E8%A8%80/
?
為什么用Python來開發(fā)量化交易平臺
目前本人所在的公司一共有三款平臺,分別基于C++, C#和Python。其中C#和Python平臺都是由交易員開發(fā);C++平臺則是由專職IT團隊作為一個通用平臺開發(fā),內(nèi)部組件進行了封裝(交易員不可見),對外提供行情、交易的API用于策略開發(fā)(除了C++ 外也包括C#和Python可用的API)。
理論上這款C++平臺應(yīng)該是最為穩(wěn)定和強大的,由專業(yè)人士設(shè)計,同時采用封裝核心,暴露API,支持組件模塊開發(fā),linux服務(wù)器運行的形式。
但是在實際運用中,交易團隊表達了一個強烈的觀點:這個平臺實在是太難用了!
由IT團隊設(shè)計的API功能非常強大,但是也太過繁瑣,導(dǎo)致學(xué)習(xí)曲線極為陡峭。為了追求速度,沒有設(shè)計原生GUI(本來就為了在Linux服務(wù)器上跑),但是今天絕大多數(shù)的非超高頻(追求微秒級延遲的那種)交易策略,幾乎都需要有人實時監(jiān)控,你總不能讓交易員盯著個linux shell上不斷print出來的內(nèi)容或者盤中去翻日志吧,這個運維風(fēng)險就扛不起。盡管可以作為插件的形式開發(fā)GUI,但C++本身的GUI開發(fā)還是較為復(fù)雜的,非專業(yè)IT很難搞的定。交易員團隊的需求變化很快,通常等不及IT去排班開發(fā),最好是今天收盤有個點子,明天開盤就能開始接實盤數(shù)據(jù)驗證,沒問題后天就能上實盤。比如去年四季度的分級基金套利機會就是稍縱即逝,那段時間如果能快速開發(fā)完成一套專門的監(jiān)控套利系統(tǒng),抓住的利潤絕對會比用excel接wind數(shù)據(jù)來的多不少。某些業(yè)務(wù)邏輯確實太過復(fù)雜,交易員想解釋讓IT明白,無奈IT并不是太擅長某些金融領(lǐng)域(比如期權(quán)高頻套利的整個業(yè)務(wù)框架),交流成本太高。用web開發(fā)來做比較的話,C++實現(xiàn)的量化交易平臺像是java在網(wǎng)絡(luò)開發(fā)領(lǐng)域的地位,強大(幾乎無所不能)、穩(wěn)定(無數(shù)大公司的支持),但是也很臃腫(你一兩個人開發(fā)試試)。
以上的原因促成了我堅持使用Python開發(fā)一個交易平臺,這款平臺的定位好比于node.js為前端工程師(用戶體驗的直接締造者)提供了一個簡潔又不失強大的后端平臺,主要的目標(biāo)用戶群是中小型量化團隊(根據(jù)我的經(jīng)驗,絕大部分的券商自營、期貨資管和基金量化部門都不大)、專業(yè)的交易員團隊(可以雇得起少量專職IT)以及一部分打算從互聯(lián)網(wǎng)領(lǐng)域轉(zhuǎn)行來的程序猿們(Python在互聯(lián)網(wǎng)公司用的不少)。
Python在量化平臺開發(fā)方面的優(yōu)缺點
優(yōu)點
動態(tài)語言的快速開發(fā)特性,封接口有boost.Python,寫GUI有PyQt,時間序列有numpy,等等,幾乎你想干的事都有現(xiàn)成的庫可以用,這里吐槽下公司大牛自己寫C++里的簡單移動平均(SMA)算法,確實比常規(guī)實現(xiàn)快不少,但似乎對pnl沒什么直接幫助。學(xué)習(xí)成本低,這點算是個共識了吧?真需要低延遲的時候,膠水語言很容易通過其他語言拓展:cython, ctypes, boost.Python等等。運行速度足夠快,也許和C++比起來確實慢了不少,但是就我的經(jīng)驗來看,這點速度延遲對90%的策略pnl毫無影響。缺點
GIL,該死的全局鎖導(dǎo)致Python無法有效利用多核CPU的性能,盡管可以通過拓展繞過去,但還是沒有其他語言原生多線程利用多核的方案來的簡便。沒有靜態(tài)類型檢查,重構(gòu)的時候確實有點痛苦,不過一個良好的編程范式可以有效解決這個問題。不適合用來搞超高頻策略(追求微秒級延遲的差異),得承認(rèn)這點Python確實搞不過C++。常規(guī)基于TICK級數(shù)據(jù)的策略沒問題。為什么會有這個系列
2015年的春節(jié)期間突然萌發(fā)了啟動一個開源量化交易平臺開發(fā)框架項目的想法,原因包括:
國內(nèi)很多的機構(gòu)和個人量化投資者,在受夠了一些商業(yè)軟件的束縛后(TB、金字塔等)想基于柜臺API進行直接開發(fā),然后在C++的.h頭文件、網(wǎng)上一些不成體系的開發(fā)指南、不知道如何構(gòu)建程序核心架構(gòu)等等問題中賺的一頭霧水后放棄。國外有相當(dāng)多類似的項目,比如AlgoTrader、Tradelink、Marketcetera等等開源交易平臺有著大量的用戶和活躍的社區(qū)。目前國內(nèi)據(jù)我所知只有海風(fēng)的AT平臺項目(基于C#),QuantBox項目當(dāng)前更多只是一個柜臺API的統(tǒng)一化封裝(當(dāng)然封裝的非常漂亮,有興趣的建議直接看看源代碼)。在本人的整個求學(xué)經(jīng)歷中,發(fā)現(xiàn)最佳的學(xué)習(xí)方式之一就是自己當(dāng)老師,當(dāng)你試著把某種知識教給別人時,你對這種知識的掌握會更加細(xì)致深入。拋磚引玉,本人是交易員出身,編程算是半路出家,不專業(yè)的地方很多,通過這個項目和業(yè)內(nèi)人士多多交流。TB之類的商業(yè)軟件不算,國內(nèi)目前最大量化交易社區(qū)應(yīng)該是C#(交易)和Matlab(研發(fā)),而能兼顧交易和研發(fā)的Python社區(qū)居然十分弱小,實在是不能忍。授人以魚不如授人以漁,目前這個項目vn.py已經(jīng)發(fā)布在了github上,包含了基于華寶證券LTS API的Python封裝和事件驅(qū)動引擎,魚竿準(zhǔn)備好了,剩下的就是學(xué)習(xí)如何釣魚。一方面也是因為自己之前在學(xué)習(xí)過程中遇到的最大問題之一就是目前國內(nèi)缺乏一個成體系的量化平臺開發(fā)教程,所以發(fā)布項目后的下一步工作就是編寫這個教程系列。
系列內(nèi)容安排
整個系列文章目前預(yù)計包含的內(nèi)容如下:
類CTP交易API的工作原理類CTP交易API的Python封裝設(shè)計vn.py項目中API封裝的編譯,其他交易API的封裝事件驅(qū)動引擎原理和使用華寶LTS交易平臺開發(fā):登陸、訂閱市場行情華寶LTS交易平臺開發(fā):交易功能華寶LTS交易平臺開發(fā):持倉、交易、下單監(jiān)控聯(lián)系作者
本人的知乎號:用Python的交易員,可以通過知乎私信聯(lián)系到我,一些和開源項目、教程相關(guān)的問題交流也會發(fā)在知乎上。
轉(zhuǎn)載于:https://www.cnblogs.com/MMonica/p/5188218.html
總結(jié)
以上是生活随笔為你收集整理的[转载]Python量化交易平台开发教程系列0-引言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。