實驗室

M/05 · 策略流形

策略族群的 PCA + UMAP 幾何

將 100,000 個滾動前推策略由 90 維度量空間嵌入至 2 維,再追問穩健性究竟是一個連通的區域,還是一群孤立島嶼構成的星座。

數學原理

每個策略都是高維特徵空間中的一個點 x ∈ ℝᵈ,其分量為最近 6 個滾動前推視窗中 逐視窗的 (Sharpe, PF, MaxDD),並在 Daru Finance 的專有擾動套件下評估。當N = 100,000 個策略時,我們便有一個 N × d 矩陣 X。我們追問:在這個空間裡,穩健策略是否 群聚,若是,該群聚形成單一連通區域,還是許多孤立的島嶼?

主成分投影

X 的各欄置中,並取其奇異值分解:

即為投影至前兩個主方向的線性投影。在生產語料庫上 PC1 解釋了 16.6% 的變異而 PC2 解釋了 10.0%,也就是說,這個嵌入本質上 是低維的,兩個座標已能捕捉 90 維訊號中約四分之一。

UMAP 作為非線性透鏡

PCA 保留全域幾何但忽略鄰域。UMAP(McInnes & Healy 2018)在輸入空間擬合一個 模糊單純複形集 μ(每條 k-NN 邊以局部黎曼度量加權),並在 2 維中擬合相應的 集合 ν,然後最小化其交叉熵

在均勻黎曼流形的連續性假設下,這在撕裂全域幾何的同時保留了局部拓撲。 結果是一個能浮現 PCA 所抹平之緊密鄰域的版面。

連通性與模組度

在 2 維嵌入上建立 k-NN 圖(k = 15)。令 A 為其鄰接矩陣,k_i 為節點 i 的 度數,m 為邊數,c_i 為 {robust, fragile} 中的標籤。Newman 的模組度

衡量每個標籤內部的邊密度超出組態模型虛無假設的程度。我們採用一個 廉價的代理 = 兩端共享同一標籤之邊的比例。機率基準 為 r̄² + (1−r̄)²;當 = 0.0687 時得 0.872。生產嵌入上的 實證值為 Q̃ ≈ 0.903,較機率有真實但微小的提升,與弱群聚一致。

實作範例

  • 10 個最深滾動前推資產、100,000 個策略的分層子抽樣、6 視窗度量特徵。
  • 穩健率 = 6.87% → 6,869 個穩健 vs 93,131 個脆弱。
  • UMAP 模組度代理 0.903(vs 基準 0.872);PCA 代理 0.911。
  • 僅穩健策略 k-NN 子圖中的連通分量數:UMAP 為 1,229, PCA 為 938。平均每個島嶼約 5.6 個穩健策略。

下方的互動式示範會在你每次移動 τ 滑桿時重新計算連通性統計量, 往下拖動穩健集便會合併;往上拖動它便會碎裂。

Demo: synthetic strategy manifold

N points sampled from one diffuse fragile cloud + K tight robust islands. Sweep the robustness threshold τ; watch how the robust subset partitions.

N (points)800
K (planted islands)40
τ (robustness threshold)0.70
seed=11
# above τ
80
rate above τ
10.00%
components
27
strats / island
3.0
modularity Q̃
0.847
chance baseline
0.820
embedding axis 1embedding axis 2

Amber: r ≥ τ (robust). Grey: r < τ (fragile). Connectivity is computed on an 8-NN graph over the amber subset using union-find. Lift over baseline = +0.027. With the production corpus (N=100,000, real metrics) the analogous numbers are 6,869 robust points, ~1,229 components, Q̃ ≈ 0.903.

圖表

Fig. 1:10 資產、100,000 策略語料庫的 UMAP 嵌入。穩健策略(藍色)不會凝聚成單一區域, 它們以分散於脆弱質量之中的小型密集口袋的形式出現。
Fig. 2:同一族群在線性 PC1–PC2 平面上。PC1 解釋 16.6%,PC2 解釋 10.0%。穩健訊號比 UMAP 下更為瀰散,攜帶群聚資訊的是局部結構。
Fig. 3:穩健連通分量大小的直方圖。一個大分量(約 2,400 個策略,約占穩健集的 35%)與約 1,200 個較小島嶼共存,多數大小為 1–10。長尾才是重點。
Fig. 4:ALGO 30m 6W 的逐資產執行(15,000 個策略、1,765 個穩健):相同的碎裂型態重現,213 個分量,每個島嶼約 8 個穩健策略。
Fig. 5:合成三斑塊冒煙測試。當穩健性在特徵空間中確實是一個連通的眾數時,出於建構,連通性度量正確地回傳少量的大型分量。在真實策略上觀察到的碎裂並非嵌入造成的人為產物。

為何這對系統化策略很重要

許多在策略空間上的搜尋程序,在平滑分數上的梯度上升、演化式 交配、貝氏最佳化,都隱含假設穩健區域是局部凸的:即一個穩健策略的 微小擾動仍然穩健。連通性分析直接反駁了 此假設。在我們檢查過的任何尺度上,穩健族群都不是一個單一 連通流形;它是由約 5–8 個策略組成、被脆弱間隙隔開的島嶼星座。

在操作上有兩個後果。第一,邊際優勢無法藉由擾動一個已知 良好的策略而可靠地觸及,一個穩健策略的鄰居有很高機率是脆弱的。第二, 穩健子集必須在指標/轉換/匯合網格上以組合方式列舉,而非 靠局部搜尋回復。下游模型所消費的流程已經尊重了這點: 候選者以組合方式生成,並且只在之後才被過濾,從不朝其最佳化。

可重現性

DaruFinance / strategy-manifold

Python · 開源參考實作

最小調用

import numpy as np
from sklearn.decomposition import PCA
from sklearn.neighbors import kneighbors_graph
import umap

# X: N x d feature matrix (rows = strategies, cols = per-window metrics).
# r: length-N {0,1} vector, 1 = passed the proprietary robustness funnel.
N, d = X.shape

# 1) Linear baseline.
pca = PCA(n_components=2).fit(X)
T_pca = pca.transform(X)
print("PC1 var:", pca.explained_variance_ratio_[0])

# 2) Non-linear embedding.
emb = umap.UMAP(n_neighbors=15, min_dist=0.1, random_state=0).fit_transform(X)

# 3) Connectivity of the robust subset under the 15-NN graph.
A = kneighbors_graph(emb, n_neighbors=15, mode="connectivity")
A_robust = A[r == 1][:, r == 1]
from scipy.sparse.csgraph import connected_components
n_components, _ = connected_components(A_robust, directed=False)
print("robust components:", n_components)

參考文獻

  1. [1]Pearson, K. (1901). On Lines and Planes of Closest Fit to Systems of Points in Space. Philosophical Magazine 2(11), 559–572.
  2. [2]McInnes, L., Healy, J., & Melville, J. (2018). UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction. arXiv:1802.03426.
  3. [3]Newman, M. E. J. (2006). Modularity and community structure in networks. PNAS 103(23), 8577–8582.