MODULE 03 — The Efficient Frontier

有效邊界:在約束裡找最優

玩完這關,你會知道 wTCw 這個從 05 關就一直出現的式子, 最後一次出現時的身分是什麼 —— 它不再是「描述資料形狀的一個量」,而是你要動手去壓到最小的那個目標

① 這關在解什麼問題

上一關留下的洞

機率統計 05 關把共變異數矩陣 C 變成一把尺: 同一個 wTCw,量的是「這個點按照資料自己的形狀來算,算遠不算遠」。 但那時候 C 還是個被描述的對象 —— 資料長那樣,我們就照著量。

這關反過來:C 變成目標函數。我們不再問「這團資料多散」, 而是問「我可以自己決定 w,那我要挑哪一個 w 才能讓 wTCw 最小」。 同一個式子,從「量測工具」變成「要被壓下去的東西」。這是整套教材的收尾。

先講具體的麻煩,不要先講數學。

你手上有 10 萬元,眼前有三個標的。三個的平均報酬波動你都算得出來了 —— 02 關的平均數、02 關的標準差、03 關的共變異數矩陣,工具全都有。問題是:

該各放多少錢?

而且選項有無窮多個 —— 只要三份加起來等於 10 萬,任何一種分法都是候選。 你沒辦法一個一個試過來。

這不是直覺題,這是一道幾何題:所有「加起來等於 10 萬」的分法, 在空間裡構成一塊有形狀的區域;每一種分法對應到「(風險, 報酬) 平面」上的一個點; 而「最好的分法」就是那塊區域映過去之後的某一條邊界。 這關給你的工具叫 有效邊界(efficient frontier)

先把金融詞彙翻成人話

這關的例子是投資組合,但你不需要任何金融背景。下面五個詞就是全部:

符號就是在講
報酬率μ一年下來賺幾 %。μ 唸 mu,就是 02 關的平均數
波動率σ報酬每年上下亂跳的幅度。σ 唸 sigma,就是 02 關的標準差。「風險」在這關一律指這個。
權重w錢怎麼分。w = (0.7, 0.2, 0.1) 就是「7 萬 / 2 萬 / 1 萬」。加起來一定是 1。
相關係數ρ兩個標的是不是一起漲跌。ρ 唸 rho,就是 03 關的 corr,範圍 −1 ~ +1。
放空wi < 0權重是負的。實務上是「借來賣掉」,這關你只要當成允許權重取負值就好。

另外兩個到 才會用到:無風險利率 rf(放定存的報酬,波動 0)、 夏普比率 Sharpe(每承受一單位波動換到多少超額報酬,等於 (μ − rf) / σ)。

② 從你已經會的東西開始:報酬會平均,風險不會

這一節只有一件事要講清楚,而它就是整關的引擎。

先看資料

先聲明:這是合成資料

下面三檔資產的平均報酬、波動、相關係數全部是我編的合成數字, 挑成「一檔中庸、一檔穩、一檔猛」而且相關結構合理(ETF 跟科技股高度連動、債券跟股票微負相關), 為的是讓圖形好看懂。不要拿去做任何投資判斷。要換成你自己的數字, 改檔案裡 ASSETRHO 兩個陣列就行,全頁所有圖與數字都會跟著重算。

每檔自己的統計量
資產平均報酬 μ波動 σ
大盤 ETF8.0 %15.0 %
投資級債券3.0 %5.0 %
科技股14.0 %28.0 %
兩檔之間的相關係數 ρ
配對ρ意思
ETF ↔ 債券−0.15幾乎沒關係,還微微反向
ETF ↔ 科技股+0.75高度同漲同跌
債券 ↔ 科技股−0.05基本無關

把它們裝成 03 關那個共變異數矩陣。 每一格是 Cij = ρij σi σj, 對角線就是 σi2(因為 ρii = 1):

報酬會平均,風險不會 —— 這就是全部

假設你把錢按 w = (w1, w2, w3) 分好。組合的兩個統計量:

μp = w1μ1 + w2μ2 + w3μ3 = μTw 組合的平均報酬(下標 p = portfolio,「組合」)—— 就是加權平均,跟你的直覺一模一樣。 而它就是 一個內積:報酬向量 μ 點權重向量 w。
σp2 = wTCw = Σi Σj wi wj Cij 組合的變異數 —— 不是加權平均。這是 05 關那個二次型, 也是 機率統計 05 關那個橢圓。整關的主角。 (Σ 唸 sigma、大寫的,意思是「把後面的東西全部加起來」;這裡是把 3×3 = 9 項全加。)

兩件事要在這裡就講清楚:

  1. μp 只看每檔自己的報酬:報酬就是加權平均,沒有任何交互作用。 一半 ETF 一半債券,報酬就是 (8+3)/2 = 5.5%,沒有折扣也沒有紅利。
  2. σp2 吃 C 的每一格:那些非對角線的 Cij 會進來, 而且它們可以是負的。這就是「分散風險」在數學上的全部內容 —— 沒有魔法,就是加總的時候有幾項是負的。

最小的例子:兩個數字,一次手算

先只用 ETF債券,各放一半。 兩檔的時候 wTCw 只有 4 項(2×2),可以整個攤開來算:

報酬: μp = 0.5 × 8 + 0.5 × 3 = 5.5 %
風險(先算變異數,最後才開根號):
  σp2 = 0.52×225  +  0.52×25  +  2×0.5×0.5×(−11.25)
           ↑ ETF 自己         ↑ 債券自己         ↑ 兩者的共變異數(負的!)
       = 56.25 + 6.25 − 5.625 = 56.875
開根號: σp = √56.875 = 7.54 %
如果風險也會加權平均: 0.5×15 + 0.5×5 = 10.00 %
這一段的結論

7.54 < 10.00,白賺 2.46 個百分點。報酬照加權平均給你 5.5%, 但風險比加權平均少了將近四分之一。多出來的那一塊,完全來自 2 w1 w2 C12 這一項是負的(−5.625)。

所以「分散投資有用」不是一句雞湯,它就是 wTCw 展開後非對角線那幾項的符號。 而那幾項是什麼?03 關算過 —— 共變異數,也就是中心化之後的內積。

本頁會出現的符號,先在這裡對一次

後面每個符號第一次出現的地方都會就地再解釋一遍,但你可以隨時滑回這張表:

