zipline整体架构
在這里可以看出,zipline由下面幾個主要的部分構成
| 名稱 | 說明 |
|---|---|
| TradingAlgorithm | 量化策略的抽象,既可以通過初始化傳入構造上參數的方式,也可以通過繼承的方式構造,其中zipline命令行主要的運行入口邏輯run方法也在這個類中 |
| TradingCalendar | 交易日歷的抽象,這個類非常重要,無論是在構建數據的過程還是運行的過程,都可以用到 |
| DataPortal | 數據中心的抽象,可以通過這個入口獲取很多不同類型的數據 |
| AlgorithmSimulator | 使用generator的方式,表述了策略運行過程的主循環。如果說TradingAlgorithm更像是代表了策略本身,那么AlgorithmSimulator更像是策略的執行器,尤其要關注的是他的transform方法 |
| TradingEnvirioment | 構造運行環境,主要是benchmark和國債利率曲線等信息,對于美國的市場,這個類基本上不太需要關注,但是對于國內的市場,我么需要構建自己的TradingEnvironment |
Every zipline algorithm consists of two functions you have to define:
initialize(context)
handle_data(context, data)
context is a persistent namespace for you to store variables you need to access from one algorithm iteration to the next.
Zipline的本地化回測應用主要涉及2大塊內容:TradingEnvironment和TradingAlgorithm。
TradingEnvironment主要用于本地化交易環境設置,而TradingAlgorithm則是Zipline回測框架的主對象,可以理解為回測入口。
TradingEnvironment本地化最重要的就是設置:
tradingcalendar
benchmarke_return
treasury_return
tradingcalendar用于設置tradingdays,其默認已排除周六周日,因此只需要重寫一個py文件將每年對應的holiday(國內假期)從tradingdays除去即可。
而benchmarke_return和treasury_return則作為策略回報的比較基準,將國內滬深300和對應各期限國債收益率通過重載load函數導入,將load函數對象傳入至TradingEnvironment即可。
注意benchmarke_return為Pandas的Series對象,treasury_return為DataFrame對象,各期限必須包含1month ~ 10year間所有。
TradingAlgorithm的本地化則需要重點設置:simulation_parameters、initialize函數對象,handle_data函數對象。
simulation_parameters包括策略回測的起始日期和回測頻率,回測起始日期必須通過Pandas的tz_localize本地化,而回測頻率包含daily和minute兩種方式。
而initialize函數與handle_data函數則用于策略初始化和模擬Bar周期反復回調所用。
數據的準備:理論上Zipline只支持其內置的DataPortal類型,它是其回測模擬所有數據的接口。
考慮到通用性,Zipline目前也支持pandas的DataFrame和Panel,只不過它對DataFrame的支持就是將其很粗暴的轉換為Panel來實現的。因此,就目前來說,Zipline只支持內置DataPortal和Pandas的Panel兩種類型。所以,用戶可以將任何本地可獲取的數據首先轉換為DataFrame,其index按日遞增,columns為小寫的open、high、low、close和volume等。然后以DataFrame為value,數據ticker為key來構建相對應的Panel作為回測本地化的標準數據輸入。
總結
以上是生活随笔為你收集整理的zipline整体架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NETCONF
- 下一篇: 【Fiori系列】浅谈SAP Fiori