A. 如何系統地學習量化交易
首先,我對這個問題是完全不知道怎麼回答,為此,我專門去請教了我的老師。
我理解很難有一個定量交易的所謂的系統學習過程,定量的只是手段,交易邏輯是多樣的,你可以通過形態描述,追蹤市場方法,如不合理的降價,也可以把天體物理、小波分析、神經網路等復雜模型應用其中,你可以做的是K線結構上的策略,也可以做日線或每500毫秒數據進行決策的策略。所有的一切目的就是為了獲利,所謂量化和程序化只是實現這一目的的手段。
一個strategist需要思考策略的思維框架,實現方式,而developer則是側重了前後端介面,輸入輸出,界面設置,風控機制,平台拼接等等很多很多方面。其實很不相同吧。
B. 做量化交易選擇什麼語言好呢
量化交易,就是把人能夠識別的信息變成數字,輸入給計算機程序處理,輔助或者代替人類的思考和交易決策。
初學者碰到的第一個問題就是工具的選擇。首先大部分交易員本來不會寫程序,選擇任何一個語言進行策略開發,都有不小的學習成本。更重要的是,選擇了一門語言,接下來開發環境、人員招聘、數據介面與平台、甚至同類人群之間的交流、遇到問題後的支持,都跟著被「套牢」。所以從一開始就必須慎重對待。
先給出答案:對於還沒有確定一套固定量化環境的,建議用Python。
量化交易員面臨的大致選擇有:C/C++/java/C#/R/Matlab/excel等。我們從以下幾個方面考慮簡單做個對比。
注意:這里假設你團隊規模在50人以下。
1 學習成本和應用的廣泛性
C、C++的特點是速度最快,但要想用好,必須對計算機底層架構、編譯器等等有較好的理解,這是非計算機專業的人很難做到的,對於做量化交易來說更是沒有必要。
Java本來是SUN的商業產品,有學習成本和體系的限制,也不適合。
Excel面對GB級別的數據無能為力,這里直接排除。
Python、R和Matlab學起來都簡單,上手也快,可以說是「一周學會編程」。但R和Matlab一般只用來做數據處理,而Python作為一門強大的語言,可以做任何事,比如隨時寫個爬蟲爬點數據,隨時寫個網頁什麼的,更何況還要面對處理實時行情的復雜情況。
2 開始做量化分析後,哪個用起來碰到問題最少,最方便省事?
用歷史數據的回測舉例。假設我們有2014年所有股票的全年日線,現在我們想看看600001的全年前10個最高股價出現在什麼時候。python世界有個強大的pandas庫,所以一句話就解決問題:
dailybar[dailybar [『code』]==『600001』].sort_values([『close』].head(10)
R/Mathlab等科學語言也可以做到。
C/C++沒有完備的第三方庫。如果為了做大量的計算,要自己實現、維護、優化相應的底層演算法,是一件多麼頭疼的事。
Python從一開始就是開源的,有各種第三方的庫可以現成使用。這些底層功能庫讓程序員省去了「造輪子」的時間,讓我們可以集中精力做真正的策略開發工作。
3 現在我們更進一步,要做實時行情分析和決策
以A股的入門級L1數據為例,每3秒要確保處理完3000條快照數據,並完成相應的計算甚至下單。這樣的場景,C和C++倒是夠快了。所以行情軟體比如大智慧、同花順等客戶端都是使用高效率的語言做的,但像客戶端那樣的開發量,絕大部分量化交易機構沒能力也沒必要去做吧。
python的速度足夠對付一般的實時行情分析了。其底層是C實現的,加上很多第三方的C也是C實現,盡管其計算速度比不上原生C程序,但對我們來說是足夠啦。
4 quant離職了,他的研究成果怎麼辦
Python是使用人群最多、社區最活躍的語言之一,也是最受quant歡迎的語言之一。如果你是老闆,你能更容易地招聘到優秀人材,享受到python社區帶來的便利。
附幾個量化中常用的python庫:
- Pandas:
天生為處理金融數據而開發的庫。幾乎所有的主流數據介面都支持Pandas。Python量化必備。
- Numpy:
科學計算包,向量和矩陣處理超級方便
- SciPy:
開源演算法和數學工具包,與Matlab和Scilab等類似
- Matplotlib:
Python的數據畫圖包,用來繪制出各類豐富的圖形和報表。
PS: Python也是機器學習領域被使用最多的語言之一。像tensorflow、scikit-learn、Theano等等對python都有極好的支持。
C. 如何利用matlab對交易策略進行回測
這個很簡單啊,我現在就在用matlab做期貨量化的回測呢
關鍵的構成:
一是:形成自己策略的思想和流程圖
二是:從TB或者其他軟體中導出需要的tick等級別的數據,根據自己的思想和流程圖編輯程序,最好多使用function函數句柄,是程序的可適性增強。
三是:繪制圖片,plot,mesh或者GUI,來觀測自己參數對策略的影響,進而進一步完善策略
四是:多用cell元胞數組,根據TB等回測報告形成自己的測試報告,比如空多盈虧,回撤等等。
D. 請問大家什麼軟體能夠用外部指標進行歷史回測
需要一些比較專業的統計軟體。第三方炒股軟體一般都做的不好,有些我拿更權威的統計軟體去計算,發現結果居然是錯的。這個是個人經驗(不過有點過時了,2012年嘗試的,估計那個軟體自己已經把錯誤更改了。)。
建議你做以下操作:
自己收集外部指標,並隨時更新。如果可以的話,自己建個資料庫。MYSQL之類的,免費而且非常容易上手。
選擇一款可以輕松將金融數據導出成標准格式的第三方炒股軟體。這個就是你自己的喜好了。大部分軟體,這方面做的還是不錯的,雖然要交費。
用一款比較專業的統計軟體,將兩者數據導入,然後按自己的想法,自由自在的做分析。你可以隨便選一款你自己使用著習慣的統計軟體。EVIEWS之類的太簡單,包含的東西太少了。高度建議你選擇一些自帶金融計量分析工具的軟體。建議你用以下統計軟體:
MATLAB。這個上手超快,前提是你很好的學過線性代數,因為計算是以矩陣為基礎的。他自帶的financial econometrics tool box包含的東西非常廣,非常全。就算沒有,因為軟體自由度很高,所以可以輕松自己創造出一個。
STATA。這個上手比上面那個還快。而且,不需要很好的線性代數,因為編程理念不是以矩陣為基礎的。自帶的金融計量的東西很多很全。更新也很快。缺點是,沒上面那個自由度高。某些全新的演算法和公式,你想用的話,自己寫出來比較費勁,效率也容易低。特別是你想做蒙特卡羅模擬實驗的時候。
其他的那些免費的統計軟體,比如R, OX之類的我並不建議。因為是免費的,所以用戶體驗做的並不好。
E. 怎麼獲取股票數據c++ api
基本都是自己封裝CTP介面,程序端實現多賬戶、多策略的行情信號接收和委託提交/回報處理。也可以用 QuantBox/QuantBox_XAPI · GitHub 這樣的封裝的比較好、多介面統一API的項目直接整合到程序化平台的項目中使用。
通過程序介面用證券、期貨賬號登錄後訂閱品種的行情,證券、商品期貨、股指期貨、期權(全真模擬,9號就有實盤行情)都可以接收交易所的快照數據(例如商
品、股指都是500ms一個快照,數據結構也比較完整)。然後交易平台可以把行情數據廣播給各個策略程序,程序根據量化策略的邏輯判斷是否下單?掛單的方
式如何?掛單失敗是否追單?如何追單?
策略程序判斷要下單,則提交指令到程序化交易平台,平台把各個帳號各個品種中策略的邏輯持倉匯總為實際持倉,然後通過介面提交委託,並且處理委託回報。
行情數據一方面廣播給策略程序,一方面自己存資料庫,存下來的數據通過完整性檢測後,可以自己合成低頻率的數據,如
1分鍾、30分鍾、1小時、日度等等,這些數據會被用於策略回測,也可以用於市場微觀結構的觀察和研究,例如可以通過優化掛單方式來降低交易滑點。
Matlab可以做一些回測,實盤可能是比較不易用的。一般可以用C++, Java, C#來利用CTP程序化交易介面實現實盤平台,策略研究推薦用R做數據分析、統計、處理、可視化、策略分析、自動報告,用Rcpp(R調用C++)或者直接C++實現高性能回測,用單機並行或集群實現批量回測。