導語:近年來,國內量化投資迎來了發展的黃金期,但涉及機器學習的量化投資還比較少。機器學習領域的大神Andrew Ng(吳恩達)老師曾經說過機器學習很大程度上就是特徵工程,因此本文主要介紹下特徵工程在量化投資領域的應用。感興趣的朋友可以前往BigQuant人工智慧量化投資平臺進一步實踐研究。
1.特徵工程是什麼?
有這麼一句話在業界廣泛流傳: 資料和特徵決定了機器學習的上限。那特徵工程到底是什麼呢?顧名思義,其本質是一項工程活動,目的是最大限度地從原始資料中提取特徵以供演算法和模型使用。簡單理解為:特徵工程是使用專業背景知識和技巧處理資料,使得特徵能在機器學習演算法上發揮更好的作用的過程。
特徵工程在量化投資領域有非常適宜的土壤,首先金融市場擁有海量資料,資料比較規整;其次,金融市場量化研究員開發優異策略離不開專業背景知識、行業經驗和資料處理技巧;最後,金融市場的投資收益、風險可以直接檢驗機器學習演算法效能。
特徵工程之所以重要是因為它直接決定了機器學習演算法的效能,對於量化交易員策略開發也是如此,特徵工程的相關工作將直接決定策略的盈利能力。
2.開發策略就是特徵工程
特徵工程是一項工程活動,和量化交易有什麼關係呢?量化交易員開發策略的過程本質就是特徵工程。我們以一個量化領域比較經典的雙均線模型(也稱金叉死叉模型)來解釋,該模型的策略核心是當短期均線上穿長期均線時,形成金叉,買入股票,當短期均線下穿長期均線時,形成死叉,賣出股票。在金融市場上,雙均線模型可以實現長期盈利,那麼量化交易員開發雙均線模型的擇時策略為什麼就是特徵工程呢。我們不侷限在雙均線模型的交易規則這一個層面,而是上升到K線資料的另一個特徵層面,對於每一根均線而言,我們可以計算一個短期移動平均值與長期均線移動平均值之差這個特徵,定義如下:
因此本質上雙均線模型就是基於feature這個特徵進行交易。這個特徵的構建先是通過每日收盤價計算短期和長期移動平均值,然後再做減法獲得,如果你是涉足金融市場剛第一天的人,你很可能不會聯想到這個特徵,但是如果你是長期待在金融市場上的人那麼你擁有了投資交易經驗和金融背景知識,因此你很可能會開發出基於該特徵的策略——雙均線模型,你無須關心其他資料,只需知道每個K線上的feature特徵值即可。因此,量化交易員開發策略就是特徵工程。
量化交易員發現股票收益和股票的某些因子之間存線上性關係,因此在開發策略時,更多的是關注具有超額收益的這些因子,選擇符合因子條件的股票本質上也是特徵工程。
3.特徵工程的重要性
資料工程專案往往嚴格遵循著RIRO(rubbish in, rubbish out) 的原則,所以我們經常說資料預處理是資料工程師或者資料科學家80%的工作,它保證了資料原材料的質量。 如何從成百上千個特徵中發現其中哪些對結果最具影響,進而利用它們構建可靠的機器學習演算法是特徵選擇工作的中心內容。
也有人曾這樣描述特徵工程:特徵工程就是研究我們應該輸入什麼資料。我們可以把量化交易員開發策略獲取收益的過程看成以下對映:
其中x為輸入的資料,f為策略,f(x)為輸出的策略收益。
金融市場上每天產生海量的資料,比如交易資料、行業資料、企業財務資料、巨集觀經濟資料等,這些原始資料可以形成天量的特徵,如何從這些特徵中發現能夠產生策略超額收益的好的特徵對於量化交易員至關重要。
如果市場符合有效市場假說,那麼量化交易員只需關心交易資料中的價格和成交量就可以,但是大多數的市場都不是有效市場。因此,量化交易員必須設計好選擇什麼作為輸入。如果做不好特徵工程,輸入的資料有問題,那麼輸出的策略收益也不會高。因此在開發策略過程中,特徵工程非常重要。
4.如何做好特徵工程
要做好特徵工程主要是解決以下幾個特徵工程子問題。(如圖1)
圖1 特徵工程子問題
4.1 特徵提取
在資料探勘領域,特徵提取是將原始特徵轉換為一組具有明顯物理意義(Gabor、幾何特徵[角點、不變數]、紋理[LBP HOG])或者統計意義或核的特徵。比如通過變換特徵取值來減少原始資料中某個特徵的取值個數等。對於表格資料,可以在設計的特徵矩陣上使用主要成分分析(Principal Component Analysis,PCA)來進行特徵提取從而建立新的特徵。對於影象資料,可能還包括了線或邊緣檢測。常用的特徵提取的方法有:主成分分析(PCA)和線性判別分析(LDA)。
金融領域也是如此。特徵提取的物件是原始資料(raw data),它的目的是從原始資料中提取特徵,比如我們獲取股票的行情資料,行情資料裡包含開盤價、最高價、最低價、收盤價、復權因子,我們不能直接使用這些股票價格作為特徵,因為公司可能會有分紅、派息等行為,因此股票價格不能反映真實的股價,所以要對其進行復權處理,進行處理以後,得到復權後的價格資料可以提取成新的特徵了。
4.2 特徵選擇
當資料預處理完成後,我們需要選擇有意義的特徵輸入機器學習的演算法和模型進行訓練。通常來說,從兩個方面考慮來選擇特徵:
特徵是否發散:如果一個特徵不發散,例如方差接近於0,也就是說樣本在這個特徵上基本上沒有差異,這個特徵對於樣本的區分並沒有什麼用。比如我們選取股票ST狀態(ST:0,非ST:1)這個特徵,這個特徵較長時間會保持不變,因此該特徵不發散,這樣的特徵我們儘量不選取。
特徵與目標的相關性:這點比較顯見,與目標相關性高的特徵,應當優選選擇。在有效市場或強有效市場中,類似於成交價格、成交量這類行情特徵能夠很充分地反映股票的大部分資訊,因此這類特徵應該優先選擇。另外,量化交易員開發策略時,特徵的選擇與策略的模式也高度相關,比如,希望開發一個策略能夠挖掘“長期低量盤整,價格突然持續拉高”的股票,如果這樣的選股模式在金融市場上是可以盈利的,那麼在選擇特徵的時候,應該選擇長期平均成交量與短期成交量之比、長期移動平均值與短期移動平均值之比這類特徵。這兩個特徵能夠將具有“長期低量盤整,價格突然持續拉高”模式的股票選擇出來。
4.3 特徵構造
有時,原始資料集的特徵具有必要的資訊,但其形式不適合資料探勘演算法,在這種情況下, 由原特徵構造的新特徵可能比原特徵更有用。
我們舉一個例子,考慮一個包含人工製品資訊的歷史資料集,該資料集包含每個人工製品的體積和質量,以及其他資訊。假設這些人工製品使用少量材料(木材、陶土、銅、黃金)製造,並且我們希望根據製造材料對它們分類。在此情況下,由質量和體積特徵構造的密度特徵(即密度=質量/體積)可以直接地產生準確的分類。儘管有些人試圖通過考察已有特徵的簡單的數學組合來自動地進行特徵構造,但是最常見的方法還是使用專家意見構造特徵。
在金融領域也是如此,比如我們想區分股票價格的波動性,我們可以構造一個收盤價標準差的一個特徵,這個特徵能夠反映顧及近期的波動情況;此外,我們也可以構造一個平均振幅的一個特徵,該特徵是每日最高價減每日最低價的差值的平均值,從數值的角度反映股票價格的近期波情況。
如果你是專業的量化交易員,那麼面臨眾多的特徵,你可以根據你的行業經驗和投資心得在浩瀚的特徵海洋裡構造新的特徵來開發策略。
小結:特徵工程已經是很古老很常見的話題,引用幾句大師的一些原話吧。
“Coming up with features is difficult, time-consuming, requires expert knowledge. "Applied machine learning" is basically feature engineering.”— Andrew Ng
直譯:構思特徵很困難,很花時間,需要專家經驗。機器學習的應用很大程度就是特徵工程
“some machine learning projects succeed and some fail. What makes the difference? Easily the
most important factor is the features used.” —Pedro Domingos
直譯:機器學習專案有些成功了,有些失敗了,主要因為特徵使用不一樣
“Actually the success of all machine learning algorithms depend on how you present the data.” — Mohammad Pezeshki
直譯:事實上所有機器學習演算法上面的成功都在於你怎麼樣去展示這些資料
參考資料
- Discover Feature Engineering, How to Engineer Features and How to Get Good at It
- Feature selection
- Feature learning
- 使用sklearn進行資料探勘
- 機器學習中,有哪些特徵選擇的工程方法?
- 資料探勘導論(完整版).Introduction.To.Data.Mining.(美)Pang-Ning_Tan.範明譯.人民郵電.2011
原文連結:《量化投資中的特徵工程》
本文由BigQuant人工智慧量化投資平臺原創推出,版權歸BigQuant所有,轉載請註明出處。