符號唸法是什麼在哪解釋
w權重向量:錢怎麼分。三檔就是三個數字,加起來 = 1
w1 w2 w3分別是 ETF / 債券 / 科技股 的權重。下標就是「第幾檔」
1 − w只有兩檔時,一檔放 w,另一檔自動是 1 − w
μimu第 i 檔的平均年報酬(%)
μp組合(portfolio)的平均報酬 = μTw。下標 p = 組合
σisigma第 i 檔的波動率,也就是報酬的標準差(%)
σp組合的波動率 = √(wTCw)。圖上的橫軸一律是它
σp2組合的變異數(波動率的平方)。單位是 %2
ρijrho第 i、j 檔的相關係數(−1 ~ +1)
C共變異數矩陣,3×3。第 (i, j) 格 = ρijσiσj
CijC 的第 i 列第 j 行那一格
wTCw二次型。這裡等於組合的變異數 σp2
Σ大寫 sigma「把後面的東西全部加起來」
1粗體一全 1 向量 (1,1,1)。所以「加起來等於 1」寫成 1Tw = 1
t目標報酬:我指定「我要 t % 的報酬」,然後去找最小風險的 w
d權重空間裡那條可行直線的方向向量(⑥ 現場推出來 = (11, −6, −5))
w0那條直線上隨便一個已知的點(起腳點)
s沿著那條直線走多遠的參數。w = w0 + s·d
s0只是湊出 w0 用的中間量(起腳點裡第 3 檔占多少)。跟上面那個 s 無關,只是名字像
s*s star星號=「最佳的那一個」。s* 就是讓風險最小的那個 s
dTCd把 d 代進二次型的結果,一個正數(因為 C 正定)。它是拋物線的開口大小
MVPMinimum Variance Portfolio,整個可行區裡風險最小的那一點
c⑦ 的等高線水準:wTCw = c 那一圈橢圓
λlambda拉格朗日乘子。⑦ 只給它的幾何意義(相切),不展開推導
2Cw風險等高線在該點的法向量(垂直於橢圓的方向)。⑦ 圖上那支紫箭頭
判別式一元二次方程 ax2+bx+c 的 b2−4ac。>0 兩解、=0 一解(相切)、<0 無解
C−1C inverseC 的反矩陣。C−11 就是「解 C z = 1 得到的那個 z」
rf無風險利率:波動為 0 的那個選項(定存),本頁設 1.5 %
Sharpe夏普p − rf) / σp,每單位波動換到的超額報酬
ddof=1算標準差時除以 n−1(樣本版)。全站統一,見 02 關
全頁配色規則

= 第一個東西(大盤 ETF)   = 第二個(投資級債券)   = 第三個(科技股;「第三檔」全站沒有標準語意色,本頁借用次軸色)
= 結果(你組出來的那個組合、最優解)   = 隨機撒出來的資料點   = 有效邊界與風險等高線(兩者都是 C 的二次型幾何)   = 不該選的(被支配的那一段、以及 MVP 這個「極端端點」)

③ 兩檔的最小例子:把 ρ 從 +1 拉到 −1

三檔太多,先只留 ETF債券, 一個滑桿決定 ETF 放多少(另一檔自動補到 1)。這樣整個問題只剩一個自由度, 你可以把它從頭到尾拉一遍。

這張圖在幹嘛
你會看到什麼:
左圖是 60 個月的報酬走勢 —— =ETF 每個月漲跌幾 %、 =債券、綠(粗)=按你的權重混完之後的組合。 右圖是 (風險, 報酬) 平面:橫軸 σp、縱軸 μp紫弧=w 從 0 走到 1 掃出來的所有組合,綠點=你現在這一個。
你可以動什麼:
w 滑桿=ETF 佔幾 %;ρ 滑桿=硬把兩檔的相關係數改成你指定的值 (左圖的橘線會跟著重新生成,右圖的弧會換形狀)。三顆按鈕直接跳到 ρ = +1 / 0 / −1。
要看出什麼:
紫弧往左凸出去多遠,就是分散賺到多少。ρ = +1 時弧線塌成一條直線(凸出去 0,分散完全無效); ρ = −1 時弧線折成 V 字、尖端碰到縱軸(σp = 0,風險被完全抵消)。
合成序列,固定隨機種子:先產兩條互相獨立的常態序列, 再把你指定的 ρ 灌進第二條(下面有完整做法)。 所以序列實測出來的 σ 與 ρ 會精準等於你設定的值。
紫弧=所有可能的組合; 灰虛線=把兩個端點直接連起來(=假裝 ρ = +1); =你現在的組合;紅圈=這條弧上風險最小的那一點。
ETF 權重 w 50 %
債券自動補到 1 − w,不放空。
相關係數 ρ −0.15

三個必須自己拉一次的位置

把 ρ 設成右圖的弧變成w = 50% 時的 σp怎麼解釋
+1一條直線(貼在灰虛線上)10.00 % 兩檔完全同步,混起來只是把兩根尺按比例接起來。分散完全無效。
0微彎的弧7.91 % 互不相關就已經有效果了 —— 不需要「反向」,只要「不同步」。
−1折成兩段直線,尖端碰到縱軸5.00 % 完全反向。在 w = 25% 那一點 σp 精準等於 0,報酬還有 4.25%。

ρ = −1、w = 25% 那個「零風險」值得手算一次,因為它看起來太不真實:

σp2 = 0.252×225 + 0.752×25 + 2×0.25×0.75×(−1)×15×5
      = 14.0625 + 14.0625 − 28.125 = 0
白話:ETF 波動是債券的 3 倍,所以配 1 份 ETF 對 3 份債券, 兩邊的漲跌幅剛好一樣大;ρ = −1 代表方向永遠相反 → 完全抵銷。
這一段的結論

弧線的彎曲程度就是 ρ。而弧線往左彎多少,就是你不花錢白拿到的風險折扣。

順便一個漂亮的小結果:兩檔時風險最小的權重是 w* = (σ22 − ρσ1σ2) / (σ12 + σ22 − 2ρσ1σ2) (星號只是「最佳的那一個」的習慣寫法)。把數字代進去會發現: 只要 ρ < σ21 = 5/15 = 1/3,w* 就是正的, 也就是「加一點波動大的 ETF 進去,反而讓整體更穩」。ρ 一旦超過 1/3, 不准放空的話最穩的作法就變回 100% 押債券了 —— 這個門檻在滑桿上真的拉得出來(紅圈會滑到弧線最下端)。

左圖的序列是怎麼生出來的(想跳過可以跳過)

我要的是「ρ 說多少就真的是多少」,所以不能亂 random 完就算。做法四步:

1. 用固定種子的 LCG + Box-Muller 產兩條長度 60 的常態序列 raw1、raw2
   //   LCG = 一行遞推式的偽隨機數產生器;Box-Muller = 把均勻分布轉成常態分布
   //   固定種子 → 每次打開這一頁看到的線一模一樣,可重現
2. z1 = 標準化(raw1)                       // 減平均、除標準差(ddof = 1)→ 平均 0、σ 剛好 1
3. z2 = 標準化(raw2 − cov(z1, raw2)·z1)     // 把 raw2 裡「跟 z1 平行」的成分減掉
   //   ↑ 這一步就是 01 關的投影:減掉投影分量之後兩者正交,cov(z1, z2) = 0
