先認狀態,再換工具 一條指數走勢鋪滿畫面,背景被豎向色塊切成上漲趨勢、高波震盪、下跌趨勢、低波震盪、再次上漲五段;每段底部亮著一枚對應顏色的工具徽章:上漲用向上箭頭代表持有指數,高波用被壓平的波形代表波動率目標,下跌用盾牌代表持有債券,低波用兩支相向箭頭代表均值迴歸。

我們先看一張表。下面是 A 股幾個年份裡,小盤(中證1000)和大盤(滬深300)、成長(300成長)和價值(300價值)各自的全年收益差:

同一年裡,不同風格的收益差
年份滬深300中證1000小盤 − 大盤成長 − 價值
2013−5.3%+32.5%+37.8+1.0
2015+7.2%+76.6%+69.4+4.4
2017+24.3%−16.9%−41.1−5.9
2020+29.9%+20.5%−9.4+42.1
2024+18.2%+2.8%−15.4−23.9

中證指數官網全收益指數,含分紅再投資。收益差單位是百分點。

表 1 · 同樣是 A 股,2015 年小盤比大盤多漲了 69 個點,2017 年又少漲了 41 個點

這種差別,在 A 股投資者的語言裡叫“風格”:某一年是小盤的天下,另一年是大盤藍籌的天下;某一年成長股一飛沖天,另一年價值股更扛跌。如果手裡有一組量化策略,分別擅長不同的風格,再能判斷出當下是哪種風格,似乎就可以在合適的時候用合適的策略。

不過,在討論“怎麼切換”之前,有幾個更基礎的問題。上面這些差別,是一種會持續一段時間的規律,還是隻是每年隨機波動的結果?如果市場風格確實存在,它應該用什麼來描述,持續多久,怎麼從資料裡認出來?市面上的產品和研究有沒有在做這件事,它們是怎麼設計的?如果我們自己來設計一個“策略籃子 + 風格判定”的系統,它應該長什麼樣,又該怎麼檢驗?

本文按這個順序,從風格是否存在,一直講到一個可以落地的方案。

一、市場風格是否存在

要檢驗的是什麼

表 1 裡的收益差很大,但“差別大”本身證明不了什麼。即使每天的漲跌完全隨機,一年下來大盤和小盤的收益也會有差別。“風格”這個說法隱含了更多的東西:它會持續一段時間。今年小盤佔優,接下來幾個月大機率還是小盤佔優;市場處在劇烈波動的階段,接下來一段時間也大機率繼續劇烈波動。

所以檢驗的思路是:把真實的日收益隨機打亂順序,再計算同樣的統計量。打亂以後,每天的漲跌幅度原封不動,只是時間順序沒了,任何“持續性”都會消失。如果真實資料的統計量明顯落在打亂結果的範圍之外,就說明資料裡確實有打亂破壞掉的那種結構,也就是風格。

資料用 2005 年到 2026 年 10 月的滬深300、中證1000、300價值、300成長全收益指數1,港股用 2008 年以來盈富基金的復權價2。每個統計量都和 200 次打亂的結果比較。

證據一:波動會聚集

最直接的一種持續性是波動。我們算每天的 20 日波動率,再看它和 60 個交易日以前的 20 日波動率之間的相關係數:

20 日波動率與 60 個交易日前的相關係數
序列真實資料打亂後(97.5% 分位)
滬深3000.460.07
小盤 − 大盤0.260.08
成長 − 價值0.620.07
港股(盈富基金)0.280.12

打亂後的相關係數幾乎是 0,200 次裡最大的那 2.5% 也只有 0.07 到 0.12。

表 2 · 三個月前市場在劇烈波動,現在大機率還在劇烈波動;打亂順序後這種關係消失

四條序列全部遠高於打亂後的上限。波動狀態是確定存在的:市場會在“平靜”和“劇烈”兩種狀態之間切換,每種狀態都會持續好幾個月。這也是金融時間序列裡最穩健的經驗事實之一,Ang 和 Bekaert 在國際股市裡觀察到的“高波動、高相關”的熊市狀態3,說的也是這件事。

證據二:趨勢在某些尺度上會持續

第二種持續性是方向。用來衡量它的工具叫方差比(variance ratio):把 q 天的累計收益的方差,除以 q 倍的單日收益方差。如果每天的漲跌互不相關,這個比值應該接近 1;大於 1 說明漲了之後還會漲(趨勢),小於 1 說明漲了之後會回落(反轉)。

方差比 VR(q) · 真實值與打亂後的 95% 範圍
序列5 天20 天60 天250 天
滬深3001.03
[0.92, 1.09]
1.03
[0.84, 1.15]
1.38
[0.73, 1.33]
2.19
[0.46, 1.66]
小盤 − 大盤(指數)1.40
[0.93, 1.08]
1.57
[0.85, 1.16]
1.25
[0.71, 1.28]
1.05
[0.45, 1.67]
小盤 − 大盤(ETF,2016 年起)1.02
[0.94, 1.06]
0.98
[0.85, 1.15]
0.88
[0.77, 1.24]
0.57
[0.14, 1.43]
成長 − 價值1.12
[0.92, 1.06]
1.15
[0.86, 1.17]
1.23
[0.74, 1.31]
1.46
[0.46, 1.68]
港股0.92
[0.91, 1.08]
0.78
[0.81, 1.18]
0.66
[0.66, 1.29]
1.28
[0.46, 1.73]

綠色:顯著大於打亂後的範圍(有趨勢);紅色:顯著小於(有反轉)。ETF 一行用 512100 和 510300 的真實價格。250 天一列只有約 20 個不重疊的樣本,範圍很寬。

表 3 · 滬深300 在季度到年度的尺度上有趨勢;大小盤的短期慣性只出現在指數里,換成 ETF 價格就消失了

這張表比表 2 複雜,可以分三點看:

  • 大盤的趨勢是長週期的。 滬深300 在 5 天、20 天上和隨機遊走沒有區別,到了 60 天、250 天,方差比明顯大於打亂後的上限。也就是說,A 股的“牛市”“熊市”在季度和年度的尺度上是真實存在的,但在幾天、幾周的尺度上看不出來。
  • 大小盤的短期慣性要打個問號。 用指數算,小盤相對大盤的 5 天、20 天方差比高達 1.40 和 1.57,看起來風格慣性很強;可用兩隻真實 ETF 的價格算同一個量,結果和隨機遊走一樣。原因是小盤指數里總有一部分成分股成交稀少,收盤價“慢一拍”,第二天才補漲補跌,於是指數收益出現了虛假的正自相關,這是 Lo 和 MacKinlay 討論過的不同步成交效應4。這裡是根據兩組數字的差別做的推斷,沒有逐只檢查成分股。
  • 港股的月度節奏相反。 港股 20 天的方差比只有 0.78,低於打亂後的下限,說明在月度尺度上更容易“漲多了就回落”。A 股和港股不能共用一套風格假設。

證據三:不同狀態下,市場的樣子不一樣

如果風格存在,那麼在不同的狀態裡,收益的分佈應該明顯不同。我們先用一個簡單的規則(第二節會詳細介紹)把每天分成四種狀態,再看各狀態下的統計量:

四種狀態下的市場特徵 · 2005–2026
狀態天數滬深300 年化波動小盤 − 大盤(年化)成長 − 價值(年化)
上漲趨勢238924.5%−3.7−0.5
下跌趨勢172126.5%+1.6−3.4
低波震盪76118.4%+7.6−8.4
高波震盪29534.6%+32.9+10.2

這裡用當天的狀態描述當天的市場,只用於說明“狀態之間不一樣”,不能直接用來交易,原因見第四節。

表 4 · 高波震盪裡的波動接近低波震盪的兩倍,小盤相對大盤年化多漲 33 個點

證據四:趨勢段的長度,大部分隨機遊走也能產生

