【解讀】機器學習應用在量化投資中失敗的7個主要原因
Marcos López de Prado在前不久發布一篇presentation也是作為Advances in Financial Machine Learning, Wiley (2017)此書的開場,點寬網量化平台聯合量化投資與機器學習公眾號進行翻譯解讀,我們力求語言通俗易懂,並且在部分內容處做一些解讀。
原創內容,禁止轉載、違者必究!
要點
⊙The Sisyphus paradigm(團隊分工)
⊙Integer differentiation(整數階差分)
⊙Inefficient sampling(數據同分布)
⊙Wrong labeling(標籤的新用法)
⊙Weighting of non-IID samples(樣本權重)
⊙Cross-validation leakage(樣本內外數據)
⊙Backtest overfitting(過擬合問題)
1、西西弗式的寬客
首先解釋一下這個標題,在西方語境中,形容詞「西西弗的」(Sisyphean)代表「永無盡頭而又徒勞無功的任務」。意思就是告訴我們要做有效率的事情,不要一個人全部包辦,要懂得團隊協作!
不能讓投資組合經理憑個人意願做所有的事
- 投資組合經理做出不符合特定理論或有嚴謹推論的投資決策。
- 因為沒有人能夠完全理解自己最好的邏輯,所以他們幾乎不能像一個團隊一樣工作,並且在最初的直覺之外有個更深入的洞察力。
- 如果讓50個投資組合經理一起工作,那麼最終49個人都會跟著那個最牛逼的去做,50個人跟1個人差不多。
因此,投資公司應該是小組分工合作,防止受一個投資組合經理單方面影響,從而保護工作的多元化。
1、在工作中,寬客們應該和投資組合經理一起工作。
2、讓我們聘請50名博士,要求他們在6個月內每人產出一份投資策略。但是這種做法,可能會適得其反:
- 過度擬合,回測吊炸天,實盤一般般;
- 結合很多理論模型,但是也效果一般(主要是對市場沒有吃透,不能把模型作為核心區做一些策略,要懂得結合市場做出一些調整和改進)
最終這個項目將會被叫停,原因想必大家都知道的。
3、幾十50個博士裡面有5個人的策略可以用,那麼老闆也會很鬱悶啊,項目也大概率叫停,這5個人可能也會走。留不住人啊!
所以
乾貨來了~
「[…] there is no more dreadful punishment than futile and hopeless labor.」
Albert Camus (1913-1960), The Myth of Sisyphus
制定真正的投資策略需要做的幾件事:
- 數據的收集,處理,結構化
- HPC(高性能計)基礎設施的建設
- 軟體開發
- 特徵分析
- 測試等
即使這些都齊活了 ,但是你今天在做這個,明天再做那個,永遠是一個失敗者,你永遠是徒勞的,看似很累很辛苦,但是你沒有把一件事做到極致!
所以正確的做法應該是:像車間那樣,有人生產輪胎,有人生產發動機,分工明確,每個人的工作互不影響,有獨立的考核標準,每個人都能做到部分最好的。同時也要對整個流程有統一的看法。個人和全部幾部分離也不脫節。
每一個成功的量化公司,都會用到這個模式,他就是META-STRATEGIES
具體的內容,請點擊下面鏈接查看:
https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2547325
2、整數階差分
時間序列的平穩性和記憶性的困惑
- 收益率或者價格(或者log-prices的變動)
- 收益的變動
- 波動率的變動
(此段分析來自知乎,作者是:babyquant)
說白了就是人們為了得到stationary的time series,會做一階差分,發現不行,就二階差分,總之就是整數階差分。
比如金融裡面的log return,就是log price做一階差分,幾十年來學術界都是這麼乾的。但作者說:
這麼做是錯誤的!
問:What is the minimum amount of differentiation that makes a price series stationary while preserving as much memory as possible?
答:We would like to generalize the notion of returns to consider stationary series where not all memory is erased.
綠線:E-mini S&P 500期貨的K線頻率1E4。
藍線:分數差分
? 在短期時間內,它類似於回報
? 在長期時間內,它類似於價格水平
? On the x-axis, the d value used to generate the series on which the ADF stat was computed.
? On the left y-axis, the correlation between the original series (d=0) and the differentiated series at various d values.
? On the right y-axis, ADF stats computed on log prices.
原始序列(d=0)的ADF統計值為-0.3387,而返回序列(d=1)的ADF統計值為-46.9114。
在95%置信水平下,測試的臨界值為-2.8623。
ADF統計量的閾值在d= 0.35附近,其中相關性仍然很高(0.995)。
這些表顯示了全球最流動的期貨合約的ADF統計數據。
每一行為一個標的,每一列為differentiation。
綠色表示,ADF值接受單位根檢驗。
紅色表示,拒絕單位根檢驗。
大多數金融時間序列可以通過分數階差分的方法來做。
原因就是如果是價格序列本身,它顯然不是平穩的,平穩就是說均值、方差是固定不變的,當然最嚴格的平穩要求概率分布一致,價格序列雖然不是平穩的,但它是有記憶的,就是說各個樣本獨立性很差,高度相關的,所以如果是預測價格本身R平方可以非常非常高。
為了得到平穩時間序列一般用一階差分,這樣得到的是價格的增量,一般認為是平穩的,但同時它也是比較獨立的,也就是說沒有記憶的,這麼樣做預測的話R平方非常非常低。一般來說人們用機器學習做金融都是預測對數收益率之類的東西。
大多數金融研究是基於回報的,其中d=1。
這意味著,幾十年來,大多數金融研究都是基於差分(無記憶)的序列,導致虛假的預測和過度擬合。
3、低效的抽樣
按時間順序抽樣
- 信息不會以不變的熵速在市場流動。
- 按時間順序抽樣數據意味著個別觀察體數量的信息內容與通常的數量數不一致。
- 一種更好的方法是將觀察體數量的次要(二級)過程進行轉換,即轉換信息數量:
- 成交額
- 成交量
- 指令不均衡
- 波動率
- 熵
其實就是說:
金融時間序列很多不是同分布的,比如螺紋鋼在近期的波動和年初比差別很大,如果用固定時間抽樣,一般都是不同分布;但如果用 imbalance at time,就更傾向於同分布。
知識拓展: 同分布
在概率統計理論中,指隨機過程中,任何時刻的取值都為隨機變數,如果這些隨機變數服從同一分布,並且互相獨立,那麼這些隨機變數是獨立同分布。
如果隨機變數X1和X2獨立,是指X1的取值不影響X2的取值,X2的取值也不影響X1的取值且隨機變數X1和X2服從同一分布,這意味著X1和X2具有相同的分布形狀和相同的分布參數,對離隨機變數具有相同的分布律,對連續隨機變數具有相同的概率密度函數,有著相同的分布函數,相同的期望、方差。例如:拋色子每次得到任意點數的概率都是1/6,這就是同分布的,但若我第一次拋一個六面的色子,第二次拋一個正12面體的色子,就不再是同分布了。 熵我們可以將熵看作是一個系統「混亂程度」的度量,因為一個系統越混亂,可以看作是微觀狀態分布越均勻。例如,設想有一組10個硬幣,每一個硬幣有兩面,擲硬幣時得到最有規律的狀態是10個都是正面或10個都是反面,這兩種狀態都只有一種構型(排列)。反之,如果是最混亂的情況,有5個正面5個反面,排列構型可以有排列組合數252種。(這個概念可以說很多,我就舉個例子吧)
舉個例子:Dollar Bars
我們來定義不平穩的時間T為:
操作標記(我姑且認為是多空的標記)
可能代表交易的證券數量或交換的金額。
我們在bar開始時計算
的期望值
其中
對
的初始期望值進行了分解(買賣)為
和
。
然後
實際上,我們可以估計
作為前面bars的T值的指數加權移動平,同時
也作為前面bars的
值的指數加權移動平。
我們定義一根bar為
—ticks的共同子集滿足以下條件:
預期不平衡的大小是指
當
比預期更不平衡時,底的T值將滿足這些條件。
例子:抽樣頻率
計算三種bar的類型在E-mini S&P 500期貨中。
大家知道tick數據的頻率和數據量所以,tick bars往往會顯示出廣泛的採樣頻率。
volume bars的採樣頻率通常與價格水平成反比。
一般來說,dollar bars的採樣頻率比較穩定。
4、錯誤的標籤
金融中的標籤
幾乎所有ML文章在金融標籤觀察中使用固定時間範圍的方法。
一個設定的特徵
bars帶索引
分配了不同的標籤
固定時間範圍方法的警告
1、幾個避免這種標籤方法的原因:
- Time bars不具有良好的統計屬性。
- 無論觀察到的波動如何,都應用相同的閾值τ。
2、幾個更好的選擇是:
- 標籤使用變化的閾值,使用收益率准偏差的滾動指數加權值作為其閾值。
- 使用成交量或dollar bars,因為它們的波動率更接近恆定(同方差性)。也就是同分布啦!
知識拓展: 同方差性
對於線性回歸的最小二乘法(OLS, Ordinary Least Squares)有2個假設被稱為(White Noise Condition)白色噪音假設, 其一為No Autocorrelation;即誤差部分相互沒有關聯,假設回歸式 y = α+βx+u,其誤差項中,u1,u2各誤差之間沒有任何聯繫即:COV(u1*u2)=0。其二為具備同方差性或者等分散,即誤差項與獨立變數(independent variable)之間相互獨立,,並且誤差項的分散(方差 Variance)必須等同即;Var(u|x)=σ^2。
但即便用上面兩種方法,也忽略了固定時間法的一個關鍵的缺陷:The path followed by prices。我們將用The Triple Barrier Method來解決這個問題。
The Triple Barrier Method(就是三個保障,穩妥)
文章說的很長,其實也就幾句話:
固定一個窗口,價格首先觸及哪個horizontal barrier就標記標籤:
- Upper horizontal barrier:標籤1
- Lower horizontal barrier:標籤-1
- Vertical barrier:標籤 0
如何使用 Meta-labeling
(這段我覺得還是很好的。怕跑題,就放原文吧,你們要是有想法,可以拓展)
- Meta-labeling is particularly helpful when you want to achieve higher F1-scores:
- – First, we build a model that achieves high recall, even if the precision is not particularly high.
- – Second, we correct for the low precision by applying meta-labeling to the positives identified by the primary model.
- Meta-labeling is a very powerful tool in your arsenal, for three additional reasons:
- –ML algorithms are often criticized as black boxes. Meta-labeling allows you to build a ML system on a white box.
- –The effects of overfitting are limited when you apply meta-labeling, because ML will not decide the side of your bet, only the size.
- –Achieving high accuracy on small bets and low accuracy in large bets will ruin you. As important as identifying good opportunities is to size them properly, so it makes sense to develop a ML algorithm solely focused on getting that critical decision (sizing) right.
Meta-labeling為Quantamental公司
Quantamental,Quant & Fundamental,即「量化基本面分析法」,就是把量化和基本面兩種方法有效結合起來。
- 您可以隨時向任何主模型添加Meta-labeling,無論是ML演算法,計量經濟學,技術交易規則,基本面分析等。
- 個人的直接判斷,主觀交易等。
- Meta-labeling通過ML演算法使用在特徵上範圍可以從市場信息到生物統計到心理評估等。
- Meta-labeling should become an essential ML technique for every discretionary hedge fund. In the near future, every discretionary hedge fund will become a quantamental firm, and meta-labeling offers them a clear path to make that transition.
5、non-IID樣本的權重
作者就舉了個例子,例如,您可以從大量患者中獲得血液樣本,並測量其膽固醇。
當然,一些基本的常見因素會改變膽固醇分布包括平均值和標準差,但樣本仍然是獨立的。
假設你在實驗室中,將每根管子的血液滴取到右側的9根管子里。
- 即,管10里有患者10的血液,同時也含有來自患者1至9的血液。管11含有來自患者11的血液,同時也含有來自患者2至10的血液,等等。
現在,你需要確定預測高膽固醇(飲食,運動,年齡等)的特徵,而不必確定每位患者的膽固醇水平。
這也是ML在金融中面臨的挑戰。
- Labels由結果決定。
- 結果由多個觀察決定。
- 由於標籤在時間上的重疊,我們無法確定觀察到的特徵是否有被影響。
(此段分析來自知乎,作者是:babyquant)
這就是說,樣本分布不是獨立同分布的。比如它之前說用等成交量來劃分,比如都是1000的成交量:
t=1要到t=10才達到1000
t=2其實也是到t=10達到1000
t=3其實也是到t=10達到1000
這說明或許t=10那個時刻的成交量特別大,到了這裡就能達到1000,沒到這裡就不能。因此如果我們做樣本的時候,其實t=10這個用了很多次,比如10次,但t=11這個只用了1次。
當然,等時間沒有這個問題的,比如1-10,2-11,3-12。。。每個時間的行情都用到同樣的次數,除了開頭結尾少數幾個。
所以他就定義了一個c_t,就是說t這個行情用了c_t次,然後這個行情對應的return就要先除以c_t。其實這部分我沒太看懂,按常理來說c_t如果都是一樣的那麼w_i應該是相等才對,但貌不是。其實它本質上就沒打算給每個樣本等權重,如果c_t是一樣的,那麼就是每個樣本對應的收益率y_i的絕對值來加權;如果c_t不是恆定的,則用它那種演算法計算出來的收益率的絕對值來加權,總之就不是等權。
所以它這麼做會給y_i絕對值大的樣本更大的權重,更偏向高波動行情了。如上面那個例子:
c_1=1,c2=2...c_10=10,c_11=1....
w_1=|r1/1+r2/2+r3/3+...+r10/10|
w_2=|r2/2+r3/3+...+r10/10|
...
w_10=|r10/10|
然後再除以一個相同的係數,比例不變。這麼看w_10的權重會比較低,因為w_10對應的行情r10被用了10次,分到它自己的已經很小了。
如果是等權重的話,因為w_1到w_9對應的樣本,其實他們本質上都是依賴r_10的,其他行情可能成交量很低,意義不大,因此,這樣r_10就會被計算很多次;現在新的演算法大概就是讓每個行情的return都一共只被計算1次吧,比如10個r10/10加起來。
這些只對那種按成交量或者其他非等時間劃分樣本的方法有意義。普通人那種固定時間預測的其實不需要這麼複雜。
R語言裡面regression的函數一般都支持樣本不同權重的,比如glmnet裡面有一個參數是weight:
weights observation weights. Can be total counts if responses are proportion matrices.Default is 1 for each observation
所以按照他的方法給每個樣本一些權重之後還是不難實現的。
但Python裡面的lasso是不支持weighted sample的:
看不到weight相關的參數。總之python做統計類分析是一個很爛的工具,重要一點的東西都沒有,只有最基本的,做金融穩定虧錢的節奏啊。(這點對於Python的統計包要吐槽一下,R語言在這方面確實和強勢!)
這段分析,個人覺得理解的很不錯!以供參考。
6、交叉檢驗Leakage
就是說了測試樣本內外的事。
該圖顯示了K-Fold CV的一個分區。 測試集前後都包含了訓練集。但是必須要去除這段重疊部分,以防Leakage。
如何防止和去除這段數據,作者給出了這樣一個方法(我覺得作者是一個比較嚴謹的人。如果數據量大的話也可以忽略這個問題)具體大家自己可看看演算法:
他把這個過程叫做:purging(清洗數據)
由於有些金融特徵包含序列相關性如ARMA:
知識拓展: 同分布
自回歸滑動平均模型(ARMA 模型,Auto-Regressive and Moving Average Model)是研究時間序列的重要方法,由自回歸模型(簡稱AR模型)與滑動平均模型(簡稱MA模型)為基礎「混合」構成。預測指標隨時間推移而形成的數據序列看作是一個隨機序列,這組隨機變數所具有的依存關係體現著原始數據在時間上的延續性。一方面,影響因素的影響,另一方面,又有自身變動規律,假定影響因素為x1,x2,…,xk,由回歸分析:
其中Y是預測對象的觀測值,Z為誤差。作為預測對象Yt受到自身變化的影響,其規律可由下式體現,
誤差項在不同時期具有依存關係,由下式表示,
由此,獲得ARMA模型表達式:
正因如此,我們應該從訓練集的觀察中消除這個,在測試集中觀察到結果。作者稱它為:embargo
7、回測中的過擬合問題
Deflated 夏普比率
他就是改進夏普比率,基於以下這篇文章。來源:https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2460551
這篇文章看了半天,有點困難,才疏學淺哈。大家有興趣可以看看。但是大概是這樣的嘿嘿:
DSR包含比SR更多的信息,是有概率條件在裡面的。
Deflation will take place when the track record contains 「bad」 attributes. However, strategies with positive skewness or negative excess kurtosis may indeed see their DSR boosted, as SR was failing to reward those 「good」 attributes.
N=46,DSR≈ 0.9505。
原文:https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3031282
推薦閱讀:
※【最優化】凸函數的駐點是全局最優點
※CTR預估[三]: Algorithm-LR and Regularization
※這些機器學習基礎,你忽略了嗎?
※關於機器學習,你必須知道的10件事情
※LR和SVM的聯繫區別