1. 程式人生 > 其它 >THE 10 REASONS MOST MACHINE LEARNING FUNDS FAIL

THE 10 REASONS MOST MACHINE LEARNING FUNDS FAIL

https://zhuanlan.zhihu.com/p/69231390

標題THE 10 REASONS MOST MACHINE LEARNING FUNDS FAIL

One Sentence Summary

上古時期做金融都用多元線性迴歸,ML(機器學習)為金融問題引入了非線性函式,但也帶來不少坑,過去20年,老夫(作者)看著多少公司起高樓,又樓塌了。根據我的經驗,這些失敗背後有10個關鍵錯誤。

One Page Summary


正文

Pitfall #1: 西西弗斯模式(THE SISYPHUS PARADIGM)
Solution #1: 元策略模式(THE META-STRATEGY PARADIGM)

作者首先討論了自由基金經理(Discretionary portfolio managers~DPM),他們的投資理念比較玄學,不會遵循特定的理論,這樣的一群人開會時往往漫無目的、各執一詞。DPMs天然地不能組成一個隊伍:讓50個DPM一起工作,他們的觀點會相互影響,結果是老闆發了50份工資,只得到一個idea。他們也不是不能成功,關鍵是要讓他們為同一個目標工作,但儘量別交流。

很多公司採用自由基金經理模式做量化 / ML 專案:讓50個PhD分別去研究策略,結果要麼得到嚴重過擬合的結果,要麼得到爛大街&低夏普率的多因子模型。即使有個別PhD研究出有效的策略,這種模式的投入產出比也極低。這便是所謂讓每個員工日復一日搬石頭上山的西西弗斯模式(THE SISYPHUS PARADIGM)。

做量化是一項系統工程,包括資料、高效能運算裝置、軟體開發、特徵研究、模擬交易系統……如果交給一個人做,無異於讓一個工人造整輛車——這周他是焊接工,下週他是電工,下下週他是油漆工,嘗試--->失敗--->嘗試--->失敗,迴圈往復。

好的做法是將專案清晰地分成子任務,分別設定衡量質量的標準,每個quant在保持全域性觀的同時專注一個子任務,專案才能得以穩步推進。這是所謂元策略模式(THE META-STRATEGY PARADIGM)。

Pitfall #2: 根據回測結果做研究(RESEARCH THROUGH BACKTESTING)
Solution #2: 特徵重要性分析(FEATURE IMPORTANCE ANALYSIS)

金融研究中很普遍的錯誤是在特定資料上嘗試ML模型,不斷調參直到得到一個比較好看的回測結果——這顯然是過擬合。聽說過一個笑話,”如果你的結果不好,說明你調參還不夠努力“,學術期刊往往充斥這類虛假的發現,甚至很多是面向測試集調參。

考慮一個ML任務,給定,我們可以構建一個分類器,在交叉檢驗集上評估其泛化誤差。假定結果很好,一個自然的問題是:哪些特徵對結果的貢獻最大?“好的獵人不會對獵狗捕獲的獵物照單全收”,回答了這個問題,我們可以增加對提高分類器預測力有幫助的特徵,減少幾乎是噪聲的特徵。

很多人質疑ML是黑箱,因為ML的“學習”無需人類的指導,但這不意味著人不應該看看ML學出了什麼東西。理解了ML發現的模式(pattern),才能更好地推動下一步工作:什麼特徵最重要、這些特徵的重要性會隨時間改變麼、這種改變能否被識別和預測。總之,特徵的重要性分析是比回測更好的研究策略。

Pitfall #3: 按時間取樣(CHRONOLOGICAL SAMPLING)
Solution #3: 交易量鍾(THE VOLUME CLOCK)

作者先對bar的概念介紹了一通,這裡引用該專欄文章的介紹

木芙蓉:[AFML] 讀書筆記 (一)金融資料的特殊結構68 贊同 · 11 評論文章
Bars
為了對非結構化的資料使用機器學習演算法,我們需要對原始資料進行解析,從中提取出有價值的資訊,最後將提取結果進行規範化的儲存。最常見的表示提取後資訊的方法就是表格。金融領域中將這樣的表格內的一條記錄(或一個樣本)叫做一個Bar。
1. Time Bars
Time bars 指的是以固定的時間區間對資料進行取樣(如每分鐘一次)後得到的資料。
儘管Time bars 是實踐中最流行使用的處理方式,但這裡我們指出它的兩個不足:第一,市場交易資訊的數量在時間上的分佈並不是均勻的。開盤後的一小時內交易通常會比午休前的一小時活躍許多。因此,使用Time bars 會導致交易活躍的時間區間的欠取樣,以及交易冷清的時間區間的過取樣。第二,根據時間取樣的序列通常呈現出較差的統計特徵,包括序列相關、異方差等。
2. Tick Bars
Tick bars 是指每隔固定的(如1000次)交易次數提取上述的變數資訊。一些研究發現這一取樣方法得到的資料更接近獨立正態同分布 [Ane and Geman 2000]。
使用Tick Bars 還需注意異常值 (outliers) 的處理。一些交易所會在開盤和收盤時進行集中競價,在競價結束後以統一價格進行撮合。
3. Volume Bars & Dollar Bars
Volume Bars 是指每隔固定的成交量提取上述的變數資訊。Dollar Bars 則使用了成交額。
使用 Dollar Bars 相對而言是有一定優勢的。假設一隻股票在一定時間區間內股價翻倍,期初10000元可以購買的股票將會是期末10000元可購買股票手數的兩倍。在股價有巨大波動的情況下,Tick Bars以及Volume Bars每天的數量都會隨之有較大的波動。除此之外,增發、配股、回購等事件也會導致Tick Bars以及Volume Bars每天數量的波動

使用 Time Bar 會有缺點,相比之下,Volume Clock表現更好。使用固定 bar size 時,每日Dollar/Volume/Tick Bar 的數量如下圖所示,可見 Dollar Bars 是更加穩健的方法。

The exponentially weighted average number of bars per day when we apply a fixed bar size on tick, volume, and dollar sampling methods

Pitfall #4: 整數差分(INTEGER DIFFERENTIATION)
Solution #4: 非整數差分(FRACTIONAL DIFFERENTIATION)

金融中價格序列平穩性不好,即金融資產價格的期望和方差隨時間波動較大,而有監督學習通常要求資料基本滿足平穩過程。ML專案中一般會將價格序列處理為漲跌幅(return),即,或者(一階差分)。做整數階差分可能使得資料點丟失之前序列所蘊含的資訊(Memory),舉個例子:A股大多是散戶,他們會更青睞低價股,所以絕對價格是很重要的資訊。

我們需要在資料平穩性和保留資料資訊之間做取捨,非整數/分數差分就是一個較好的解決方案,其定義如下:

給定時間序列,階數,則時刻的階差分其中

作者用ADF檢驗(單位根檢驗)來檢查其能否在95%置信度下拒絕非平穩假設,同時計算與相關係數。發現對於 E-mini S&P 500 log-prices,時滿足平穩性假設,同時與相關係數達到 0.995;而即一階差分時,滿足平穩性假設但相關係數僅為0.05。在不同下ADF檢驗結果與相關係數繪製如下,時滿足平穩性假設,而越小相關係數越大。

ADF statistic as a function of d, on E-mini S&P 500 futures log prices
這一部分最初看的有點懵,看過好基友 LXX 同學的筆記才大體明白,上面的分析部分基於 LXX 同學的筆記,感謝~

Pitfall #5: 固定時間範圍標籤(FIXED-TIME HORIZON LABELING)
Solution #5: 三邊界方法(THE TRIPLE-BARRIER METHOD)

大部分ML的論文幾乎都用以下固定時間範圍標籤方法:

,其中,閥值為常數

該方法有若干不足:

  1. 如 Pitfall #4 所述,time bars 的統計性質並不好
  2. 用常數閾值而不顧波動性是不明智的,假設某股票剛開盤時,而中午時,若選定,則中午時均為0,儘管是可預測的而且在統計上顯著。
  3. 原文如下,沒看懂。。。(我猜是說這種方法可能被強制平倉,求指教 hhh)
Third, it is simply unrealistic to build a strategy that profits from positions that would have been stopped-out by the fund, exchange (margin call) or investor.

三邊界方法(THE TRIPLE-BARRIER METHOD)考慮到平倉的觸發條件,是更好的處理方式,其包括上下水平邊界和右邊的垂直邊界。水平邊界需要綜合考慮盈利和止損,其邊界寬度是價格波動性的函式(波動大邊界寬,波動小邊界窄);垂直邊界考慮到建倉後 bar 的流量,如果不採用 time bars,垂直邊界的寬度就不是固定的(翻譯太艱難了,附上原文

The third barrier is defined in terms of number of bars elapsed since the position was taken (an activity- based, not fixed-time expiration limit).

如果未來價格走勢先觸及上邊界,可以取;先觸及下邊界,則取(如下圖);先觸及右邊界,可以取,或者根據盈利正負,取。

The triple-barrier method

Pitfall #6: 同時學出方向和規模(LEARNING SIDE AND SIZE SIMULTANEOUSLY)
Solution #6: 元標籤(META-LABELING)

金融中用ML的另一常見錯誤是同時學習倉位的方向和規模(據我所知很多論文僅對買/賣方向做決策,每筆交易的金額/股數是固定的)。具體而言,方向決策(買/賣)是最基本的決策,規模決策(size decision)是風險管理決策,即我們的風險承受能力有多大,以及對於方向決策有多大信心。我們沒必要用一個模型處理兩種決策,更好的做法是分別構建兩個模型:第一個模型來做方向決策,第二個模型來預測第一個模型預測的準確度。

很多ML模型表現出高精確度(precision)和低召回率(recall),即很高,而很低。這意味著這些模型過於保守,大量交易機會被錯過。

F1-score 綜合考慮了精確度和召回率,是更好的衡量指標,元標籤(META-LABELING)有助於構建高 F1-score 模型。首先(用專家知識)構建一個高召回率的基礎模型,即對交易機會寧可錯殺一千,不可放過一個。隨後構建一個ML模型,用於決定我們是否應該執行基礎模型給出的決策。元標籤+ML有以下4個優勢:

  1. 大家批評ML是黑箱,而元標籤+ML則是在白箱(基礎模型)的基礎上構建的,具有更好的可解釋性;
  2. 元標籤+ML減少了過擬合的可能性,即ML模型僅對交易規模決策不對交易方向決策,避免一個ML模型對全部決策進行控制;
  3. 元標籤+ML的處理方式允許更復雜的策略架構,例如:當基礎模型判斷應該多頭,用ML模型來決定多頭規模;當基礎模型判斷應該空頭,用另一個ML模型來決定空頭規模;
  4. 贏小輸大會得不償失,所以單獨構建ML模型對規模決策是有必要的。
achieving high accuracy on small bets and low accuracy on large bets will ruin you

Pitfall #7: (WEIGHTING OF NON-IID SAMPLES)
Solution #7: (UNIQUENESS WEIGHTING AND SEQUENTIAL BOOTSTRAPPING)

實驗室希望研究血液膽固醇含量受什麼因素影響,從人群中隨機實驗者採集的血液樣品服從獨立同分布(IID),假如有人把每瓶血液都濺出一點到臨近試管中,即試管10的血樣包含試管1-9的部分血樣,試管11的血樣包含試管2-10的部分血樣,現在要確定什麼因素會影響血液膽固醇含量會非常困難。金融ML也面臨同樣的問題:

(1) labels are decided by outcomes;
(2) outcomes are decided over multiple observations;
(3) because labels overlap in time, we cannot be certain about what observed features caused an effect.

作者提出一種基於權重的取樣方法,但不是非常直觀,暫且不分析,留個 TO DO 日後填。各位看官可以看看後記中推薦的兩篇,其他人對此有相應的分析。

Pitfall #8: 交叉檢驗集洩露資訊(CROSS-VALIDATION LEAKAGE)
Solution #8: 清理和禁止(PURGING AND EMBARGOING)

作者論證了 k-折交叉檢驗(k-fold CV)方法在金融中失敗的原因以及處理方法,然而我看過的若干論文中對金融資料的處理幾乎都是依照時間順序將資料劃分為 train、CV、test 集,或者用 rolling 方法(如下圖),而沒有用 k-折交叉檢驗方法。

Anyway,作者的思想是值得借鑑的——金融中需要警惕在訓練集 / CV 集中引入未來資訊。舉個栗子,由於金融資料時序的自相關性,、;如果將劃為訓練集,將劃為CV集,必然會將訓練集的資訊洩露(leakage)到CV集。好的做法應該是在訓練集和CV集之間設定一個間隔:若是訓練集最後一個數據,則CV集第一個資料可以為。

Pitfall #9: 前向回測(WALK-FORWARD / HISTORICAL BACKTESTING)
Solution #9: CPCV(COMBINATORIAL PURGED CROSS-VALIDATION)

文獻常用的回測方法是前向回測(Walk-forward Backtesting):根據當前時刻以前的資料做決策。這種方式容易解讀同時也很直觀,但存在幾點不足:

  1. 前向回測只測試了單個場景,容易過擬合;
  2. 前向回測的結果未必能代表未來的表現。

這裡作者提出了一種更加喪心病狂的切分方法:將所有資料分為份(注意避免資訊洩露),從中任意取份作為測試集,剩下份作為訓練集,總共有種取法。這種方法最大的優勢是允許我們得到某策略在不同時期的夏普率分佈,而不是計算一個夏普率值。

這一部分有些懵,訓練/測試集怎麼可以這樣劃分。。。可能是我金融知識還不夠吧,另外作者提到 walk-backward backtest ——從2017年回測到2007年,簡直不知所云。

Pitfall #10: 回測過擬合(BACKTEST OVERFITTING)
Solution #10: 保守夏普率(THE DEFLATED SHARPE RATIO)

假設獨立通過分佈且,可證明。若代表一系列回測結果的夏普率,則只要回測次數足夠多,或者每次回測結果方差足夠大,從中都能選出任意高的結果,儘管有可能。

這提醒我們要考慮到回測次數造成的過擬合,一種解決方案是保守夏普率(THE DEFLATED SHARPE RATIO,DSR),該方法數學背景較複雜,這裡不詳細介紹;其思想是給定一系列對夏普率的估計值,通過統計檢驗的方法估計能否推翻零假設。


後記

有部分文章對此分析過,不過不知道為什麼大家都分析7個原因,我是10個hhh(作者釋出了兩個版本的論文),各位看官可以對比參考~