你的系統有五層風控。每一層你都獨立測試過,效果都很好。你覺得很安全。
但你有沒有想過:它們會不會在同一時間、對同一筆交易、同時開火?如果會,你的問題比你想像的大。
一個簡單的算術題
假設你有三層風控,每層獨立判斷之後給出一個縮量乘數:
Layer A 判斷市場波動偏高 → 乘數 0.75(縮 25%)。 Layer B 判斷這個策略近期表現差 → 乘數 0.5(縮 50%)。 Layer C 判斷整體曝險偏高 → 乘數 0.3(縮 70%)。
現在問題來了:你怎麼合成最終的倉位大小?
如果你用乘法:0.75 × 0.5 × 0.3 = 0.1125。等於把倉位壓到原來的 11%。對大多數系統來說,這跟直接 BLOCK 沒什麼差別——手續費都賺不回來。
如果你用最小值:min(0.75, 0.5, 0.3) = 0.3。至少還有 30% 的倉位。
選哪個?看起來只是一個工程選擇,但這個選擇可能讓你的系統從「有防護」變成「過度防護到無法交易」。
更深的問題:它們到底是不是獨立的?
上面的討論還假設三層風控是「獨立觸發」的。但在現實中,它們通常不是。
想想看:什麼時候市場波動會偏高?通常是市場大跌的時候。什麼時候你的策略近期表現會差?也是市場大跌的時候。什麼時候整體曝險會偏高?還是市場大跌的時候。
三層「獨立的」風控,在市場壓力最大的時候全部同時觸發。
這意味著你以為你有三層保護,但它們的觸發時機高度相關——本質上可能只是在做同一件事的三個版本。平時各自安好,一出事就集體開火,把你的倉位壓到接近零。
你以為你有三道防線,其實你只有一道。 只是這一道會在某些時候用三個的力量懲罰你。
被多層壓的交易,結果如何?
這才是最關鍵的問題。
很多人只看「風控有沒有觸發」,不看「被風控壓的那些交易,最後到底是賺還是虧」。
做一個簡單的分析:回去看你的歷史交易,標記每一筆被多層風控同時壓量的交易(比如同時有 2 層以上觸發)。然後看這些交易的平均 PnL。
如果平均 PnL 是負的 — 恭喜,你的風控在保護你。多層開火壓的都是爛交易。
如果平均 PnL 是正的 — 你有麻煩了。你的風控在壓好交易。 它不是在保護你,是在砍你的利潤。
我見過的真實情況是:大多數時候,被多層壓的交易裡,有一部分確實是應該避開的,但也有不少是本來會賺的。風控系統殺敵一千、自損八百。
怎麼發現這個問題
不需要什麼複雜的工具,就是一些基本的資料分析:
查重疊頻率。 對每筆歷史交易,記錄每一層風控給出的乘數。然後看:有多少比例的交易被 2 層以上同時壓量?如果超過 10%,你就該警惕了——因為這代表你的「獨立」風控其實不怎麼獨立。
查相關性。 把每層風控的觸發 / 不觸發做成 0/1 序列,算 pairwise correlation。如果任何兩層的 correlation 超過 0.5,其中一層很可能是多餘的。
查合成後的分佈。 畫出最終合成乘數的分佈圖。如果你看到大量的交易被壓到 0.2 以下,你的系統在很多時候根本不是在交易——它只是用極小的倉位在假裝交易。
怎麼解決
最直接的方式是把合成規則從乘法改成更保守的邏輯。比如:
取所有層的最小值,而不是相乘。這樣最多只有「最嚴格的那一層」在起作用,不會出現多層疊加把倉位壓到接近零的情況。
或者更精細一點:把風控層分成不同「類別」——比如「市場環境類」只取一個代表值、「策略表現類」只取一個代表值——同類取最嚴格,不同類才相乘。這樣保證不同維度的保護都有,但同一維度不會重複開火。
但在改之前,先做上面的資料分析。也許你的系統根本沒有嚴重的多層重疊問題——那就不用改。改架構永遠比不改貴,先確認問題存在再動手。
風控的目標不是「最安全」
這句話聽起來反直覺,但它是對的。
風控的目標是在「保護你免於大虧」和「不要妨礙正常交易」之間找到平衡。一個把所有交易都壓到最小倉位的風控系統,確實不會讓你大虧——但它也不會讓你賺到什麼錢。
最好的風控系統是精準的:它在真正危險的時候大力保護,在正常的時候不礙事。而不是一到壓力時刻就五層齊發,把你的倉位砍到渣。
如果你的系統有超過三層風控,花點時間做上面的分析。你可能會發現,拿掉一兩層之後,系統反而表現更好。
少即是多。在風控上也是。




















