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