1. 程式人生 > >量化投資策略回測框架(一):勝率的估算

量化投資策略回測框架(一):勝率的估算

上次簡單介紹了回測之前的一些準備工作。這裡,將進一步介紹如何對一個投資策略就行完整的回測。

雜言:人啊,還是要做自己喜歡做的事情。勇於嘗試,是非常好的,當感覺不合適的時候,要儘早跳出。年輕人,還是不要太安逸,所以從財富跳到了私募。事情也是自己喜歡做的了。有時你會糾結,你是要一份體面的實習,或者工作,還是有挑戰性的,喜歡做的。和別人交流時,說你在一個小私募,和說你在某某總部,完全是不一樣的概念。結果,貌似自己把兩個某某總部都拒了。年輕人,還是累點好,多闖闖,安逸什麼的,不太合適哦。

回測一般分為兩種:勝率的估算和收益風險比的估算。勝率,指的是一個策略執行固定的週期,在所有的交易次數中,盈利的次數所佔的百分比。收益風險比的估算,指的是設定策略回測週期,給定初始資金,假定按完全按策略執行,結束時的收益風險比情況,包括收益率、最大回撤等。(就是通常意義上的回測,例如優礦、米匡和聚寬等給出的策略回測結果)。在進行回測時,必須合理的進行評估,如果對策略不是很確定,或者策略的一些引數還很模糊,可以先進行勝率的估算,檢視其結果,以評估策略是否可能有效,再決定是否進行完整的回測。畢竟,相對而言,勝率的估算較為簡單。

以雙均線策略為例,簡要說明如何搭建勝率估算的框架。所用工具:

  • anaconda 3.5(windows環境下搭建python環境)

  • python + eclipse + pydev(python編譯環境)

  • wind資訊金融終端(應用量化介面,獲取相應資料)

策略邏輯:

  • 全市場選股,股本大於1億,流通市值小於50億

  • 5日均線上穿10日均線,次日收盤買入,持有三天賣出

  • 新股成立的兩月內不做考慮

  • 回測時間:2015.03.01 — 2015.08.05

回測過程中,大部分的時間往往消耗在與wind的通訊中,為節約時間,同時便於檢測回測結果是否正確,一般儘可能的將可能重複利用的資料,以及重要資料儲存到本地。

簡單流程如下所示。主要分為四部分:

  1. 獲取待選標的,這裡待選標的為全市場股票

  2. 對標的進行基本面篩選,這裡限制條件為股本和流通市值

  3. 下載行情資料到本地,這裡下載的資料為【日期 股票程式碼  收盤價  ma5  ma10】

  4. 根據行情資料,確定每次的買點和賣點

  5. 估算勝率,將結果儲存到本地,進行進一步的分析。


對於其他策略而言,無外乎這幾大步驟,進行具體策略的估算時,對相應部分進行邏輯的重構即可。示例的勝率估算為44.88%。(最後給出示例程式碼)。

對於44.88%的勝率而言,則要具體問題具體分析了。記得參加寬客聚會時,一位大佬說過,商品期貨的勝率可能連50都不到,這樣的情況下,必須設定嚴格的止盈止損。設定點位可能為止損5%,止盈10%。也就是判斷準確地時候,儘可能多賺點。所以,個人感覺,勝率要根據個人經驗來看了,通過設定止盈止損,或者說嚴格的風險控制,可能勝率不高也可以接受哦。

附上拙略的程式碼吧,工程目錄結構如下,主要應用函數語言程式設計,儘可能將各功能模組分離,以期重複利用。

getStock.py(獲取全市場股票):


selectStock.py(基本面篩選):


tradeStock.py(下載行情資料到本地):


tradeData.py(篩選買點和賣點):


calWin.py(估算勝率):



示例程式碼至此結束。結果就懶的貼出來了。上述程式碼,不僅對於估算勝率有用,在進行收益風險比的估算的時候,同樣會用到。後續再搭建吧。