前言

不換個標題,感覺是沒有人來讀的。記得在學校那會,找實習,啥都不會, 聽到同學說到`因子庫`這個辭彙,覺得好高級!後來慢慢接觸下來,每個做量化的團隊應該都有這麼個玩意,專門用來存因子的。我是不是直接說因子有點快了,我入門是從優礦開始的,如果有不太瞭解多因子模型的,可以去優礦網找找文章來看看。這裡推薦幾篇帖子供給大家。

量化分析師的Python日記【第14天:如何在優礦上做Alpha對沖模型】?

uqer.io

優礦?

uqer.io

主要就是這兩個人的帖子,看下還是能收穫不少的。

因子的來源

那麼,既然我們要搭建因子,它本身還是要依賴一些原始數據的,我簡單的列了一下可能需要的數據

  • 行情數據,這是必須的,價量因子的原材料。
  • 財務數據,這也是必須的,基本面因子的原材料,還有些指標例如PE,PB等等既需要行情數據,也需要財務數據。
  • 行業數據,這還是必須的,現在市場上主流的是申萬的行業數據,各人覺得沒有中信的行業劃分的準確,而且14年還變了一次,用起來比較麻煩,有些場景下還要專門把14年前的數據進行處理,乾脆就用中信的好一些。還有的可能是GICS的行業劃分,也還可以,像Barra公司做風險模型的時候就用的它自家的GICS行業,Axioma的其實也是GICS的行業劃分。
  • 一致預期數據,這個不是必須的,但是構建一致預期因子會需要。
  • 另類數據,這個就比較多了,看能力吧,數據源多當然是好的。

設計你的因子庫結構

其實我也不知道我的理解是不是那麼的正確,因子庫本身是就是存儲因子的,或者說是存儲數據的。那麼,存儲數據的選擇就太多了,我們可以用文件來存,也可以用關係型資料庫,還可以是非關係型資料庫,等等。

考慮到我們提取因子文件的需求,既有時間維度的,也有股票層面的,甚至是兩者結合在一起的。例如我們可能會提取過去一段時間的因子來進行研究,也有可能需要某一天全A的所有數據,甚至也有可能我們的研究對象是某一個股票池歷史的因子數據。

我剛剛說了一大堆,但其實我覺得還是要具體問題具體對待,用文件比如說csv來保存並不一定就不是合適的,有的數據比如市值這樣的,又或者行業這種的,我們可能會頻繁存取,這時候採用文件格式保存也不失為一種方法。

表的設計

言歸正傳,我們來考慮大多數因子的存取方案

首先,我們需要想的是,我們需要計算的因子會是有很多的,特別是我們後面如果要做一些AI模型的話,特徵太少,效果估計也不會好到哪取。現在很多賣方,買方都在不斷擴大他們的因子庫,雖然真正核心的使用的因子估計就那麼二三十個的樣子。

那麼問題來了,假設我們用的是關係型資料庫。首先,我們不可能一個因子存一張表,這樣維護起來很喫力。一般來說,我們可以把一類因子放到一個表裡。這樣其實也會有些問題,我們用寬表還是用窄表?寬表的話,擴充因子會比較麻煩,用窄表空間冗餘又太多。該採取何種方案比較讓人頭疼。

那麼有沒有比較好的方案?這個感覺像是面試會問的問題啊。答案當然是有的,例如我們可以用非關係型的資料庫Mongo這樣的來做。

遺憾的是,因為我電腦內存比較小,而且自己的電腦是Windows系統,操作諸多不便,我還是用MySQL做成寬表來存因子

推薦閱讀:

相關文章