4. 要 ρ 就令  zB = ρ·z1 + √(1−ρ²)·z2     // 這一步叫 Cholesky:把相關結構灌進去
   //   驗算:var(zB) = ρ² + (1−ρ²) = 1 ✔   cov(z1, zB) = ρ ✔   兩個都精準成立

月報酬 r_i = μ_i/12 + (σ_i/√12)·z          // 年化參數轉月:報酬除 12、波動除 √12

因為第 3 步用了 01 關的投影把兩條序列弄成正交, 第 4 步的 √(1−ρ²) 才會剛好讓變異數回到 1。 這也是為什麼讀數盤裡「公式算的 σp」和「序列實測的 σp」 兩個數字會一路貼在一起(差 < 0.000001)—— 它們本來就是同一件事的兩種算法: 一個是先算 C 再套公式,一個是把 60 個月的組合報酬直接量一次標準差。

為什麼波動要除 √12 而不是除 12:變異數會相加(12 個月加起來 = 12 倍), 標準差是變異數開根號,所以是 √12 倍。這是 02 關「變異數才是可加的那個量」的直接後果。

④ 「加起來是 10 萬」在空間裡長什麼樣子

回到三檔。你的錢有限這件事,寫成數學是一行:

w1 + w2 + w3 = 1    或寫成    1Tw = 1 1(粗體)=全 1 向量 (1, 1, 1)。所以「權重加起來等於 1」=「w 跟全 1 向量的內積等於 1」。 預算約束是一個內積條件 —— 這關第一次把約束寫成內積, 還會再用一次。

關鍵在於:這一行不是一句規定,它是空間裡的一塊形狀。看維度:

那個三角形有名字,叫 單純形(simplex)。它就是「資金預算」這句話的字面幾何長相。

這張圖在幹嘛
你會看到什麼:
左圖是兩檔的情況:w1w2 的平面上, 那條斜線就是 w1 + w2 = 1紫實線段=不放空的部分,灰虛線=要放空才到得了的部分。 右圖是三檔:三根虛線是 w1/w2/w3 三根座標軸(斜著畫才看得出 3D), 中間那片半透明三角形就是單純形,外圈虛線三角形是「每檔可以放空 25%」時平面延伸出去的範圍。
你可以動什麼:
兩張圖上的綠色圓點都可以直接用滑鼠拖。 左圖的點只能沿著那條線滑(滑桿也能拉,可以拉到負值);右圖的點會被限制在三角形內。
要看出什麼:
不管你怎麼拖,右邊讀數盤的合計永遠是 1.000000 —— 你不是在調三個獨立的數字, 你是在一個二維的三角形上移動。三檔資產、三個權重,自由度只有 2。
兩檔:預算約束=一條直線。拖那顆綠點,它只能在線上跑。
三檔:預算約束=一張平面;不放空=平面上的一個三角形。 綠點到三根軸的階梯虛線就是它的三個座標(先走 w1、再走 w2、再走 w3)。
兩檔的 w1 50 %
滑桿可以拉到負值 / 超過 100% —— 那就是放空,點會跑到虛線段上。
這一段的結論

「錢加起來要等於 10 萬」=「w 被關在一個三角形裡」。 這句話是這關的地基:你要找最優的 w,找的範圍不是整個 3D 空間,而是一張 2D 三角形。 等高線跟這塊區域怎麼碰,決定了答案長什麼樣(⑦ 會用到)。

順便一個名詞:三角形內一點的三個權重,數學上叫重心座標(barycentric coordinates)。 「離哪個頂點越近,該檔權重越大」,正中心就是三等分。這也是為什麼右圖能只用二維拖曳就唯一決定三個權重 —— 因為那三個數字本來就只有 2 個自由度。

⑤ 把三角形整片丟到 (風險, 報酬) 平面上

現在把 ④ 的三角形和 ② 的兩條公式接起來。做法蠢得很直接:

在三角形裡隨便挑一個點 → 得到 (w1, w2, w3)
→ 算 μp = μTw 和 σp = √(wTCw)
→ 在右邊的 (σp, μp) 平面上點一個點
重複 2000 次。

三角形是二維的,(σ, μ) 平面也是二維的,所以這是一個 2D → 2D 的映射。 映過去之後那團點的形狀,就是你所有可能的下場

這張圖在幹嘛
你會看到什麼:
左圖是 ④ 那個三角形(這次拉平了正面看,不再傾斜),裡面撒滿 2000 個青色權重點, 三個角標著「全押哪一檔」。右圖是同樣這 2000 組在 (σp, μp) 平面上的落點 —— 一片彎彎的、往左上翹起來的雲(教科書叫它 bullet,子彈)。三個角落對應右圖三個被特別標出來的端點。
你可以動什麼:
滑鼠移到右圖的雲上面,最接近的那一點會被紅圈圈起來,同時左圖會亮出它的權重位置; 反過來拖左圖的綠點,右圖的綠點也會跟著跑。兩張圖是同一件事的兩個視角。 按鈕可以重撒一批、或只留 60 點看清楚單點。
要看出什麼:
雲的左上緣是一條乾淨的邊,右下方則是一層有厚度的肉。 左上緣以外撒不出任何點 —— 那裡是做不到的;而肉裡面的每一點, 都可以在同樣報酬下往左找到更好的。這條左上緣就是 ⑥ 要講的有效邊界。
另外注意:這層肉比你想像的薄(在同一個報酬水準上,σ 的可能範圍只有 2~3 個百分點)。 為什麼這麼薄,⑥ 會給你答案 —— 因為報酬一旦被固定住,可行的權重就只剩一條線段了。
權重空間(單純形正面看)。拖綠點選一個組合; 紅圈=你的滑鼠在右圖指到的那一組。
(風險, 報酬) 平面。滑鼠在雲上面移動看單點; 三個彩色端點=全押單一資產。
這一段的結論

子彈的形狀不是誰設計的,是 wTCw 這個二次函數在三角形上的值域。

三個必須注意的細節:

  • 三角形的三條邊映過去就是子彈的三條邊界弧 —— 因為在三角形的邊上,某一檔的權重是 0,剩下兩檔,那就退回 ③ 那種兩檔的弧線。③ 的圖是這張圖的一條邊。
  • 雲的左緣有一整段比任何單一資產都靠左:最穩的債券 σ = 5.0%, 但雲裡面有點的 σ 只有 4.5% 左右。混起來比最穩的那一檔還穩 —— 這就是 ② 那個「非對角線是負的」在三檔版本上的效果。
  • 只有三檔的時候,這片雲一定是薄的。算一次就知道為什麼:固定報酬 8% 之後, 可行的權重只剩一條線段(⑥ 會現場推),而那條線段的兩個端點分別是 「100% ETF」(σ = 15.0%)和「54.5% 債券 + 45.5% 科技」(σ = 12.9%), 最小值是 12.6% —— 整個範圍只有 12.6% ~ 15.0% 這 2.4 個百分點。 資產檔數越多,自由度越大,雲才會胖起來變成教科書那種飽滿的子彈。

⑥ 有效邊界 = 子彈的左上緣(附解法)

先給白話定義,一句話:

有效邊界 = 「同樣風險之下,報酬最高的那些點」的集合。 (等價說法:同樣報酬之下,風險最低的那些點。兩種說法掃出同一條線。)

為什麼只有這條線值得看?因為其他點都被支配(dominated)了。假設有兩個組合, 風險都是 12%,一個報酬 8%、一個報酬 6% —— 那 6% 那個沒有任何理由被選: 你付了一樣的代價,拿到比較少。它被支配了。

把「被支配的」全部刪掉,剩下的就是邊界。這也解釋了邊界下半部為什麼不算有效: 子彈最左邊那一點(MVP,Minimum Variance Portfolio,風險最小的組合)以下, 還有一段弧往左下走 —— 那一段的每一點,都可以在同樣的 σ 下往上找到報酬更高的對應點 (就是它在 MVP 上方的鏡像點)。所以下半段整條都被支配,我把它畫成紅色虛線提醒你不要選。

這張圖在幹嘛
你會看到什麼:
青雲=⑤ 那 2000 組隨機權重(背景參考)。 紫實線=有效邊界;紅虛線=被支配的下半段; 紅方塊=MVP;綠點=你用滑桿指定的目標報酬 t 之下的最佳解, 它身上那條綠色水平虛線就是「報酬固定在 t」這個條件,而線上那一段粗粗的淡綠色 就是「這個報酬水準下 σ 真正能走到的範圍」(也就是 ⑤ 那片肉在這一層的厚度)。 另外那顆青點=隨機雲裡「報酬至少跟你一樣高」的那些組合中最靠左的一顆,用來對照。 左上角有圖例。
你可以動什麼:
目標報酬 t 滑桿。每動一格,程式就現場解一次 「在 μTw = t 且 1Tw = 1 且 w ≥ 0 之下,讓 wTCw 最小」, 右邊會顯示解出來的三個權重。三顆按鈕直接跳到 MVP 與兩個端點。
要看出什麼:
綠點永遠在青點的左邊(隨機撒的點不會剛好命中最優)—— 這就是「邊界是雲的左包絡線」的意思:邊界不是畫上去的裝飾, 它是每一個報酬水準上「往左推到底」的結果
再把 t 拉到 MVP 以下(紅虛線那一段):連線會變紅,因為那時候青點報酬更高、風險還更低, 兩邊都贏你 —— 那就是「被支配」的現場證據。
還有一件事:那段粗淡綠很短(大概 2~3 個百分點)。這就是 ⑤ 說「雲很薄」的原因 —— 報酬固定住之後,你只剩一條線段可以走。
橫軸 σp(風險),縱軸 μp(報酬)。 紫實線=有效邊界,紅虛線=被支配段,紅方塊=MVP,綠點=你指定的 t 的解。
目標報酬 t 8.00 %
範圍就是三檔報酬的最小到最大(3% ~ 14%)—— 超出去做不到。

那條邊界是怎麼算出來的(自寫解法,逐行說明)

這裡不用套件、不用梯度下降。三檔資產的情況有精確解,而且推導只需要你已經會的東西。 關鍵觀察是數自由度

w 有 3 個未知數
條件 1:1Tw = 1   (預算:錢要剛好花完)
條件 2:μTw = t   (我指定我要 t % 的報酬)
3 − 2 = 1 → 滿足這兩個條件的 w 構成一條直線(不是一片區域!)

兩張平面相交是一條直線 —— 這就是 06 關講秩那件事的直接應用。 一旦知道可行集只是一條直線,事情就變成一維最小化:沿著這條直線走, 找 wTCw 最小的位置。而一維二次函數的最小值 —— 那是國中的配方法。

// ---- 步驟 1:找出那條直線的方向 d ----
// 沿著 d 走不能破壞任何一個條件,也就是 1·d = 0(總和不變)且 μ·d = 0(報酬不變)。
// 兩個條件、三個未知數 → 用外積(cross product)一次拿到:
d = (1,1,1) × (μ₁,μ₂,μ₃) = (μ₃−μ₂, μ₁−μ₃, μ₂−μ₁)
  = (14−3, 8−14, 3−8) = (11, −6, −5)
// 驗算:11−6−5 = 0 ✔        8×11 + 3×(−6) + 14×(−5) = 88−18−70 = 0 ✔
// 白話:d 就是「賣掉 6% 債券 + 5% 科技股、買進 11% ETF」這個動作。
//       做這個動作,你的總投入沒變、期望報酬也沒變 —— 只有風險會變。
//       所以「找最優權重」=「決定這個動作要做幾次」,就這麼一個數字。

// ---- 步驟 2:找直線上任何一個點 w₀(起腳點)----
// 隨便找一個滿足兩個條件的解就好。最省事:只用第 1、3 檔湊出報酬 t
//   s0 —— 一個純粹的中間量,意思是「起腳點裡第 3 檔占多少」。
//         它跟步驟 3 那個 s(沿著直線走多遠)是兩個不同的東西,只是名字像。
s0 = (t − μ₁) / (μ₃ − μ₁)              // 需要 μ₁ ≠ μ₃,本頁 8 ≠ 14 ✔
w₀ = (1 − s0, 0, s0)                     // 總和 = 1 ✔  報酬 = μ₁ + s0(μ₃−μ₁) = t ✔
//   例:t = 8 → s0 = 0 → w₀ = (1, 0, 0),也就是「先全押 ETF」,再沿著 d 走。

// ---- 步驟 3:沿著直線最小化(配方法,精確解)----
// 直線上的點寫成: w(s) = w₀ + s·d       ← s 就是「這個動作做幾次」,可正可負
// f(s) = w(s)ᵀ C w(s)
//      = w₀ᵀCw₀  +  2s·(dᵀCw₀)  +  s²·(dᵀCd)     ← 這是一條開口向上的拋物線
// 因為 C 是正定的(機率統計 05 關講過:任何非零向量的 wᵀCw 都 > 0),所以 dᵀCd > 0,
// 拋物線一定有唯一最低點,把導數設 0 直接解出來:
s* = −(dᵀCw₀) / (dᵀCd)                    // 拋物線頂點

// ---- 步驟 4:把「不能放空」夾進來 ----
// w(s) 的第 i 個分量是 s 的一次函數: w₀ᵢ + s·dᵢ ,要求它落在 [下界, 上界]
// 每個 i 給出一個 s 的區間 → 三個區間取交集,得到可行的 [sLo, sHi]
// f 在這個區間上是凸的(拋物線),所以:
s = clamp(s*, sLo, sHi)                    // 夾住即最優
                                           // 頂點在區間內 → 取頂點;在區間外 → 取最近的端點
// 交集為空 → 這個 t 根本做不到(例如 t = 20%,三檔最高才 14%)→ 回傳 null

return w₀ + s·d
為什麼這樣寫,而不是丟給 optimizer

這是一個帶等式與不等式約束的二次規劃(QP),一般情況要用 active-set 或內點法。 但只有三檔資產時可行集降到一維,QP 退化成「一條拋物線 + 一次區間夾擠」: 精確、無迭代、不會不收斂、不用調參數。上面那 4 步就是完整解法,沒有省略也沒有近似。

資產一多(N 檔、N > 3)自由度變成 N−2,就不能這樣偷懶了,那時才需要真的 QP solver。 但幾何是一樣的:可行集是一個仿射子空間,目標是一族橢球,最優解在橢球第一次碰到子空間的地方。 ⑦ 就是在畫這句話。

MVP 怎麼算?MVP 不指定 t、只求風險最小。如果允許放空,它有純代數解 w = C−11 / (1TC−11) (分母只是讓權重加總回到 1 的正規化);本頁那組數字算出來是 (19.15%, 85.30%, −4.45%),σ = 4.41% —— 注意第三檔是負的,所以不准放空時這個解不合法。 不放空的 MVP 我改用「對 t 做三分搜尋」找:σ(t) 沿著邊界是凸函數, 三分搜尋(每次砍掉 1/3 區間)保證收到全域最小。結果是 (13.30%, 86.70%, 0%),σ = 4.49%。 科技股權重被夾到 0 —— 約束真的在作用。

這一段的結論

有效邊界不是一條猜出來的曲線,是「對每一個報酬水準各解一次最小化」的解軌跡。 而每一次的最小化,都只是把一條拋物線的頂點求出來、再夾進一個區間。

還有一個值得記住的數字:不放空的 MVP 風險 4.49%, 比最穩的那一檔(債券 5.0%)還低。混三檔比只買最穩的那一檔更穩 —— 這件事在 ② 已經算過原理,在這裡看到它的極值。

⑦ 為什麼最優解一定在「相切」的地方

這是本關的幾何高潮,也是整套教材裡 wTCw 最後一次變身。

為了畫得出來,這一節退回兩檔ETF + 債券), 這樣權重空間剛好是一張紙:橫軸 w1、縱軸 w2。 然後把兩樣東西畫在同一張紙上:

  1. 風險的等高線:所有「風險一樣大」的權重組合。 wTCw = c 這條線就是一圈橢圓(c 是你指定的風險水準)—— 跟機率統計 05 關那個橢圓是同一個東西、同一個 C、同一個二次型, 只是那時候軸上是「資料座標」,這時候軸上是「錢的比例」。 c 越大 → 橢圓越大 → 風險越高。橢圓的長軸短軸方向就是 C 的特徵向量方向(05 關), 而它歪掉的原因就是 C 的非對角線不是 0(03 關)。
  2. 約束w1 + w2 = 1,一條斜 45° 的直線(④ 講過)。

現在把 c 從很小慢慢調大,橢圓從原點長出來。第一次碰到那條直線的瞬間 —— 那一點就是最小風險組合。而在那一瞬間,橢圓跟直線是相切的。

這張圖在幹嘛
你會看到什麼:
座標是權重平面(不是報酬平面!):橫軸 w1 = ETF 比例、縱軸 w2 = 債券比例。 紫橢圓=風險等高線 wTCw = c(另外三圈更淡的是更小的 c,看得出它是「從原點長出來」的); 灰線=預算約束 w1+w2=1(粗實線段=不放空的部分); 綠點=橢圓與直線的交點。
你可以動什麼:
c 滑桿(風險水準)。從左往右拉,橢圓長大。讀數盤會即時報「現在有幾個交點」。 「跳到剛好相切」按鈕會把 c 設成解析解算出來的臨界值,讓你對照滑桿掃到的結果。
要看出什麼:
交點數會走過 0 → 1 → 2 三個階段。0 個=這個風險太低,做不到; 2 個=這個風險有兩種達成方式,代表你還可以更省; 恰好 1 個=臨界,那就是最優解 —— 而那一點橢圓與直線相切, 圖上會冒出兩支箭頭(兩邊的法向量)指向同一個方向。
橢圓=「風險一樣大」的等高線;直線=「錢加起來等於 1」。 兩者第一次碰到的地方就是最小風險。
風險水準 c = wTCw 8.00
單位是 %2(變異數的單位)。開根號才是波動率 σp

相切這件事的代數長相(一行結論,不推導)

相切的幾何定義是:兩條曲線在接觸點的法向量互相平行。分別寫出來:

風險等高線的法向量 = 2Cw       約束直線的法向量 = 1 = (1, 1) 法向量=垂直於曲線的方向,也就是「往哪走,這個量增加最快」。 二次型 wTCw 的梯度是 2Cw,這件事你可以先當公式收下; 直線 w1+w2=1 的法向量就是它的係數 (1, 1),也就是全 1 向量 1
相切  ⟺  2Cw 平行於 1  ⟺  Cw = λ·1 λ(lambda)就是那個比例常數 —— 它的正式名字叫 拉格朗日乘子。 這一行就是「約束最佳化」整套理論的幾何內容:最優點=目標的等高線與約束相切之處

本頁的數字可以直接驗:解析解的切點是 w = (0.133028, 0.866972),代進去算 Cw 得到 (20.177752, 20.177752) —— 兩個分量完全相等, 所以 Cw 真的平行於 (1, 1),λ = 20.177752。 而且 λ 剛好等於那時候的 wTCw = σp2 (因為 wTCw = wT(λ1) = λ·1Tw = λ·1 = λ), 開根號 σp = 4.4920% —— 就是 ⑥ 那個不放空 MVP 的風險。兩節的答案在這裡對上。

(為什麼兩節答案會一樣:⑥ 算出不放空 MVP 的第三檔權重是 0, 等於它根本沒用到科技股,所以那題實際上就是這裡的兩檔問題。)

這一節到哪裡為止

上面只給了幾何直覺 + 一行結論式。完整的拉格朗日推導 (寫出 L(w, λ) = wTCw − λ(1Tw − 1)、 對 w 偏微分、解 KKT 條件、處理不等式約束的互補鬆弛)不在本關範圍,本頁也不會出現。

你在這關要帶走的是那個畫面:橢圓長大,碰到線,就停。 有了這個畫面之後再去讀任何一本最佳化教科書,那些符號才會有意義。

這一段的結論

wTCw 這個式子在這套教材裡出現了四次, 每次身分不同,但幾何是同一個橢圓:

關卡w 是什麼wTCw 是什麼
05 PCA一個單位方向資料往這個方向的變異數 → 要最大化(找主軸)
機率統計 05 橢圓一個位移(點離中心多遠)用資料形狀當尺量出來的距離 → 畫成等高線(橢圓)
最佳化 03 ②錢的比例組合報酬的變異數
最佳化 03 ⑦錢的比例最小化的目標函數,在 1Tw = 1 之下

05 求最大、最佳化 03 求最小,而差別只在約束不同: 05 的約束是 ‖w‖ = 1(一個單位圓,圓的法向量是 w 自己, 所以相切條件變成 Cw = λw —— 那正是特徵向量的定義); 最佳化 03 的約束是 1Tw = 1(一條直線/一張平面,法向量是常數 1, 所以條件是 Cw = λ1)。

同一個二次型,換一個約束,「最優方向」就換成別的東西。這是整套教材最值得帶走的一句話。

⑧ 約束一改,可行區就跟著改

到這裡你應該已經接受一件事:答案是「目標」跟「約束」兩邊夾出來的。 ⑦ 已經看過改目標(c 變大)會怎樣,這一節改約束,看可行區與邊界怎麼跟著變形。

這張圖在幹嘛
你會看到什麼:
左圖是權重空間(跟 ⑤ 同一個三角形):紫色實線圍出來的就是目前允許的區域, 灰虛線三角形是「原本不放空」的參考範圍,青點是在新區域裡撒的權重。 右圖是 (σ, μ) 平面:青雲=那些權重的下場、 紫線=新的有效邊界、紅方塊=新的 MVP。 淡紫虛線一律是「什麼都不開」時的原始邊界,方便你比對外推了多少。
你可以動什麼:
三顆開關,可以單獨開也可以疊著開:(a) 允許放空(b) 單一標的上限 40%(c) 加入無風險資產(1.5%)。 每按一次,左右兩張圖與所有數字都會重算。按鈕亮起=開啟。
要看出什麼:
三種約束造成三種不同的形變:放空讓區域往外爆開、 上限讓三角形被削角削到只剩正中央一塊倒過來的小三角形、無風險資產讓邊界多長出一條直線。 而「最優解」的位置每次都跟著搬家 —— 「最優」永遠是相對於約束而言的。
權重空間。紫框=現在允許的區域,灰虛線=原本不放空的三角形。
(風險, 報酬) 平面。淡紫虛線永遠是「不放空、無上限、無定存」的原始邊界。

三個開關各自在幹什麼

(a) 允許放空 → 可行區往外爆開

拿掉 wi ≥ 0 之後,權重不再被關在三角形裡, 整張平面都可以去(左圖的點會跑到三角形外面)。效果:

  • 邊界兩端無限延伸:報酬可以超過 14%(放空債券、加碼科技股),代價是 σ 也跟著衝上去。這是最明顯的變化。
  • MVP 往左移一點:從 (13.30%, 86.70%, 0%) σ = 4.49% 變成 (19.15%, 85.30%, −4.45%) σ = 4.41%。放空一點科技股讓風險再降 0.08 個百分點。
  • 但中段幾乎沒變:例如 t = 8% 時,不放空的解 (24.73%, 41.05%, 34.21%) 本來就三個都是正的 —— 約束沒有在擋你,所以放開它也沒有好處。約束只在「它真的擋住你」的時候才有代價。

技術細節:放空模式的隨機點是在「每檔權重 −50% ~ +150%」的範圍內撒的 (不然點會噴到畫面外),但紫色邊界是真正無界的解,只畫到畫面邊緣為止。

(b) 單檔上限 40% → 三角形被削角,削到只剩中間

加上 wi ≤ 0.4,每個約束都砍掉三角形的一個角 (「靠近某個頂點」=「那一檔權重大」)。三檔的時候這一刀特別狠:

因為 3 × 0.4 = 1.2,只比 1 多 0.2,所以反推出每一檔至少要放 20% (另外兩檔頂多吃掉 80%)。三個角被削掉之後,三道切口在中間互相碰上, 所以剩下的不是六邊形,而是一個上下顛倒的小三角形 —— 它的三個頂點就是 (40, 40, 20)、(40, 20, 40)、(20, 40, 40) 這三種「兩檔頂到上限、一檔墊在下限」的組合。 邊長是原本的 1/5,面積只剩 1/25 = 4%(也可以這樣算:三個角各切掉 0.62 = 36%, 三對兩兩重疊的部分各 0.22 = 4% 要補回來,1 − 3×0.36 + 3×0.04 = 0.04)。

後果非常具體:報酬被硬夾在 7.20% ~ 9.40% 之間 (下限是 40/40/20 押在最保守的組合、上限是 40% ETF + 20% 債 + 40% 科技)。 而 MVP 從 σ = 4.49% 惡化到 σ = 10.82%(40%, 40%, 20%) —— 風險最小的那個組合(要放 86.7% 債券)被禁止了,你只能退到那個小三角形的角上。 「上限」聽起來像在保護你,數學上它是在沒收你的選項。

(c) 加無風險資產 → 邊界多出一條直線

多一個選項:報酬 rf = 1.5%、波動 0 的定存。 它在 (σ, μ) 平面上就是縱軸上的一個點 (0, 1.5)。

如果你把錢分成「一部分定存 + 一部分某個風險組合 P」,混出來的點會落在 (0, rf) 與 P 的連線上 —— 是直線而不是弧線。 原因回到 ②:定存的 σ = 0,跟任何東西的共變異數也是 0, 所以 wTCw 裡的非對角線項整批消失, σp 退化成單純的比例縮放(把 60% 的錢放在 P 上,風險就是 P 的 60%)。

那該挑哪個 P?挑讓這條直線最陡的那個 —— 斜率 P − rf) / σP 就是夏普比率。 而最陡的那條線剛好與原本的弧形邊界相切(又是相切!同一個 ⑦ 的道理: 直線繞著 (0, rf) 往上轉,第一次碰到可行區的地方就停)。 這條線叫資本配置線(capital allocation line), 切點是本頁數字下的 (20.95%, 71.05%, 8.00%),σ = 5.82%、μ = 4.93%、夏普 = 0.588。

對照一下就知道它好在哪:全押債券的夏普只有 (3−1.5)/5 = 0.300, MVP 是 0.482,切點組合 0.588。而且開了這個開關之後, 切點右上方那一整段原本的弧線全部被直線超越(同樣風險、更高報酬), 弧線那一段當場變成被支配的。

這一段的結論

「最優」不是資料的性質,是「資料 + 約束」的性質。C 和 μ 一個數字都沒改, 光是改允許的範圍,最優解就從 (13, 87, 0) 跳到 (40, 40, 20)。

所以工程上真正該問的問題不是「最優解是多少」,而是「我加的這條約束,讓我付了多少代價」。 上面每個設定的 MVP 風險就是那個代價的數字:允許放空 4.41% → 原始 4.49% → 加上限 10.82%

⑨ 工程師的「原來如此」

你寫過的東西裡,這個形狀出現過幾次

最小化一個二次型,在一組線性約束之下」是工程裡最常見的最佳化形狀之一。 把「錢怎麼分」換成別的東西,同一套幾何立刻換一個領域:

  • 感測器融合 / 卡爾曼濾波:好幾個感測器測同一件事,各有噪音、噪音之間還互相關聯。 「怎麼加權平均這幾個讀數,讓結果的變異數最小」—— 就是 min wTCw s.t. 1Tw = 1, 跟本頁的 MVP 是同一道題(這裡「權重加起來要等於 1」對應的不是預算, 而是「估計不能有系統性偏移」)。卡爾曼增益就是那個 C−11 形狀的解。
  • 波束成形(beamforming):麥克風陣列或天線陣列要壓掉噪音、又要保住目標方向的訊號。 目標是最小化輸出功率 wTRw(R = 訊號的共變異數矩陣), 約束是「目標方向的增益固定為 1」。這叫 MVDR,形狀跟本頁一模一樣,連解的長相都一樣。
  • Ridge 回歸 / 正則化:最小化「誤差平方 + 係數平方」也是二次型 + 約束。 「正則化係數越大 → 解被壓得越靠近原點」對應到本頁「約束越緊 → 解被推到區域邊界」。 坑 2 的 shrinkage 也是同一個思路。
  • 資源配額 / 容量規劃:把流量分給 N 台機器,總量固定(一條線性約束), 要最小化「總延遲的變異」,而機器之間的負載是相關的(尖峰時一起塞車 → 非對角線是正的)。 「相關性高的機器不算真正的備援」就是本頁 ρ → 1 那個結論換一套詞。

共同的可移植結論只有一句:看到「二次型 + 線性約束」,就去畫等高線與約束的相切點。 不用背公式,那個畫面本身就是解法。

⑩ 踩坑

坑 1(最大的一條)

歷史報酬不是未來報酬。本頁整套機器的輸入是 μ 和 C,而實務上這兩個都是拿過去的資料估的。 C(波動、相關性)還算有點延續性;μ 幾乎沒有 —— 一檔資產過去五年平均漲 14%, 這件事對「未來五年會漲幾 %」的預測力低到接近沒有。

所以你會看到一個荒謬的現象:你用了精確解、算到小數第六位、畫出漂亮的邊界, 而整條邊界的縱軸位置建立在一個幾乎沒有預測力的數字上。 數學是對的,輸入是猜的。這條坑排第一名,因為它讓後面所有精度都變成裝飾。

想看這條坑在一組真實白板數據上長什麼樣(μ 算了卻沒進權重、Σ 直接不可逆)→ 實戰:五萬預算怎麼分

坑 2

C 的估計誤差會讓權重亂跳。C 有 N(N+1)/2 個獨立參數 (3 檔是 6 個,50 檔就是 1275 個),你卻只有有限的歷史資料去估它。 估出來的 C 帶著噪音,而最佳化特別擅長利用噪音 —— 哪一對資產的相關係數剛好被低估,最佳化就會拼命往那一對加碼, 因為在它看來那裡有「免費的分散效果」。

結果就是有名的「誤差最大化器(error maximizer)」:資料多加一個月,權重就大搬家。 標準對策是 shrinkage(Ledoit-Wolf 那一類)—— 把估出來的 C 往一個結構簡單的目標 (例如「所有相關係數都等於平均值」)拉一點回去,用一點偏差換掉大量變異。 同一個 trade-off 你在 Ridge 回歸看過。

坑 3

危機的時候 ρ 會一起衝向 1,分散當場消失。③ 已經給你看過 ρ = 1 時弧線塌成直線 —— 那就是市場崩盤時的樣子。平時彼此無關的資產,在流動性危機裡會因為 「所有人同時要賣東西換現金」而同步下跌,相關係數從 0.2 跳到 0.8。

糟糕的地方在於:你最需要分散的那一天,正好是分散失效的那一天。 用整段歷史算出來的平均 ρ 會系統性低估這件事。想看清楚就分開算兩個 C: 平時的、以及「跌幅最大的那 10% 月份」的,兩個擺在一起看。

坑 4

邊界對輸入極度敏感。接坑 1 和坑 2 講具體的:把科技股的平均報酬從 14% 改成 15% (只動 1 個百分點,在估計誤差裡根本是雜訊),整條邊界的形狀與每個 t 對應的權重都會跟著搬動; 對 50 檔資產的真實問題,這種敏感度會放大到「權重表整張換掉」。

所以實務上很少直接用裸的最佳解。常見做法:加上限(就是 ⑧ 的開關 b —— 它存在的理由不是風控漂亮,而是強迫解不要太極端)、對 μ 做 shrinkage、 或乾脆退回等權重 1/N。

補一個本頁算出來的難堪事實:等權重 (⅓, ⅓, ⅓) 的 σ = 13.45%, 而同樣報酬(8.33%)下的最佳解 σ = 13.42% —— 精心最佳化只贏了 0.03 個百分點,而這 0.03 遠小於你估 μ 和 C 的誤差。 「1/N 很難打敗」是有原因的。

⑪ 這關回答了什麼

有效邊界到底是什麼?

是一條「解軌跡」:對每一個報酬水準 t,各解一次「最小風險的權重」,把答案畫在 (σ, μ) 平面上連成的線。

更直觀的說法在 :把所有可能的權重組合都映到 (風險, 報酬) 平面, 會得到一團子彈形的點雲;有效邊界就是這團雲的左上緣。 「左」代表同報酬下風險最低,「上」代表同風險下報酬最高。

不是一條擬合出來的曲線,也不是經驗法則 —— 它是 min wTCw1Tw = 1μTw = t 之下的解,隨 t 掃出來的軌跡。解法在 , 三檔的情況有精確解、不需要迭代。

邊界以外沒有點(做不到),邊界以內的點全部被支配(有更好的選擇)。所以能討論的只剩這條線。

為什麼分散有用?這跟共變異數有什麼關係?

因為報酬會加權平均,風險不會。把 wTCw 展開就一目了然:

σp2 = Σi wi2σi2  +  2 Σi<j wiwj ρijσiσj 第一項(對角線)一定是正的;第二項(非對角線)的符號由 ρ 決定。 ρ 是負的,這一項就是在替你扣分。

那個粗體的部分就是共變異數 Cij。 所以「分散風險」在數學上的全部內容是:共變異數矩陣的非對角線可以是負的, 而變異數的加總會把它們算進去。沒有任何額外機制。

具體數字在 :ETF + 債券各一半,風險從加權平均的 10.00% 掉到 7.54%, 少掉的 2.46 個百分點完全來自 2w1w2C12 = −5.625 這一項。

再往回追一層:共變異數本身就是中心化之後的內積。 所以「分散有用」最終追到 01 關 —— 兩個方向夾角大於 90°,內積就是負的。 那個 ρ 滑桿拉到負值時看到的「弧線往左凸」,就是這個夾角的視覺化。

預算約束為什麼是一條線或一張平面?

因為 w1 + w2 + … = 1 是一個線性等式, 而線性等式的解集合天生就是「平的」東西 —— 這在 06 關講仿射子空間時定義過。

維度用減法就能算:未知數個數 − 約束個數

  • 兩檔:2 − 1 = 1 → 一條直線( 左圖)
  • 三檔:3 − 1 = 2 → 一張平面;再加上 w ≥ 0 就切成一個三角形( 右圖)
  • 三檔又指定了報酬:3 − 2 = 1 → 又變回一條直線, 這正是 那個解法能精確求解的原因

寫成內積更好記:1Tw = 1。「跟全 1 向量的內積等於 1」—— 01 關講過,固定與某個向量的內積,就是固定在它方向上的投影長度, 而那是一整片垂直於它的平面。所以預算約束的法向量是 (1, 1, 1):斜著切過第一象限的那張平面。

為什麼最優解一定在相切的地方?

用反證最快。假設橢圓(風險等高線)跟約束直線交叉成兩個交點, 那代表在這條直線上有一整段落在橢圓內部 —— 而橢圓內部的風險比橢圓上更低。 所以只要有兩個交點,你就一定還能更省,這個 c 不可能是最優。

反過來如果完全不相交,代表這個風險水準 c 太低,直線上沒有任何一點做得到。

兩邊夾殺,最優只能發生在剛好一個交點的臨界狀態,也就是相切。 的滑桿就是在讓你親手走過 0 → 1 → 2 這三個階段。

相切寫成代數是 Cw = λ·1(兩邊法向量平行),那個 λ 就是拉格朗日乘子。 本頁可以直接驗:切點 w = (0.133028, 0.866972) 代進去, Cw = (20.177752, 20.177752),兩個分量一模一樣, 確實平行於 (1, 1)。完整的拉格朗日推導不在本關,⑦ 有標明。

這跟 PCA 裡那個 wTCw 是同一個東西嗎?

式子完全同一個,C 也是同一種矩陣(共變異數矩陣)。差在三件事:w 的身分、要最大還是最小、約束是什麼。

05 關 PCA最佳化 03 關(本關)
w 是一個單位方向(往哪看)錢的比例(怎麼分)
wTCw 是資料往那個方向的變異數組合報酬的變異數
最大化(找最散開的方向)最小化(找最穩的分法)
約束‖w‖ = 1(一個單位1Tw = 1(一條直線/一張平面)
相切條件長成Cw = λw特徵向量Cw = λ1 → 解 C−11 再正規化

兩邊的解都長成「Cw = λ·(某個東西)」,因為兩邊都是相切條件: 目標的等高線碰到約束集。PCA 的約束是圓,而圓的法向量就是 w 自己, 所以條件變成 Cw = λw —— 那就是特徵向量的定義。 本關的約束是平面,法向量是常數 1,所以條件是 Cw = λ1

換一個約束,「特徵向量」就換成別的東西。這是 那張對照表的重點。

那為什麼實務上這套常常失效?

因為數學是精確的,輸入是猜的。四個具體原因( 有完整版):

  1. μ 沒有預測力:整條邊界的縱軸位置來自歷史平均報酬,而它對未來的預測力接近於零。這條最致命。
  2. C 的估計誤差被放大:最佳化會主動去找「相關係數看起來最低」的那一對加碼, 而那常常只是噪音。這就是「error maximizer」的名號來源,對策是 shrinkage。
  3. ρ 在危機時一起衝向 1:你最需要分散的那天,分散剛好失效(③ 的 ρ = 1 就是那天的樣子)。
  4. 解對輸入極度敏感:μ 動一個百分點,權重表就換一批。

但這不代表這套沒用 —— 它的價值在幾何直覺,不在小數點: 「相關性高的資產不算真正的備援」、「加一條約束一定有代價,而代價可以量出來」、 「同樣報酬下往左推到底」這幾件事,是拿掉數字之後還站得住的。

實務上真正在用的是加了一堆約束、shrinkage 過、甚至退回等權重的版本 —— 而你要判斷那些修補合不合理,得先懂沒修補的原版長什麼樣。這就是這一關的用途。

MVP(最小變異數組合)跟切點組合(最大夏普)差在哪?我該挑哪個?

MVP 完全不看報酬,切點組合看的是「性價比」。

MVP 解的是 min wTCw s.t. 1Tw = 1 —— 注意 μ 根本沒進到式子裡。所以它是「不管賺多少,我只要最穩」。 本頁不放空的 MVP 是 (13.30%, 86.70%, 0%),σ = 4.49%、μ = 3.67%。

切點組合要先有一個無風險利率 rf 當比較基準,解的是 max (μTw − rf) / √(wTCw), 也就是「從 (0, rf) 出發的那條線最陡」。本頁在 rf = 1.5% 之下是 (20.95%, 71.05%, 8.00%),σ = 5.82%、μ = 4.93%、夏普 0.588(MVP 的夏普只有 0.482)。

怎麼挑:如果你可以自由借貸無風險資產,就挑切點組合 —— 因為你可以沿著資本配置線(⑧ 的開關 c) 自由調整「定存 + 切點組合」的比例,任何風險水準都能拿到最高報酬,MVP 會被這條直線超越。 如果不能(多數人的實際情況),那就在弧形邊界上按自己能承受的 σ 挑一點,MVP 是最保守的那一端。

主線在這裡閉合

十關一句話串起來:

內積變異數其實是內積共變異數也是內積把它們裝成矩陣 CC 的特徵向量 = 資料主軸(PCA)→ 補完空間語言SVD 拆解任何矩陣拿 C 當尺量距離在約束下最佳化 wTCw

從頭到尾只有一個式子在變身:wTCw。 05 關要它最大、機率統計 05 關拿它當距離、最佳化 03 關要它最小。 C 一直是同一個 C,變的只有你問它什麼問題、以及你被什麼約束住。

這是本實驗室目前的最後一關。想把十關的關係重新攤開來看、 或者做一次費曼測試檢查自己是不是真的懂了,回 全景 01 全景地圖與自我驗收