對量化交易感興趣的同學,對于回測系統肯定不陌生。以quantopian為藍本的回測平臺,國內已經一抓一把,那為什么還需要從頭實現一個系統?而且,什么是“搭積木式實現策略”呢? 對比現存的量化平臺,實現如下價值: 1,市面上量化系統引擎是黑盒(當然大部分是zipline——代碼是開源的,但可讀性一般),從頭實現可以做到知其然更知其所以然。 2,擁有自己的,代碼易讀性的系統,不用擔心策略泄漏。 3,提供一個構架清晰且易擴展的系統。 4,”積木式“寫策略,避免市面上那些冗長的模板代碼——這個是本系統的亮點之一。 5,下一步會擴展到深度強化學習、機器學習自動調參等。 系統運行示例 ”積木式“策略示例,如下實現“買入并持有”和“均線交叉”策略: buy_and_hold = Strategy([ RunOnce(), PrintBar(), SelectAll(), WeighEqually(), ],name='買入并持有-基準策略') long_expr ='cross_up(ma(close,5),ma(close,10))' flat_expr ='cross_down(ma(close,5),ma(close,10))' ma_cross = Strategy([ SelectByExpr(long_expr=long_expr,flat_expr=flat_expr), WeighEqually(), ],name='均線交叉策略') 幾乎沒有模板代碼,沒用調用api對不對?是的,就是這樣,我們把大量常用的算法都以模塊的形式,變成一個小小算法模塊,我們按照自己的策略想法,按需把積木搭起來就好了,簡單而且不容易出錯,基本是不需要調試的! 運行狀態截圖 策略指標 策略繪圖 背景說明 隨著機器學習,人工智能的火熱,AI+金融受到了很多關注。alpha go大敗李世石之后,master再次完勝柯潔,人們自然而然會想,如果把前沿AI技術應用到“離錢最近”的金融證券投資會取得什么樣的效果呢? Quant涉及很多的基礎知識,包括金融學,投資學,經濟學,數學,統計學,甚至物理學,心理學等等,Quant系統也很復雜,由從多子系統構成。而量化回測系統(Backtesting)幾乎是Quant系統里,最為基礎且最為重要的一環。 什么是回測系統? 量化交易,就是計算機按指定的策略,產生特定的交易信號。因為二級市場所有歷史數據、財務數據都是可獲得的,既然是計算機進行操作,就很容易對整個交易進行復盤。好比我們玩撲克牌或者“狼人殺游戲”,在一局結束,總有自認邏輯嚴密的人喜歡對游戲過程進行復盤,剛哪里可以做得更好,分析出了什么問題,確保后續如何優先,調整和提高。這就是“回測”系統的價值。 回測系統至少有如下優點: 一、回測系統幾乎是無代價的,我們可以調整參數,或者各種創造性的想法,這個系統會告訴你,在過往一段時間(比如一年),假如你真的這么交易了,收益率,風險,最大回撤是多少。這就避免我們花大量真金白銀去市場上買教訓。 二、更重要的事,節省時間,你可以在幾分鐘內模擬幾個股市周期,穿越牛熊。你如果要想經歷幾個股市周期,那估計是以10年甚至更長的時間維度來計算,但對于量化回測引擎,幾秒鐘就可以告訴你結果,且沒有產生實質的損失。 量化回測系統對于初學者是神秘的,但其原理并不復雜。此系列文章的目的,就是帶著大家,用python從零實現一個量化回測系統。 量化回測系統總體架構一覽: SymbolBroker —— 記錄單支證券交易詳情,包括持倉情況(position),交易傭金(Commission),證券的收盤價(Close)。投資組合(Portfolio)會根據外部給出的交易指令,調用SymbolBroker的接口,去更改該證券的持倉情況,并計算交易所產生的傭金。 Portfolio —— 記錄整個投資組合交易詳情,包含組合的總市值(total),現金余額(cash),交易傭金,同時維護一個SymbolBroker的dict,包含所有的證券的SymbolBroker。每一期,會根據傳入的FLAT(平倉)列表,把相應的證券平倉,同時根據需要持倉的證券的比例,將現金余額按指定的比例分配到對應的證券上。 TradingEnv —— 交易環境,根據策略(Strategy)產生的指令,調用Portfolio更新持倉組合情況。 DataFeed —— 數據獲取,目前支持quandl平臺的美股數據。 Strategy —— 策略,執行相應的“積木”模塊化的算法集合。 Algo —— 算法基類,用戶可以自行定義所需的算法模式。系統已經內置了許多常用的模塊,包括執行頻率,比如執行一次,按周執行,按月執行;資金分配模塊,按信號產生交易指令模塊等。 這就是系統的核心組件了,其中TradingEnv是系統的最外層。 外層循環 項目在github上開源,歡迎star。github項目-量化回測系統 |
|