Python選股策略與Zipline回測框架 EP1 – 多因子選股介紹與zipline基本操作

選股工作流程與第一支回測程式

這支影片主要在介紹zipline的基本操作以及講一下大綱。

這系列影片的第一個目標是介紹如何進行一個簡單的多因子選股流程:

  • Step0 取得股票資料:在這邊,我們會用zipline預設的quandl資料庫做處理
  • Step1 建立股票池: 不是所有的股票都納入我們的選股範圍裡,有些股票的流動性可能太差,所以我們要先建立一個可選股票範圍。
  • Step2 建立因子: 根據目標,我們可以建立評估股票的因子值
  • Step3 因子合成: 有了基本的因子後,因子之間可能有很強的正相關,如果不做處理,我們可能對某種因子暴露過多的風險,所以我們會將某些因子合成
  • Step4 因子權重: 有了一組我們可以當作獨立的股票因子信號之後,我們要決定每個因子的權重,這邊我們可以簡單的讓每個因子等權重,或是用一些新奇的機器學習方法都可
  • Step5 組合優化: 有了因子權重後,我們就可以建立我們的資產,這邊我們會根據我們的因子值去解一個最佳化問題,這個最佳化問題包含兩個部份,第一個部份為目標函數,我們的目標函數可以是最大化因子,或是最小化因子波動等等,第二個部份是限制式,我們可能會設下像是槓桿率、每支股票的權重上下限等等,我們就可以根據因子的值去求解最佳配置,而通常,在限制式這個部份,我們會加入這個資產配置的風險模型。
  • Step6 定時更新資產配置

Zipline 基礎教學

在使用zipline之前,讓我們先下載quandl的資料庫。我們需要在終端裡輸入

  • Step1: 在終端機輸入 (source) activate (環境名) 這邊可以參考上一篇zipline教學
  • Step2: 在終端機輸入 zipline ingest -b quantopian-quandl
#要讓zipline能在jupyter notebook的環境下執行,我們外部載入指令
%load_ext zipline
from zipline.api import order, record, symbol

def initialize(context):
    pass

def handle_data(context,data):
    order(symbol('AAPL'),10)
    record(AAPL=data.current(symbol('AAPL'),'price'))
Share

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *