量化回測中的「倖存者偏差」

2021-02-19 半量化

關於倖存者偏差,流傳最廣的一個故事就是,「1941年,第二次世界大戰中,美國哥倫比亞大學統計學沃德教授(Abraham Wald)應軍方要求,利用其在統計方面的專業知識來提供關於《飛機應該如何加強防護,才能降低被炮火擊落的機率》的相關建議……」

       這個故事已經講濫了啊,不講了,我們今天就來展示一下「倖存者偏差」如何在量化策略回測,尤其是指數增強策略回測中產生的,直觀地看看這種偏差能造成多大的後果。

      

       先看一行(ricequant的)代碼,來源於真實的案例:

def init(context):

    ...

context.stocklist =index_components('000300.XSHG')

    ...

 

他最初的目的在於做一個滬深300的指數增強策略,首先獲取滬深300指數的成分股作為股票池,然後定期地按照一定的標準選定其中一部分超配,並定期再平衡組合。

不去討論策略和回測本身,直接獲取【今日】的滬深300指數成分股作為【歷史】回測的股票池;更有甚者,不但利用指數成分作為股票池,相應的權重也直接引入到歷史回測中。這些做法就等於引入了倖存者偏差。

為什麼這麼說呢,我們先引用一段中證指數公司發布的滬深300指數編制方案——

「6、 指數定期調樣

依據樣本穩定性和動態跟蹤相結合的原則,每半年審核一次滬深 300 指數樣本,並根據審核結果調整指數樣本。

……

7、 指數臨時調樣 在有特殊事件發生,以致影響指數的代表性和可投資性時,中證指數有限公司將對滬深 300 指數樣本做出必要的臨時調整。」

 

這就說明滬深300指數歷史上並不一直是目前的這300隻成分股。目前的這300隻成分股恰恰就是歷經多次「指數調樣」後的「倖存者」。

這個問題可能很多做量化回測的實踐者都明白,但是由於代碼的編制不便或者無偏差歷史數據的難以獲取,索性直接忽視了指數成分股存在「倖存者偏差的問題」,寄希望於偏差不太大,不會造成實質性的影響。

俗話說,「There AreWasps in the Yard. You』d Better Get to Know Them.」究竟這種倖存者偏差有多大,看圖——

藍線代表的策略是:在回測的第一天,直接按照今天的滬深300成分股買入組合,配比按照今天的權重,當然歷史上沒上市的時候先不買。另外,為了避免新股上市後的連續漲停造成更大的偏差,成分股上市後60個交易日後再加入回測組合。也就是【假如能預先知道滬深300成分股及其權重】策略。

橙線代表的策略是:在回測的第一天,直接按照今天的滬深300成分股買入組合,由於假設是不知道今天的權重,所以按等權重配比,同樣歷史上沒上市的時候先不買,也同樣成分股上市後60個交易日後再加入回測組合。也就是【假如能預先知道滬深300成分股】策略。

紅線是滬深300全收益指數H00300,綠線是滬深300指數000300。

 

這張圖顯示了累積10多年的成分股倖存者偏差,都不用看詳細數據,這偏差相當可觀啊!!

 

下面再看累積了5年的成分股倖存者偏差——

最後,我們檢視一下造成這種偏差的來源,手動翻一下滬深300的【歷史】成分股,退市、合併的其實不少。下面是幾個比較著名的,樂視網,華銳風電,吉恩鎳業。

當然,還有600074保千裡、000939凱迪電力、000511烯碳新材、600747大連控股、601268二重重裝。強烈自己翻一下這些股票,再感受一下這些股票退市前的最後時光,可能你用的行情軟體不夠「高級」的話,這些退市股已經看不到了,這些巨坑就這麼悄無聲息的消失掉了,不再給感受的機會…… 

也許,做量化選股策略的實踐者,認為這樣的事件太過稀有,自己不會踩到這樣的坑。可是,許多量化選股策略,偏重於價量數據及其衍生指標,根本不會用到基本面數據。即使如果確實利用到而且沒有被篩選掉基本面數據,但是財務手段千變萬化。遙想當年樂視網有多少人追捧,仿佛就在昨天,再來一次類似的坑,真的能100%確信無疑的避免嗎? 

