一、概述
1、如果條件允許,實盤交易之前,將自己的策略用某種方式回測/復盤一下
做權益資產的量化投資,首先要有個自用的回測平臺或者框架(以下簡稱回測框架),自己的投資思路在交易之前就能快速得到初步驗證,如果這一步都不能通過,就不用花費更多時間、精力和金錢進行后續(xù)的仿真交易、實盤交易了。
有詩為證:“回測績效好的策略不一定能賺錢,回測績效不好的策略一定不能賺錢”
2、回測平臺的選擇
回測框架可以用任何自己熟悉或者順手的語言來編寫,也可以用商業(yè)化的黑盒平臺,或者商業(yè)化的開放式平臺,他們各有優(yōu)缺點。
商業(yè)化平臺的優(yōu)點是功能成熟完備,而且有專職技術支持服務,常見的策略類型也有代碼模板,方便使用者快速上手,缺點是有一些個性化的數據與功能無法短期內根據客戶的需求加入,另外既然是商業(yè)化了,就有使用成本,有的平臺費用還不低,后續(xù)如果想轉換到其他平臺,或者該平臺不再對外提供回測框架服務,如果內嵌的語言差異比較大,將代碼移植到新平臺的工作量也不小。
自己編寫的平臺,其優(yōu)缺點與商業(yè)化平臺的大部分相反,優(yōu)點是完全開源,只要有數據源,想加的數據和功能都能自己加,缺點是開發(fā)工作量大,功能沒有那么成熟完備,有的功能實現受限于代碼質量,效率沒有那么高。每個人都可以根據自己的需求選擇最合適的。
3、回測平臺的結構
回測框架的核心結構類型一般分成兩種,一種是矢量型,將各類市場數據進行矢量化計算,其優(yōu)點是計算速度很快,結果很快就能出來,缺點是主要適用于比較簡單、情況比較規(guī)整的場景,例外情況多時就不大好處理,另外不注意時有可能引用未來數據。
另外一種是事件驅動型,參考實際交易過程中,從產生交易信號,到信號變委托、委托變成交的整個過程,定義了相應的各類事件,以及每類事件發(fā)生時的相應措施。這類框架的優(yōu)點是框架比較完整,只要有數據源,理論上能夠處理所有市場交易中發(fā)生的事情,而且不大容易出現引用未來數據的情況,缺點是框架相對比較復雜,運行相同思路的策略,速度沒有矢量型那么快。
我的回測平臺是用python編寫的事件驅動類型的無界面平臺。
二、事件驅動型框架結構介紹
大致的框架如圖所示。

簡要介紹:
1、從數據源獲得數據之后,根據數據源來源、內容的不同,分別保存到本地的 sqlite db、dolphin db、pickle files 中備用,并每日更新。
2、事件驅動管理中心(簡稱“管理中心”)是整個框架的核心,負責各類事件的定義、訂閱、響應管理等。
3、基于管理中心,衍生出策略回測、策略運行、因子/指標計算三個應用。
4、應用在運行過程中產生的重要信息,根據內容的不同,分別保存到本地數據庫或者本地文件中,策略回測的績效統(tǒng)計形成帶圖表的績效報告。
5、因為事件驅動框架下策略回測的思路與策略運行的思路比較接近,一個策略如果回測階段合格,轉入運行階段時,核心代碼修改量比較小,只要切換一下委托撮合與賬戶信息獲取等方法即可。
6、采用事件驅動框架計算因子/指標,只用處理行情事件,在同一個時間橫截面上,計算所有安排計劃中指標/因子的當期值。這樣處理的優(yōu)點是,一次性更新所有指標/因子,并立即入庫。如果中途發(fā)生中斷,下次計算,所有指標/因子都在中斷日繼續(xù)往下計算。并且雖然首次計算并入庫時比較費時間,后續(xù)每日更新時,所用時間并不是很多;缺點是如果指標/因子的參數值發(fā)生變化了,需要將其歷史值單獨重算后加入。
三、策略類別
目前將策略分成三大類:
1、只擇時的策略
基于各類技術指標,對指定的權益資產進行擇時(比如各類CTA策略)。目前暫時沒有把期貨合約的數據納入,主要是對指數、基金、股票擇時。
2、只選股的策略
基于各類因子,定期對資產池中的權益資產進行橫截面選股,并形成資產組合。
3、既擇時也選股
基于指標,對指數進行擇時(即判斷指數方向),如果方向向上,就進行選股。
四、運行效果展示
(以下策略都沒有考慮交易成本和滑點,僅用于展示,不代表最終效果)
1、指數擇時策略:對滬深300指數擇時

2、指數擇時,股票選股策略:對滬深300指數進行擇時(選方向),處于上行狀態(tài)時根據bp、roe選股。

3、定期選股策略:
每個月最后一個交易日,根據bp、roe選股。

五、相關資源
此框架最初的版本在 這里,感興趣的可以去看看。