最後一個檢驗是一個反面的提醒。用同一套規則,在真實資料和打亂後重建的價格上分別切分狀態,比較每種狀態平均持續多少天:上漲趨勢真實是 109 天,打亂後是 82 天(97.5% 分位 114 天);下跌趨勢 64 天對 59 天;低波震盪 22 天對 16 天(97.5% 分位 19 天);高波震盪 15 天對 15 天。

只有低波震盪的持續時間明顯長於隨機遊走。一段看起來很長的“上漲趨勢”,隨機遊走也能走出來。 這提醒我們:肉眼看到的趨勢段,不等於可以利用的規律,判斷風格是否存在要靠統計檢驗,不能靠看圖。

小結:風格存在,但分層次

把四組證據放在一起,可以得到一個比“有”或“沒有”更具體的回答:

  • 波動狀態:確定存在,持續數月,A 股和港股都是如此。
  • 大盤的趨勢狀態:在季度到年度的尺度上存在,在周的尺度上看不出來。
  • 風格分化:幅度很大,大小盤年度收益差的中位數是 12.4 個百分點,近三分之二的年份超過 10 個點;成長價值是 10.4 個點。但大小盤在短期內的“慣性”主要是指數的統計假象。
  • 市場之間:港股在月度尺度上偏反轉,和 A 股不同。

既然風格存在,它應該用什麼樣的形式來描述?

二、市場風格的描述方式

兩個層面:市場狀態與風格偏好

上一節的證據提示,“風格”至少包含兩個層面的東西。

一個是市場狀態(regime):整個市場處在什麼樣的環境裡,比如在漲還是在跌,平靜還是劇烈。資產配置文獻主要研究的是這一層,學術起點是 Hamilton 1989 年的馬爾可夫切換模型5:市場在幾個看不見的狀態之間切換,每個狀態下收益的均值和波動不同,我們只能從觀察到的價格反推當前處在哪個狀態。

另一個是風格偏好:在同一個市場裡,哪一類股票佔優,比如大盤還是小盤、價值還是成長。A 股賣方報告裡的“風格輪動”主要指這一層。

兩個層面有關聯但不相同。表 4 顯示,高波震盪裡小盤明顯佔優,低波震盪裡價值相對成長佔優,所以市場狀態可以作為判斷風格偏好的線索之一。

風格的幾個性質

從第一節的檢驗結果,還能讀出風格的幾個性質,它們直接決定了判定方法該怎麼設計:

  1. 潛在的。風格不能直接觀察,只能從價格、成交、估值等資料裡推斷,推斷總有誤差。
  2. 事後清楚,事前模糊。回頭看,2015 年是小盤年一目瞭然;身在 2015 年 3 月,只能看到最近幾周小盤在漲。
  3. 有確定的部分,也有模糊的部分。波動狀態的持續性很強,判斷出來就比較可靠;趨勢方向在短期內接近隨機,判斷出來也未必延續。
  4. 切換是跳躍的。狀態往往在幾天之內從一種變成另一種,判定規則既要跟得上切換,又不能被噪聲帶著來回跳。

一種可操作的定義

按這些性質,我們給市場狀態一個簡單的定義,用兩個維度:

  • 趨勢維度:滬深300 的價格和它的 120 日均線。價格在均線上方、而且均線本身在 20 個交易日裡抬高了,是上漲趨勢;價格在均線下方、均線也在下降,是下跌趨勢;其餘情況,價格和均線方向不一致,是震盪。
  • 波動維度:只用來細分震盪市。20 日年化波動率高於過去 3 年的中位數,是高波震盪,否則是低波震盪。

為什麼趨勢市不再按波動細分?因為趨勢市裡方向已經決定了大部分事情,再分一層,每一格里的樣本就太少了。

這樣每天得到一個標籤:上漲趨勢、下跌趨勢、低波震盪、高波震盪。第一版跑出來有一個問題:價格在均線附近徘徊時,標籤今天是“上漲”,明天是“震盪”,一年要切換 13.5 次。針對“切換是跳躍的”這個性質,我們加了一個確認期:新狀態連續出現 5 天才算數。加了以後,一年切換 5.6 次。

滬深300 全收益指數和每天的市場狀態(2006–2026) 上半部分是滬深300全收益指數的對數走勢,下半部分四行分別標出每一天被判成上漲趨勢、下跌趨勢、低波震盪、高波震盪的時段;下跌趨勢集中在 2008、2011、2016、2018、2022 年的大跌裡。 滬深300 全收益指數(對數刻度)與判定出的狀態 2000 4000 上漲趨勢 下跌趨勢 低波震盪 高波震盪 2006 2010 2014 2018 2022 2026 價格在 120 日線下方且均線向下 → 下跌趨勢
圖 1 · 只用趨勢和波動兩個維度,2006 年以來的 A 股被切成四種狀態;趨勢狀態平均持續兩三個月,震盪狀態只有兩三週

風格偏好這一層,我們不另外定義標籤,而是交給策略工具本身去處理:大小盤輪動、價值成長輪動這類工具,本身就是在跟蹤風格偏好。這一點在第四節設計籃子時會具體說明。

這樣的定義是不是太簡單了?在動手設計之前,先看看市面上的產品和研究是怎麼做的。

三、同行的做法

有沒有這樣的產品

答案是有,而且形態差別很大。我們對照了國內外能找到公開資訊的平臺、賣方研究和產品。

國內量化平臺提供的主要是資料、回測和交易通道。聚寬、米筐、優礦、掘金這類平臺不直接判定風格,但米筐的資料介面提供風格因子暴露和因子收益6,可以作為風格判定的輸入;BigQuant 的策略模板裡有一個“大盤風控”開關:上證指數 5 日跌幅超過 4% 就清倉7;果仁網把大盤擇時做成了可配置的獨立模組8。“判定狀態,再切換策略”這一層,平臺上沒有現成的模組。

國內賣方和基金做得更深入。國金證券用宏觀(長週期)和情緒(短週期)兩個維度各訓練一個 XGBoost 模型,在滬深300 和中證500 之間輪動,兩個訊號方向衝突時兩邊各配一半9;天風證券的擇時框架分估值賠率、宏觀勝率、資金趨勢、擁擠反轉四個維度打分10;國聯期貨按利率、期限利差、信用利差的週期判斷大小盤和價值成長11。公募產品裡,匯安啟程混合用宏觀增長、流動性、風險偏好、交易擁擠度四個維度判斷大盤還是中小盤佔優,再切換下層的量化選股策略12,結構和本文要討論的方案几乎一樣。

海外的代表做法有四種。Two Sigma 用高斯混合模型對 17 個因子的收益聚類,得到危機、平穩、通脹、“如履薄冰”四個狀態,輸出每個狀態的機率13;Kritzman 等人對市場動盪、通脹、增長三個維度各用一個兩狀態的馬爾可夫切換模型14;MSCI 的中國因子模型讓因子協方差隨市場狀態自適應15;iShares 的因子輪動 ETF(DYNF)按經濟週期、估值、情緒和因子自身的指標,在幾個因子之間輪動16。另一方面,AQR 的研究提醒,因子擇時訊號常常只是某個已有因子的變形,擇時組合應該和靜態的多風格組合比較17。

風格判定和策略切換:同行的設計
誰怎麼判定可以借鑑侷限
國內平臺
聚寬、米筐、優礦、掘金不直接判定;米筐提供風格因子暴露和因子收益用風格因子收益的滾動統計當狀態輸入;A 股、港股分開建模只描述當下,不預測
BigQuant大盤風控:上證 5 日跌超 4% 清倉狀態預先算好,交易查表只有兩態,閾值是拍的
果仁網可配置的大盤擇時模組擇時與選股解耦閾值由使用者在全歷史上挑,易過擬合
國內賣方與基金
國金證券宏觀(長週期)和情緒(短週期)各一個 XGBoost,等權打分訊號衝突時兩邊各配一半樣本外期較短
天風證券估值賠率、宏觀勝率、資金趨勢、擁擠反轉四維打分加入擁擠度維度權重和閾值也要從歷史裡挑
國聯期貨利率、期限利差、信用利差週期用利率和信用利差判斷大小盤、價值成長宏觀資料頻率低、有釋出滯後
匯安啟程混合四維打分判斷大小盤,下層切換選股策略結構和本文幾乎一樣,已經是公募產品規則不公開,無法復現
海外
Two Sigma高斯混合模型對 17 個因子收益聚 4 類輸出機率,按機率混合工具不預測,狀態會突跳
Kritzman 等每個維度一個兩狀態馬爾可夫切換模型分維度建模,好解釋濾波機率有滯後
MSCI 中國模型風險模型,協方差隨狀態自適應國企、擁擠度因子商業授權,不給擇時建議
iShares DYNF經濟週期、估值、情緒、因子自身四類訊號長期保持多個因子的分散暴露只覆蓋美股
AQR主張謹慎:擇時訊號常常只是某個已有因子的變形和靜態多風格組合比—

天風證券和匯安啟程的資訊來自轉載和媒體報道,沒有見到原文。華泰、招商、國信等券商的風格輪動框架沒找到公開原文,沒有列入。

表 5 · 平臺提供資料和通道,“判定狀態 → 切換工具”這一層由賣方和基金自己做;機率混合、衝突回中性、保持分散是最常見的三條設計

設計上的共同點和分歧

把這些做法拆開看,一個風格系統要回答四個設計問題,同行在每個問題上的選擇各不相同:

  • 輸入用什麼:價格和波動(BigQuant、果仁、本文)、因子收益(Two Sigma、米筐)、宏觀和利率(國聯、國金、DYNF)、估值和擁擠度(天風、DYNF)。
  • 用什麼方法判定:手寫規則、多維打分、統計模型(馬爾可夫切換、高斯混合)、機器學習(XGBoost)。
  • 輸出是什麼:一個確定的標籤,或者每個狀態的機率。
  • 怎麼從狀態走到倉位:全倉切換到一個策略,按打分或機率加權,訊號衝突時回到中性。

共同點也很清楚:狀態由少數幾個可解釋的維度組成;判定和執行分開;越成熟的做法,越傾向於輸出機率、按權重混合,而不是非此即彼地切換。

參照這些做法,我們的方案可以怎麼設計?

四、系統設計

設計目標

前三節回答了“風格存在、可以描述、同行在做”。要把策略籃子和市場風格做成一個系統,核心是把兩件原本分開的事連起來:判斷現在是什麼風格,和決定現在用哪些策略、各用多少。連起來以後,還要能回答三個問題:每天的決定是怎麼一步步得出來的(可解釋);風格變了,下游怎麼跟著變(聯動);用了一段時間,系統怎麼知道自己哪裡錯了、怎麼改(閉環)。

按這三點,系統的設計目標是:

  1. 判定和執行分離。風格識別只輸出“現在是什麼狀態”,不直接決定買什麼;策略工具只按自己的規則給出目標權重,不關心現在是什麼狀態。兩者由配置引擎連線,任何一層都可以單獨替換。這和 QuantConnect 演算法框架把 Alpha、組合構建、風控、執行分成獨立模組是同一個思路18,BigQuant 的模板也是先算好狀態訊號、交易邏輯再查表。
  2. 所有決定都可追溯。每天儲存狀態記錄、所用的對映表版本、每個工具的訊號和最終訂單,事後能復原任何一天的決策過程。
  3. 只用當時可得的資料。每一層的輸入都按“訊號時點”對齊,防止回測裡出現前視偏差。
  4. 用結果反哺上游。實盤的成交、收益和工具表現定期回寫,更新對映表和工具檔案。

總體架構

策略籃子與市場風格系統的模組和資料流 左邊資料層把行情、估值、利率送進中間的決策鏈:風格識別引擎輸出市場狀態和切換事件,配置引擎結合右邊策略籃子的工具檔案和對映表算出目標權重,經組合風控和執行變成訂單;底部的覆盤模組把歸因、衰減監控和月末重算的對映表回寫到配置引擎、策略籃子和識別引擎。 資料層 決策鏈 · 每個交易日 策略籃子 覆盤與回寫 · 收盤後 / 月末 指數點位 300 1000 價值 成長 ETF 盤口 510300 512100 … 成交額 · 估值 全A成交額 PE 利率 · 信用利差 月頻慢變數 虛線:方案裡規劃、 本文回測未使用 所有資料按“訊號時點 可得”對齊,防前視 風格識別引擎 趨勢識別器 價格 vs 120日線 波動識別器 20日波動 vs 3年中位 合成 + 確認期 5 天 狀態 · 切換事件 配置引擎 對映表 狀態×工具 月末走查更新 選取 / 加權 第 1 名 或 按得分 衝突回中性 · 單工具上限 改進項 組合風控 總倉位 · 單資產上限 回撤熔斷 · 流動性 執行 差額 > 5% 才調 · 限價→市價 QMT / PTrade 持有滬深300 持有中證1000 持有紅利 持有債券 趨勢跟蹤 均值迴歸 波動率目標 港股趨勢 大小盤輪動 價值成長輪動 工具檔案 規則 · 對應 ETF 單邊成本 各狀態歷史表現 在用 / 觀察 / 下線 績效歸因 月末重算對映表 工具健康 執行回報、實盤淨值
圖 2 · 風格識別、策略配置、風控執行串成一條每日決策鏈;覆盤把歸因結果和月末重算的對映表回寫到上游,形成閉環

系統由七個模組組成,圖 2 中間是每天執行的決策鏈,右邊是策略籃子,底部是覆盤與回寫:

  • 資料層:提供指數點位、ETF 盤口、成交額、估值,以及規劃中的利率、信用利差等月頻慢變數。它的關鍵職責是對齊時點:每條資料都帶上“何時可得”,下游只能取訊號時點之前可得的值。
  • 風格識別引擎:由幾個獨立的“識別器”組成,每個識別器負責一個維度,輸出這個維度的標籤。目前有趨勢識別器(價格與 120 日均線、均線斜率)和波動識別器(20 日波動率與過去 3 年中位數)。合成器把各維度的標籤組合成市場狀態,再經過 5 天確認期,輸出兩樣東西:當前確認的狀態,以及“狀態是否剛發生切換”的事件。
  • 策略籃子:存放所有策略工具。每個工具實現同一個介面:輸入行情,輸出它想要的目標權重。每個工具還有一份檔案,記錄它的規則、對應的 ETF、單邊成本、在各狀態下的歷史表現,以及當前是“在用”“觀察”還是“下線”。
  • 配置引擎:連線識別和籃子的樞紐。它持有一張“狀態 × 工具”的對映表,表裡是每個工具在每種狀態下的歷史平均收益。每天根據當前狀態查表,決定用哪個工具或按什麼權重組合幾個工具,再把各工具的目標權重加總成組合的目標權重。
  • 組合風控:對目標權重做最後的約束:總倉位、單個資產上限、組合回撤超過閾值時降到中性組合(回撤熔斷),以及按 ETF 成交額檢查流動性。
  • 執行:把目標權重和現有持倉的差額變成訂單。差額小於 5% 不調;先掛限價,14:57 前沒成交改市價。執行終端可以是券商的 QMT 或 PTrade,它們只負責下單。
  • 覆盤與回寫:收盤後對賬,記錄實際成交價和滑點;做績效歸因,把收益拆成“判定對錯”“工具選擇”“工具本身”“交易成本”四部分;月末用走查重算對映表併發布新版本,檢查工具是否衰減,決定工具的上線和下線。

前後聯動

各模組之間按三個節奏聯動:

系統的三個執行節奏
節奏觸發做什麼輸出給誰
每個交易日
14:45–14:48定時取實時點位;各識別器出標籤;合成狀態、判斷是否切換;配置引擎查表,彙總各工具目標權重組合風控
14:48–14:57定時風控約束;計算差額;下單,未成交改市價券商終端
收盤後定時對賬、記錄滑點;儲存當天的狀態記錄、對映表版本、工具訊號、訂單覆盤模組
每月最後一個交易日
收盤後定時用全部歷史重算對映表(走查);績效歸因;檢查工具衰減和對映是否變化配置引擎(次日生效)、策略籃子檔案
按事件或每季度
熔斷組合回撤超閾值降到中性組合,等人工複核後恢復組合風控
工具變更新工具提交 / 健康檢查不合格新工具先觀察一個季度再入籃;不合格的工具降權或下線策略籃子、配置引擎
引數審查每季度審查識別器引數(均線長度、確認期),改動需回測並人工確認風格識別引擎

日頻負責“用”,月頻負責“學”,事件和季度負責“改”。引數只在季度審查時改,避免一邊執行一邊按最近的結果調參。

表 6 · 每天收盤前跑一遍決策鏈;每月末把覆盤結果回寫成新的對映表;結構性的改動只在事件觸發或季度審查時進行

在每日決策鏈裡,上下游之間有幾條明確的聯動規則:

  • 狀態切換是事件。識別引擎確認狀態發生變化時,配置引擎重新查表,可能換成另一個工具,這是換手最大的時刻。狀態不變的日子,配置引擎沿用原來的工具,組合只會因為工具自己的訊號(比如趨勢跟蹤的均線開關)或倉位漂移而調整。
  • 確認期是識別和配置之間的緩衝。原始標籤變了,要連續 5 天才觸發切換事件,下游不會被一兩天的噪聲帶著來回換倉。
  • 衝突時回到中性。如果以後加入更多識別器,比如趨勢判斷為上漲、利率識別器判斷為緊縮,兩者方向矛盾時,配置引擎不選任何一邊,退回十個工具等權的中性組合。這是借鑑國金證券“訊號衝突各配一半”的做法。
  • 風控有最終否決權。配置引擎給出的目標權重,風控可以削減但不能放大;回撤熔斷觸發後,配置引擎的輸出暫時不生效。
  • 回寫只在月末發生。對映表、工具檔案在月中保持不變,當月每天的決定都基於同一個版本,便於事後覆盤。

一次完整的狀態切換

用一個真實的例子把這些聯動串起來。2026 年 10 月 12 日起,滬深300 跌破了 120 日均線,均線也開始向下,原始狀態變成“下跌”;到 10 月 16 日,已經連續 5 天,確認期滿。

2026 年 10 月 16 日收盤前,一次狀態切換在系統裡經過的六個物件 狀態記錄確認從低波震盪切換到下跌趨勢,對映表的下跌趨勢一列選出港股趨勢,港股趨勢工具因為盈富基金低於 120 日均線給出持有債券的訊號,目標組合從 510300 全倉變成 511010 全倉,風控檢查透過後生成一賣一買兩筆訂單。 2026-10-16 · 14:45 起 狀態記錄 state 價格 / 120日線 6270 / 7006 均線20日斜率 −0.34% 20日波動 / 中位 13.5% / 14.3% 原始狀態 下跌 · 第5天 確認狀態 下跌趨勢 對映表 · 下跌趨勢列 09-30 港股趨勢 +11.8 趨勢跟蹤 +11.0 持有債券 +5.5 價值成長輪動 +5.1 選中 港股趨勢 工具訊號 · 港股趨勢 tool 盈富基金 2800 24.82 120 日均線 25.47 訊號 低於均線 工具目標 511010 100% 目標組合 target 當前(10-15) 510300 100% 來源 大小盤輪動選大盤 目標 511010 100% 差額 100% > 5% 組合風控 risk 單工具上限 100%(基礎版) 流動性 511010 透過 回撤熔斷 未觸發 訂單 orders 賣 510300 限價 4.236 買 511010 限價 140.972 預計成本 約 7bp 14:57 未成交 改市價 10-12 起原始狀態就是“下跌”,確認期等滿 5 天,10-16 才觸發切換
圖 3 · 狀態切換事件驅動配置引擎查表、工具給出訊號、組合算出差額,最後才落到訂單;狀態不變的日子,只有工具自己的訊號和倉位漂移會觸發調倉

這一天,系統依次做了這些事:識別引擎確認狀態從低波震盪切換到下跌趨勢,發出切換事件;配置引擎查 9 月末釋出的對映表,下跌趨勢一列里港股趨勢的歷史收益最高(年化 +11.8%),選中它;港股趨勢工具按自己的規則檢查盈富基金,24.82 港元低於 120 日均線 25.47,給出“持有債券”的訊號;組合層把目標從前一天的 510300(大小盤輪動選的大盤)全倉,改成 511010 全倉,差額 100%;風控檢查透過;執行層生成一賣一買兩筆訂單,預計成本約 7bp。

可以看到,狀態切換並不直接決定買什麼,它只決定由哪個工具來做決定;具體持有什麼,由工具自己的規則給出。這就是“判定和執行分離”在一次切換中的體現。

工具的生命週期

策略籃子不是一成不變的。一個工具要進入籃子,需要滿足幾條標準:能用日均成交額足夠大的 ETF 實現;和已有工具的收益相關性不太高,否則只是重複;在至少一種狀態下,歷史表現明顯好於籃子的平均水平。新工具先進入“觀察”狀態一個季度,只記錄訊號、不分配資金。

在用的工具每月做一次健康檢查:它在被選中的狀態下,實盤表現是否持續低於對映表裡的歷史值;它依賴的統計規律是否還在(比如大小盤輪動依賴的風格慣性,可以用 ETF 價格的自相關和方差比來監控)。連續不合格的工具先降權,再下線。

系統的骨架就是這樣。接下來看每個模組的具體實現,以及實現中的取捨。

五、各模組的實現

風格識別:選哪些指標

第二節的定義只用了趨勢和波動兩個維度。同行的打分卡往往用上十幾個指標,估值、成交額、股債價效比、風格動量都在裡面。為了決定加哪些,我們先對常用指標做一次“體檢”:每個月末取指標值,和下一個月的收益算秩相關係數(Spearman),共 250 個月。秩相關是 0 表示毫無關係,括號裡的 t 值超過 2,大約相當於 5% 的顯著性。再把樣本切成前後兩半,看穩定性。

月末指標與下個月收益的秩相關 · 2006–2026
指標預測什麼全期(t 值)2006–20152016–2026
價格 / 120 日均線滬深300+0.10(1.6)+0.20−0.05
過去 60 日漲幅滬深300+0.06(0.9)+0.18−0.15
成交額 20 日 / 250 日滬深300+0.09(1.4)+0.21−0.14
市盈率 5 年分位滬深300−0.02(−0.2)—−0.00
盈利收益率 − 債券漲幅滬深300+0.14(1.8)+0.18+0.12
20 日波動率小盤 − 大盤+0.20(3.1)+0.21+0.05
1000 相對 300 的 20 日漲幅小盤 − 大盤+0.03(0.5)+0.09−0.06
成長相對價值的 20 日漲幅成長 − 價值+0.03(0.5)+0.05+0.02
盈富 / 120 日均線港股−0.04(−0.6)+0.01−0.09

市盈率 2011 年起才有,5 年分位要到 2016 年才算得出來。“盈利收益率 − 債券漲幅”是股債價效比的粗糙代理:沒有拿到國債收益率的長序列,用中證全債過去 60 日的漲幅代替利率變化。

表 7 · 波動率對下個月大小盤差的預測最強;趨勢、動量、成交額在前十年和後十年的方向相反

這張表和第一節的結論對得上:波動是最可靠的狀態變數,20 日波動率是唯一全期顯著的指標,高波動之後小盤相對更強(和表 4 一致);趨勢、動量、成交額在月度尺度上不穩定,前十年正相關,後十年負相關;估值是慢變數,對下個月幾乎沒有預測力,更適合用在年度的大類配置上。

據此,識別引擎保留“趨勢 × 波動”兩個維度:波動維度最可靠;趨勢維度在月度上不穩定,但在季度到年度上存在(表 3),120 日均線大致對應半年的尺度。多加幾個不穩定的指標,合成權重本身又是一組要從歷史裡挑出來的引數,這正是多重檢驗文獻警告的情形19。

我們也試了統計模型的路線:對滬深300 的周收益擬合一個兩狀態的高斯隱馬爾可夫模型(HMM),每年年末只用截至當時的資料重新估計,第二年用前向濾波(只用過去的資料)算出處在“好狀態”的機率,機率過半就持有滬深300,否則持有債券。2008 年以來,它的年化收益是 −4.2%(按“收益 / 波動”高的算好狀態)或 2.9%(按低波動的算好狀態),同期 120 日均線擇時是 9.2%。原因是 A 股的高波動既出現在大漲裡,也出現在大跌裡:2008 年初估出來的“好狀態”年化收益 134%、波動 32%,其實是 2006–2007 年的高波動牛市,於是 2008 年的高波動大跌也被認成了好狀態。只看收益分佈的兩狀態模型,很難把這兩種高波動分開。

策略工具籃子

選工具有兩條約束:每個工具都要能用場內 ETF 實現,這樣才能真正交易,也才能用真實價格檢驗;工具之間的“好年份”要儘量錯開,否則十個工具其實是同一個工具的十個變體。

按這兩條,我們選了十個工具,分三類。持有類一直持有某個指數,代表一種風格的底倉;擇時類在同一個指數上按訊號決定持有還是換成債券,趨勢跟蹤對應時間序列動量的文獻20,和 Faber 的 10 個月均線是同一個思路21,波動率目標來自 Moreira 和 Muir 的研究22;輪動類在兩種風格之間二選一,直接跟蹤風格偏好。

十個工具:規則和事先認為它適合的市場
工具規則(每天收盤後算)直覺上適合
持有類
持有滬深300一直持有滬深300 全收益指數上漲趨勢
持有中證1000一直持有中證1000小盤佔優
持有紅利一直持有中證紅利震盪、防禦
持有債券一直持有中證全債下跌趨勢
擇時類
趨勢跟蹤滬深300 > 120 日均線 → 持有,否則債券趨勢明顯的市場
均值迴歸偏離 20 日均線 < −1.5σ 買入,回到均線賣出低波震盪
波動率目標倉位 = min(1, 15% / 20 日年化波動)高波震盪
港股趨勢盈富基金 > 120 日均線 → 持有,否則債券A 股走弱時
輪動類
大小盤輪動過去 20 日滬深300、中證1000 誰強持有誰風格持續的市場
價值成長輪動過去 20 日 300價值、300成長 誰強持有誰風格持續的市場

最後一列是動手之前憑常識寫下的,下一小節用資料檢驗它。

表 8 · 籃子裡的工具分持有、擇時、輪動三類,每個都能用場內 ETF 實現

對映表:狀態與工具的對應

籃子和狀態都有了,下一步是確認每個工具在哪種狀態下效果最好。回測的約定如下:第 t 天收盤後用截至當天的資料算訊號,從第 t+1 天起按新倉位計收益;成本按實際換手乘單邊費率扣除,A 股 ETF 不交印花稅23,滬深300 按 4bp、中證1000 按 6bp、債券按 3bp,港股 ETF 免印花稅24,按 10bp;另設一檔約三倍的悲觀成本。

把每個工具每天的收益,按“前一天收盤時判定的狀態”分組,算年化平均:

每個工具在每種狀態下的年化收益 · 2008–2026 · 扣成本
工具上漲趨勢
1900 天
下跌趨勢
1699 天
低波震盪
670 天
高波震盪
295 天
持有滬深3009.3%−1.7%−5.8%21.2%
持有中證10008.0%0.7%−0.6%59.7%
持有紅利11.0%0.6%5.1%26.5%
持有債券3.7%5.7%4.9%7.8%
趨勢跟蹤10.4%10.8%2.8%19.6%
均值迴歸−2.8%−2.1%−5.2%30.5%
大小盤輪動21.2%2.1%−2.7%41.1%
價值成長輪動10.6%2.1%−7.8%15.1%
波動率目標8.8%2.9%−5.7%17.0%
港股趨勢1.4%10.8%3.4%11.4%

綠色是每一列的最高值。下跌趨勢裡趨勢跟蹤仍能賺錢,是因為它的開關比狀態標籤反應快:狀態還是“下跌”時,價格可能已經站回均線上方。

表 9 · 上漲趨勢裡大小盤輪動最好,下跌趨勢裡趨勢跟蹤和港股最好,低波震盪裡紅利最好,高波震盪裡持有中證1000 最好

對照表 8 最後一列的直覺,有符合的,也有不符合的。下跌趨勢裡躲開 A 股、上漲趨勢裡用進攻性工具,和直覺一致;“低波震盪用均值迴歸”“高波震盪用波動率目標”這兩條直覺,資料並不支援:均值迴歸在低波震盪裡虧得最多,只在高波震盪裡賺錢。高波震盪裡持有中證1000 的年化高達 59.7%,這種狀態多半出現在暴跌之後的反彈段,和表 4 裡“高波震盪小盤佔優”是同一件事。

做這張表要注意一個細節:必須用“前一天的狀態”配“當天的收益”。當天的狀態是用當天收盤價算的,當天的收益也取決於當天收盤價,兩者天然相關。用當天的狀態算,高波震盪裡持有滬深300 只有 3.7%,用前一天的狀態是 21.2%,差一天,結論就不同。

對映表的更新:走查

表 9 是用 2008 到 2026 年全部資料算的,直接拿它回測,等於 2008 年就看過了 2026 年的答案。配置引擎更新對映表的做法是走查(walk-forward):每個月末只用截至當時的歷史,重新算一遍“狀態 × 工具”的收益表;下一個月裡,每天收盤後判定狀態,到表裡對應的那一列挑收益最高的工具。表只在月末更新,任何一天的選擇都只用到了過去。

走查選工具:月末更新狀態×工具表,每天按狀態查表 左邊是 2026 年 9 月末用 2005 年以來全部歷史算出的狀態乘工具年化收益表,右邊是 10 月 16 日收盤判定為下跌趨勢,查表選出下跌趨勢這一列最高的港股趨勢。 月末更新 · 截至 2026-09-30 的歷史 每天查表 · 2026-10-16 年化收益 % 上漲趨勢 下跌趨勢 低波震盪 高波震盪 持有滬深300 +27.3 -1.7 -1.1 +21.2 持有中證1000 +25.5 +1.4 +6.1 +59.7 持有紅利 +29.1 +0.5 +6.1 +26.5 持有債券 +2.9 +5.5 +5.4 +7.8 趨勢跟蹤 +27.2 +11.0 +2.5 +20.9 大小盤輪動 +40.9 +4.0 +7.8 +43.1 港股趨勢 +2.3 +11.8 +5.8 +12.2 另有均值迴歸、價值成長輪動、波動率目標 3 個工具,略 每格 = 歷史上“訊號日處於該狀態”的那些天, 工具第二天的平均收益(不含成本)×252 表只在月末重算,所以選出的工具不會用到未來 滬深300 6270.45 120日線 7006.16 均線20日斜率 −0.34% 狀態 下跌趨勢 選中 港股趨勢 10-15 還是低波震盪(選大小盤 輪動);新狀態連續 5 天才算數, 這裡已是第 5 天
圖 4 · 走查只用過去:每月末用截至當時的歷史重算表,下個月每天收盤後判定狀態、查這一列裡最好的工具

走查需要熱身期來積累第一張表,我們留了 2005 到 2007 年三年,所以後面的檢驗從 2008 年開始。

走查選出的對應關係很穩定,2010 年以後幾乎每個月都是同一張對映:上漲趨勢和低波震盪用大小盤輪動,下跌趨勢用趨勢跟蹤(2015 年和 2026 年有幾個月換成了港股趨勢),高波震盪持有中證1000。工具一年平均切換 4.4 次。2026 年 10 月 16 日收盤,狀態剛確認從低波震盪變成下跌趨勢,選出的是港股趨勢。

作為對照,我們也把憑直覺寫的那套對應關係當作一個方案,叫“經驗對映”:上漲持有滬深300,下跌持有債券,低波震盪用均值迴歸,高波震盪用波動率目標。

最小實現

識別引擎和配置引擎的最小實現如下,輸入是截至今天的指數點位,MAP 是當前版本的對映表:

Python
import numpy as np, pandas as pd
def regime(c: pd.Series, confirm=5) -> pd.Series:
"""c: 沪深300 每日点位。返回每天的状态,新状态连续 confirm 天才切换。"""
ma = c.rolling(120).mean()
slope = ma / ma.shift(20) - 1
vol = c.pct_change().rolling(20).std() * np.sqrt(252)
hi = vol > vol.rolling(750, min_periods=250).median()
raw = pd.Series(np.where(hi, '高波震荡', '低波震荡'), index=c.index)
raw[(c > ma) & (slope > 0)] = '上涨趋势'
raw[(c < ma) & (slope < 0)] = '下跌趋势'
out, cur, cand, n = [], None, None, 0
for r in raw:
cur = cur or r
if r == cur:
cand, n = None, 0
else:
cand, n = (r, n + 1) if r == cand else (r, 1)
if n >= confirm:
cur, cand, n = r, None, 0
out.append(cur)
return pd.Series(out, index=c.index)
MAP = {'上涨趋势': '大小盘轮动', '低波震荡': '大小盘轮动',
'下跌趋势': '趋势跟踪', '高波震荡': '持有中证1000'} # 每月末用走查重算
def target(hs300: pd.Series, zz1000: pd.Series) -> dict:
tool = MAP[regime(hs300).iloc[-1]]
if tool == '持有中证1000':
return {'512100': 1.0}
if tool == '趋势跟踪':
up = hs300.iloc[-1] > hs300.rolling(120).mean().iloc[-1]
return {'510300': 1.0} if up else {'511010': 1.0}
strong_big = hs300.pct_change(20).iloc[-1] > zz1000.pct_change(20).iloc[-1]
return {'510300': 1.0} if strong_big else {'512100': 1.0}

系統搭起來了,接下來回答另一個問題:這種模式靠不靠譜,能不能真的產生收益?

六、這種模式靠不靠譜

比較物件

檢驗一個風格切換方案,要和三類基準比:

  1. 持有滬深300,代表不做任何判斷。
  2. 十個工具等權,每月再平衡,代表有工具籃子、但不判斷風格。AQR 強調擇時要和靜態的多風格組合比17。
  3. 單一均線擇時,它本身就是一個最簡單的兩狀態判定,用來衡量四狀態加十個工具多帶來了什麼。

另外放一個“事後最優對映”作為上限:直接用表 9(含未來)選工具。它和走查的差距,就是“看過答案”的價值。

指數上的結果

2008-01-02 至 2026-10-16 · 指數資料 · 標準成本
方案年化收益最大回撤夏普年換手
按風格切換
走查選最優 1 個11.6%−50%0.6331.8
走查選前 3 個等權5.9%−55%0.4126.5
經驗對映5.1%−49%0.398.9
事後最優對映(含未來)16.0%−51%0.8331.0
基準
持有滬深3000.8%−71%0.150
十個工具等權4.8%−50%0.3715.9
單一均線擇時9.2%−33%0.6418.7

分時段年化(走查選最優 1 個 / 單一均線 / 持有滬深300):2008–2010 年 18.4% / 19.2% / −15.9%;2011–2015 年 17.7% / 12.5% / 5.9%;2016–2020 年 13.0% / 12.5% / 9.6%;2021–2026 年 2.3% / −1.0% / −1.4%。夏普沒有扣無風險利率。2008 年初接近 A 股高點,持有滬深300 的收益因此偏低;從 2006 年起算,它的年化是 10.0%。

表 10 · 走查選工具的方案年化 11.6%,比持有滬深300 高 10.8 個點,比等權高 6.8 個點,比單一均線高 2.4 個點
2008 年以來四種做法的淨值(對數刻度,扣標準成本) 走查選工具的組合在 2008 到 2020 年明顯跑贏持有滬深300和等權組合,和單一均線擇時大體同行;2021 年以後四條線都基本走平。 淨值 · 2008-01-02 = 1 · 指數資料 · 標準成本 0.5 1 2 4 8 2008 2011 2014 2017 2020 2023 2026 2021 年起 走查選最優 1 個 7.32 倍 趨勢跟蹤(120 日線) 4.90 倍 等權全部工具 2.33 倍 持有滬深300 1.15 倍
圖 5 · 按狀態切換工具的組合將近 19 年跑出 7.3 倍,單一均線擇時 4.9 倍,持有滬深300 只有 1.15 倍;但 2021 年以後四條線都差不多走平

為了判斷這些差別是不是運氣,我們用塊自助法(block bootstrap)檢驗:把兩個方案的日收益差切成 20 天一塊,有放回地重新抽樣 3000 次,看年化超額收益的分佈。結果是:

  • 相對持有滬深300,年化超額 +9.4%,95% 區間 [+1.2%, +18.4%],p = 0.012,顯著。
  • 相對十個工具等權,+7.2%,p = 0.015,顯著。說明“判斷風格再選工具”比“有工具但不判斷”更好。
  • 相對單一均線,+3.2%,區間 [−3.8%, +10.7%],p = 0.16,夏普相近,不顯著。

另外幾個方案的結果也能說明一些設計問題:選前 3 個等權只有 5.9%,因為表裡排第二、第三的工具和第一名差距很大,平均進來是稀釋;經驗對映只有 5.1%,說明工具和狀態的對應關係要從資料裡來;事後最優對映比走查高 4.4 個點,這是直接用全樣本統計表回測會高估的部分。

換成可交易的價格

上面用的是指數。第一節已經發現,小盤指數存在不同步成交造成的假慣性,而大小盤輪動正是走查選得最多的工具,所以必須用真實的 ETF 價格再檢驗一次:訊號仍然用指數算(指數點位在收盤前就能看到),收益改用 ETF。512100 在 2016 年 9 月上市,加上均線熱身,檢驗視窗是 2017 年 5 月到 2026 年 10 月。

中證1000 減滬深300 的日收益差:今天和明天的相關係數(滾動 3 年) 用指數算,這個自相關 2008 年約 0.31,之後一路降到 2023 年的 0.03;用兩隻 ETF 的真實價格算,2019 年以來一直在 0 附近。 一階自相關 · 滾動 750 個交易日 0.0 0.1 0.2 0.3 2008 2011 2014 2017 2020 2023 2026 指數(中證1000 − 滬深300) ETF(512100 − 510300) 大小盤輪動在指數上賺的錢,主要來自這條線
圖 6 · 指數里“小盤今天強、明天還強”的慣性一直在衰減,換成真實 ETF 價格,這股慣性基本不存在
走查選最優 1 個:不同執行假設下的年化超額
假設年化收益相對持有滬深300相對單一均線
指數 · 2008-01 至 2026-10
標準成本,收盤前成交11.6%+9.4%(p 0.01)+3.2%(p 0.16)
第二天收盤才成交8.7%+6.9%(p 0.05)+3.4%(p 0.18)
悲觀成本8.3%+6.5%(p 0.06)+1.4%(p 0.29)
真實 ETF · 2017-05 至 2026-10
標準成本,收盤前成交8.9%+4.3%(p 0.14)+5.1%(p 0.07)
第二天收盤才成交8.2%+3.7%(p 0.16)+6.1%(p 0.06)
悲觀成本5.2%+0.9%(p 0.39)+3.1%(p 0.18)

p 值是塊自助法下“超額 ≤ 0”的比例,通常以 0.05 為界。ETF 視窗裡持有滬深300 年化 4.1%,單一均線 4.1%,十個工具等權 5.0%。2021 年以來走查方案的年化是 1.4%。

表 11 · 換成真實 ETF 價格後,超額收益的點估計仍為正(+0.9 到 +6.1 個點),但都沒有達到 5% 的顯著性

港股

把盈富基金當作“大盤”,用同一套狀態定義和工具(持有、趨勢跟蹤、均值迴歸、波動率目標、債券)再走查一遍,2011 年以來年化 2.9%,持有盈富基金 3.4%,單一均線 2.8%,相對持有 −1.9%(p = 0.66);最大回撤從 −49% 降到 −23%。這裡的避險資產暫時用中證全債代替港元現金,含了匯率和利率的差異,數字只能作為參考。港股月度偏反轉的特點(表 3)也意味著,照搬 A 股的趨勢型判定未必合適。

檢驗結論

把三組檢驗放在一起:

  • 風險控制部分是成立的。 無論指數還是 ETF、A 股還是港股,方案的最大回撤都明顯小於持有指數,大約降低一半。這部分主要來自“下跌趨勢時離開股票”,對應的是第一節裡確定存在的長週期趨勢。
  • 收益增強部分在指數上顯著,在 ETF 上尚不顯著。 相對持有滬深300,指數上年化多 9.4 個點(p = 0.01);換成 ETF 價格,點估計多 0.9 到 4.3 個點,但 p 值在 0.14 以上。差距的一大部分來自指數的不同步成交,這部分在交易中拿不到。
  • 相對單一均線的增量還需要更多證據。 四狀態加十個工具,在各種假設下比單一均線多 1.4 到 6.1 個點,都不顯著。
  • 近幾年的效果弱於早年。 2021 年以來各方案的收益都接近持有債券,圖 6 裡指數的大小盤自相關也從 0.31 降到了 0.03。

這些結果說明系統裡還存在哪些問題?

七、存在的問題與改進

檢驗中暴露的問題

回顧從設計到檢驗的過程,有幾個問題值得單獨記錄:

  1. 指數和可交易價格的差別。 這是影響最大的一條。用指數日線回測、日頻換手的輪動工具,都需要用真實的 ETF 價格複核。
  2. 起點敏感。 從 2006 年起算,持有滬深300 年化 10.0%,單一均線 17.5%,走查方案因為熱身期拿著債券只有 10.5%;從 2008 年起算,排名完全不同。A 股的牛熊集中,報告結果要給多個起點和分時段的數字。
  3. 小樣本的格子。 高波震盪總共 295 天,大約 20 段行情,“持有中證1000 年化 59.7%”主要來自其中幾次暴跌後的反彈,證據最弱。
  4. 規律在變化。 2016 年以後趨勢類指標的月度方向反轉(表 7),2021 年以後各方案收益都接近債券。
  5. 多次嘗試。 本文跑過二十個左右的變體(確認期、成交時點、成本檔位、選幾個工具、HMM 的兩種排序)。按 Bailey 和 López de Prado 的縮水夏普(DSR)25,20 次嘗試對應的最低年化夏普是 0.31。把走查學到的對映壓縮成一條規則(滬深300 在 120 日線上方做大小盤輪動,下方持有債券)、每週調倉,指數上的年化夏普 0.65,可以透過這道門檻,DSR 為 0.92;用 ETF 價格算,按成本和成交假設不同,夏普在 0.03 到 0.52 之間。

改進方向

結合這些問題和第三節同行的做法,下一版可以從這幾處改:

  1. 回測一律用可交易價格。 ETF 上市以前用指數,但把日頻換手的工具改成周頻或加一天延遲,壓掉不同步成交的影響。
  2. 從“選第一名”改成“按把握加權”。 借鑑 Two Sigma 和國金證券:工具權重和它在當前狀態下的歷史優勢成正比,樣本少的格子向全樣本平均收縮;兩個維度的訊號衝突時回到等權組合。
  3. 單個工具設上限。 借鑑 DYNF 長期保持多個因子分散暴露的思路,單個工具不超過 40% 到 50%,用分散換取對判斷錯誤的容忍度。
  4. 補充慢變數維度,按月使用。 利率、信用利差(國聯期貨的思路)、估值、擁擠度這類慢變數,適合決定月度或年度的大類傾向,不適合決定日頻切換。
  5. 把衰減監控做實。 第四節工具生命週期裡的月度健康檢查,要落實成具體的閾值:比如大小盤 ETF 收益差的方差比連續 6 個月接近 1,就把大小盤輪動降為觀察。
  6. A 股和港股分開建模。 港股月度偏反轉,成本也更高(個股印花稅 0.1%,ETF 免),狀態定義和換手頻率都要單獨設定。

八、小結

  1. 市場風格是否存在? 存在,但分層次。波動狀態確定存在,持續數月;大盤趨勢在季度到年度的尺度上存在;風格分化幅度大,大小盤年度收益差中位數 12.4 個點;大小盤的短期慣性主要是指數的統計假象;港股在月度上偏反轉。
  2. 風格怎麼描述? 分市場狀態和風格偏好兩層。它是潛在的、事後清楚事前模糊、切換跳躍的。本文用趨勢 × 波動定義四種市場狀態,加 5 天確認期,風格偏好交給輪動類工具跟蹤。
  3. 同行有沒有、怎麼做? 平臺提供資料和通道;賣方和基金用多維打分或機器學習判定,公募已有“判定大小盤再切換選股策略”的產品;海外用馬爾可夫切換、高斯混合,越成熟的做法越傾向於輸出機率、按權重混合。
  4. 系統長什麼樣? 資料層、風格識別引擎、策略籃子、配置引擎、組合風控、執行、覆盤七個模組;識別和執行分離,由配置引擎查“狀態 × 工具”對映表連線;每天收盤前跑一遍決策鏈,狀態切換是觸發換倉的事件;每月末用走查重算對映表回寫,事件和季度審查負責改引數、換工具。
  5. 各模組怎麼實現? 識別引擎用最可靠的波動和長週期趨勢兩個維度;籃子裡十個可用 ETF 實現的工具;對映表用前一天的狀態統計、月末走查更新。
  6. 靠不靠譜? 風險控制部分成立,最大回撤大約減半;收益增強在指數上顯著,在真實 ETF 上點估計為正但尚不顯著;相對單一均線的增量需要更多證據;近幾年效果減弱。
  7. 還有什麼問題、怎麼改? 可交易價格回測、按把握加權、衝突回中性、單工具上限、補慢變數、衰減監控、A 股港股分開建模。

本文的資料、指令碼和全部中間結果按“下載 → 整理 → 風格檢驗 → 工具 → 狀態 → 走查 → 複核”的順序分成了幾個指令碼,換一組指數或一個起點,可以照著重跑一遍。

參考資料

參考資料

  1. 滬深300、中證1000、中證紅利、300價值、300成長、中證全債等全收益指數日線中證指數有限公司 · 2026-10-17csindex.com.cn ↗2005-01-04 至 2026-10-16,用官網行情介面下載。全收益指數含分紅再投資(H00300、H00852、H00922、H00919、H00918、H11001 等),滬深300 滾動市盈率 2011-06 起才有。https://www.csindex.com.cn/ ↩

  2. 盈富基金 2800.HK 與 510300、512100、510880、511010 的復權日線Yahoo Finance · 2026-10-17收藏finance.yahoo.com盈富基金 2008-01 起;510300 2012-05 起;512100 2016-09 起。復權價含分紅。https://finance.yahoo.com/quote/2800.HK/ ↩

  3. International Asset Allocation With Regime ShiftsAndrew Ang, Geert Bekaert · Review of Financial Studies · 2002收藏doi.org15(4): 1137–1187。存在高波動、高相關的“熊市”狀態,這時分散的效果會下降。https://doi.org/10.1093/rfs/15.4.1137 ↩

  4. An econometric analysis of nonsynchronous tradingAndrew W. Lo, A. Craig MacKinlay · Journal of Econometrics · 1990doi.org ↗45(1–2): 181–211。成分股不同步成交會讓指數收益出現虛假的正自相關。https://doi.org/10.1016/0304-4076(90)90098-E ↩

  5. A New Approach to the Economic Analysis of Nonstationary Time Series and the Business CycleJames D. Hamilton · Econometrica · 1989收藏doi.org57(2): 357–384。馬爾可夫切換模型的起點:經濟在幾個看不見的狀態之間按馬爾可夫鏈切換,用濾波推斷每個時點處在哪個狀態。https://doi.org/10.2307/1912559 ↩

  6. RQData 風險因子模組米筐 RiceQuant收藏ricequant.comget_factor_exposure、get_factor_return 等介面;另有港股通 HKv1、A+H 的 AHv1 版本。https://www.ricequant.com/doc/rqdata/python/risk-factors-mod ↩

  7. BigQuant 策略模板文件(大盤風控)BigQuant收藏bigquant.com上證指數 5 日收益低於 −4% 時全倉賣出、停止交易。https://bigquant.com/wiki/doc/OCkaNT91EC ↩

  8. 果仁網果仁網收藏guorn.com風控模組支援用大盤指標擇時,交易模型支援定期輪動。https://guorn.com/ ↩

  9. 因子風格擇時策略(2021 年 11 月期)國金證券 金融產品研究中心 · 2021-11-05收藏pdf.dfcfw.com滬深300 與中證500 輪動:宏觀維度和情緒、估值、風險偏好維度各訓練一個 XGBoost,等權打分,方向衝突時兩邊各配一半。https://pdf.dfcfw.com/pdf/H3_AP202111081527725354_1.pdf ↩

  10. 權益觀點:高擁擠已明顯緩釋—金融工程(轉載)格隆匯(轉載天風證券金工) · 2026-08-02收藏m.gelonghui.com擇時框架分估值賠率、宏觀勝率、資金趨勢、擁擠反轉四個維度,每週打分。轉載稿,未見原文。https://m.gelonghui.com/p/5943177 ↩

  11. 利率週期、期限利差週期和信用利差週期風格輪動擇時策略國聯期貨研究所 · 2025-01-24收藏pdf.dfcfw.com利率下行偏成長、上行偏價值;信用利差上升偏大盤價值、下降偏小盤成長。https://pdf.dfcfw.com/pdf/H3_AP202501251642551718_1.pdf ↩

  12. 匯安啟程混合發行報道介面新聞 · 2026-08收藏jiemian.com上層用宏觀增長、流動性、風險偏好、交易擁擠度四個維度判斷大盤或中小盤佔優,下層按風格配不同的量化選股策略。媒體報道。https://www.jiemian.com/article/14860958.html ↩

  13. A Machine Learning Approach to Regime ModelingAlex Botte, Doris Bao · Two Sigma · 2021-10-06收藏twosigma.com用高斯混合模型對 17 個因子收益聚類,交叉驗證選出 4 個狀態:Crisis、Steady State、Inflation、Walking on Ice。作者自述模型不做預測,狀態會突跳。https://www.twosigma.com/articles/a-machine-learning-approach-to-regime-modeling/ ↩

  14. Regime Shifts: Implications for Dynamic Strategies (corrected)Mark Kritzman, Sébastien Page, David Turkington · Financial Analysts Journal · 2012收藏doi.org68(3): 22–39。對市場動盪、通脹、經濟增長三個維度分別用兩狀態馬爾可夫切換模型識別狀態,再做動態配置。https://doi.org/10.2469/faj.v68.n3.3 ↩

  15. MSCI China Equity Factor Model FactsheetMSCI收藏msci.com新增國企、擁擠度等因子,因子協方差隨市場狀態自適應。https://www.msci.com/downloads/web/msci-com/data-and-analytics/factor-investing/equity-factor-models/MSCI%20China%20Equity%20Factor%20Model_Factsheet.pdf ↩

  16. Factor rotationBlackRock iShares收藏blackrock.comDYNF 按經濟週期、估值、情緒、因子自身指標四類訊號在幾個因子之間輪動。https://www.blackrock.com/us/financial-professionals/insights/factor-rotation ↩

  17. Contrarian Factor Timing is Deceptively DifficultClifford Asness, Swati Chandra, Antti Ilmanen, Ronen Israel · The Journal of Portfolio Management · 2017收藏doi.org43(5): 72–87。用估值價差做因子擇時,在已經持有價值因子的組合裡幾乎沒有增量,還會削弱分散。https://doi.org/10.3905/jpm.2017.43.5.072 ↩ ↩2

  18. Algorithm Framework OverviewQuantConnect收藏quantconnect.comUniverse Selection → Alpha → Portfolio Construction → Risk Management → Execution 五個模組。https://www.quantconnect.com/docs/v2/writing-algorithms/algorithm-framework/overview ↩

  19. …and the Cross-Section of Expected ReturnsCampbell R. Harvey, Yan Liu, Heqing Zhu · Review of Financial Studies · 2016收藏doi.org29(1): 5–68。考慮多重檢驗後,新因子的 t 值門檻應在 3.0 以上。https://doi.org/10.1093/rfs/hhv059 ↩

  20. Time series momentumTobias J. Moskowitz, Yao Hua Ooi, Lasse Heje Pedersen · Journal of Financial Economics · 2012收藏doi.org104(2): 228–250。58 個流動性好的期貨品種,過去 1–12 個月的收益能預測未來收益。https://doi.org/10.1016/j.jfineco.2011.11.003 ↩

  21. A Quantitative Approach to Tactical Asset AllocationMebane T. Faber · The Journal of Wealth Management · 2007收藏doi.org9(4): 69–79。價格在 10 個月均線上方就持有、否則換現金,用在多類資產上,回撤大幅下降。https://doi.org/10.3905/jwm.2007.674809 ↩

  22. Volatility-Managed PortfoliosAlan Moreira, Tyler Muir · The Journal of Finance · 2017收藏doi.org72(4): 1611–1644。按上期實現波動率的倒數縮放倉位,多個因子的夏普提高。https://doi.org/10.1111/jofi.12513 ↩

  23. 中華人民共和國印花稅法國家稅務總局法規庫 · 2021-06-10收藏fgk.chinatax.gov.cn第三條所稱證券交易指股票和以股票為基礎的存託憑證,ETF 不在其中;“ETF 免印花稅”是據此推出的。https://fgk.chinatax.gov.cn/zcfgk/c100009/c5193058/content.html ↩

  24. Stamp duty waiver for ETFs香港稅務局收藏ird.gov.hk2015-02-13 起香港上市 ETF 的買賣免印花稅;股票印花稅 2023-11-17 起為 0.1%,買賣雙方各付。https://www.ird.gov.hk/eng/faq/ETFs.htm ↩

  25. The Deflated Sharpe Ratio: Correcting for Selection Bias, Backtest Overfitting, and Non-NormalityDavid H. Bailey, Marcos López de Prado · The Journal of Portfolio Management · 2014收藏doi.org40(5): 94–107。試過很多策略再挑最好的,夏普會被高估;按嘗試次數、收益偏度和峰度做校正。https://doi.org/10.3905/jpm.2014.40.5.094 ↩

延伸閱讀