所以啊,對於量化選股策略,倖存者偏差,絕不可完全忽略。我們做回測,必須仔細一點再仔細一點,共勉……

相關焦點

  • 說說:倖存者偏差
    對於「倖存者偏差」,你理解到了哪個層次?
  • 倖存者偏差與技術創新
    這個例子生動地解釋了「倖存者偏差」:人們的統計對象,往往來源於特定群體,從而造成認識的偏差。因「倖存者偏差」發生錯誤的問題比比皆是。 有個段子說:小米手機取得巨大成功後,雷軍用調查小米手機的方法來設計小米電視,效果卻很不理想。雷軍百思不得其解。有人提醒他:小米手機的用戶,有多少家人家有客廳呢?
  • 認知偏差 | 倖存者偏差(Survivorship Bias)
    認知偏差 | 倖存者偏差(Survivorship Bias)倖存者偏差,另譯為「生存者偏差」或「存活者偏差」,是一種常見的邏輯謬誤(「謬誤」而不是
  • 倖存者偏差——沉默背後的真相
    他的核心觀點在於,僅僅依靠倖存者做出判斷是不科學、不全面的,那些被忽視了的、看不到的非倖存者才是關鍵,它們根本沒有安全返航,看不見的彈痕才是最致命的!後來軍方採用了沃德教授的建議,加強了機尾和機身的防護。後來證實該決策是無比正確的,盟軍戰機的擊落率大大降低。
  • 倖存者偏差與技術創新 | 郭朝暉
    在今天的文章中,郭朝暉老師結合這個例子生動地解釋了「倖存者偏差」,即人們的統計對象,往往來源於特定群體,從而造成認識的偏差。而在許多項目的轉化過程中,因這個概念發生錯誤的問題比比皆是。國家的政策一直是強調要幫助技術人員進行成果轉化,但這往往是個偽問題:在市場環境下,投資人多而好的項目少。如果不是技術本身有問題,何來「最後一公裡的困難」?
  • 策劃表示:這是「倖存者偏差」!
    策劃「洗地」說是「倖存者偏差」。很多人都在網上吐槽說抽到的概率根本和官方公布的不一樣,要低很多!    所謂的倖存者偏差,投入很少就抽到的很少在網上炫耀,反倒是沒抽到的在網上吐槽的多! 有數據統計的,事實跟官方給的概率差不多,武器池由於新出訂軌機制,新武器的出貨概率還要高於同期up武器。
  • 指定倖存者
    所謂「不怕一萬,就怕萬一」,「指定倖存者」制度正是為此誕生的。攸關生死的神秘使命「指定倖存者」制度的根源,可追溯到劍拔弩張的冷戰歲月。託馬斯·裡德曾是裡根的國家安全事務顧問,他的工作就是為包括全面核戰爭在內的、各種最糟的情況制訂預案。正是他,想到了「指定倖存者」這一招。
  • 黑色倖存者攻略大全
    黑色倖存者怎麼玩,黑色倖存者新手如何快速上手呢?下面為大家帶來的黑色倖存者攻略大全,黑色倖存者新手玩法技巧攻略詳解,希望能幫助到大家!
  • 倖存者偏見!一篇顛覆你認知的好文
    倖存者偏差:不要忽略那些沉默的大多數何為「倖存者偏見」?如果用一句通俗的話來概括「倖存者偏見」,就是死人沒法開口。如果要說得更具體點,那就是:當你在分析某個事物的時候,可能會面對諸多的證據(樣本)。為了更形象一些,來說一下「倖存者偏見」的出處——古羅馬的西賽羅(與凱撒同時代的知名政治家、文學家、演說家)講過一個故事,大意如下:有一群宗教信徒在某次沉船事故中倖存,他們就找人作畫(畫面上是一群人在事故中祈禱),以此來宣揚說:因為他們作了虔誠的禱告,所以才在沉船事故中倖存。某信徒拿了這幅畫給一個無神論者看。
  • 乾貨 :教你用Python來計算偏差-方差權衡
    教程綜述偏差、方差和不可約誤差;偏差-方差權衡;計算偏差和方差。偏差、方差和不可約誤差一個模型預測性能可以用對未參與訓練的樣本做預測後的誤差來表示,我們將其視作是模型誤差。模型誤差可以被分解為三個部分:模型的方差、模型的偏差以及不可約誤差的方差。
  • 低比特離線量化EasyQuant: 比TensorFlow更友好的離線量化方式
    知乎作者:圈圈蟲原文連結:https://zhuanlan.zhihu.com/p/151292945本文已獲原作者原創轉載授權背景深度網絡模型的嵌入式應用和加速是人工智慧落地的重要方向,而 Int8 量化已經被證明可以滿足應用上對精度和速度的需求。但是形形色色的 Int8 量化算法要麼是難以實現,邏輯複雜,要麼是精度保持差。
  • Pytorch量化感知訓練詳解
    前言  量化感知訓練(Quantization Aware Training )是在模型中插入偽量化模塊(fake_quant module)模擬量化模型在推理過程中進行的捨入(rounding)和鉗位(clamping)操作,從而在訓練過程中提高模型對量化效應的適應能力,獲得更高的量化模型精度 。
  • ICLR 2019論文解讀:量化神經網絡
    不同於現有的用每層、輸出或激活(全精度模型)的直接近似來量化權重的方法,損失感知型權重量化會利用來自損失擾動(loss perturbation)、權重量化的信息,並會構建一個漸進的量化策略來執行量化。通過以一種漸進的方式來顯式地規範化損失擾動和權重近似誤差,損失感知型量化方法在理論上是合理的,並且在實踐中也有效(Hou et al., 2017)。這篇論文有以下設置。
  • 偏差(Bias)與方差(Variance)
    泛化誤差、偏差和方差的關係?用圖形解釋偏差和方差。偏差、方差窘境。偏差、方差與過擬合、欠擬合的關係?偏差、方差與模型複雜度的關係?偏差、方差與bagging、boosting的關係?偏差、方差和K折交叉驗證的關係?如何解決偏差、方差問題?1. 為什麼會有偏差和方差?
  • 【偏差-重啟】OOS與OOT
    收錄於話題 #偏差
  • 模型壓縮:量化、剪枝和蒸餾
    模型量化是指將模型權重參數用更少的比特數存儲,以此來減少模型的存儲空間和算力消耗。量化是一種通用的壓縮方法,適用於幾乎所有的深度模型,學術界已經證實,全連接層是對量化操作十分友好的結構,而BERT 中大部分模塊都由全連接層組成,因此BERT 對於量化操作是比較友好的。值得注意的是,Embedding 層(並不屬於全連接層)對於量化操作較為敏感,在實際操作中應避免對Embedding 層做量化操作。
  • 偏差相關飛檢發現項
    偏差相關的缺陷中,大部分是和偏差調查的深入,CAPA的有效性相關,也會有一些和培訓相關的發現項,比如:發現項:實驗室人員缺少實驗技能、偏差管理及相關檢驗操作規程的培訓,檢驗人員不能熟知本崗位職責和SOP。偏差的判定某些時候也確實讓人容易糾結,什麼叫做偏差?
  • 詳解Tensorflow模型量化(Quantization)原理及其實現方法
    因此,為了解決此類問題模型量化應運而生,本篇我們將探討模型量化的概念原理、優缺點及tensorflow模型量化的實現方法。0.28即R=0.28,那麼對應Q的求值過程如下:通常來說,模型量化用的最多的是int8定點量化,本篇如無特殊說明均是指int8模型量化。
  • 心率是最佳的訓練強度量化指標
    通過監測心率來量化訓練強度,從而制定合理的訓練計劃。目前,根據心率來控制訓練強度的方式是使用範圍最廣的。作為人體內輸送氧氣的泵,訓練強度越大,心臟跳動頻率就越高。在長跑這項耐力運動中,心臟和人體循環系統相適應,通過心率的變化反映出訓練中所取得的進步,同時也能反映出健康狀況。
  • 【模型推理】談談幾種量化策略:MinMax、KLD、ADMM、EQ
    量化方式具有多種形態,不管是混合量化、還是全整型量化;不管是單層量化、成組量化、還是整網量化,都存在浮點數映射到整型數的過程,這個過程一定存在精度損失,而對於我們來說,要做的是把精度損失控制在可接受的範圍。   量化又可以分為後量化、訓練時量化又或是量化感知訓練。