五萬預算怎麼分:從四個價格一路算到 20 / 80
這是整套教材的實戰關卡:把前面主線十六關的工具全部用上一次。
前面主線十六關把工具一個一個磨好了,這裡只做一件事:把「五萬預算、兩支 ETF」這個真實問題
一步步算給你看 —— 從四個價格開始,一路算到「00919 一萬、00929 四萬」,中間不跳任何一步。
你會發現線性代數、機率統計、最佳化那幾組的東西,幾乎全部會在這一題上出現一次。
第一次讀這套教材可以先跳過這一頁 —— 主線十六關走完之後再回來練手,效果最好。
本頁是把一條完整的推導做成一關,不是投資建議。 00919 / 00929 在這一頁全程只是兩欄數字,20 / 80 是照一條固定規則算出來的數字,不是任何人推薦你買的比例。
而且要先知道一件事:這組數字是為了數學好算而刻意設計出來的。 它漂亮到可以說「如果真有這樣的資料,那結論就一定成立」—— 這一關會把「這個前提下成立」 跟「真實資料上會怎樣」兩件事分開講清楚,那就是 ⑩ 月數滑桿那一節存在的理由。
① 你有五萬預算,眼前兩個標的
先講具體的麻煩,不要先講數學。
你手上有 5 萬元,看上兩個標的:00919 和 00929 (在這一頁它們全程只是兩欄數字,代號記不住也沒差)。兩檔都想買,錢也剛好夠買兩檔。 問題只有一個:
各放多少錢?
- 兩邊各 2.5 萬?聽起來公平 —— 但「公平」憑什麼是對的?
- 全押最近漲比較多的那一檔?那你要一起吞下它抖得比較兇的那一面。
- 「3 萬 / 2 萬」跟「1 萬 / 4 萬」哪個好?你憑什麼判斷?
而且分法有無窮多個 —— 只要兩份加起來是 5 萬,任何一種都是候選,你不可能一個一個試過來。
這一題有一條算得出答案的固定做法。整條跑完,最後會落在 00919 一萬、00929 四萬(也就是 20 / 80)—— 這個數字不是憑感覺挑的, 而是一條流水線跑到底的結果:
這條線上每一格你都學過了。這一頁的價值在於把它們接起來跑一次, 並且在最後一格前面停下來問一句:特徵值那一段,到底有沒有參與「錢怎麼分」這個決定? (答案在 ⑧,先玩到那裡再看。)
上面那條線出現的 Σ、λ 現在看不懂是正常的 —— 每一節都會在用到它的地方就地翻譯一次。 整條流水線的十三步速查表、還有整頁的符號表,都收在最後面的 附錄:需要對照時再去翻,現在不用先讀。
② 先把價格畫成看得見的錢
要決定錢怎麼分,先得有資料。這一題手上的資料就是兩檔各四個月的價格 —— 單位是元,畫成柱子就是看得見的錢:
00929:16.44 → 18.17 → 22.20 → 29.96 元 四個月的價格中間夾著三段漲跌 —— 這三段就是後面全部計算的原料。 (這四個價格是刻意挑出來的,為什麼挑成這幾個數字,③ 會講。)
- 你會看到什麼:
- 四個月 × 兩檔的價格柱狀圖(柱子高度就是價格),柱子上面是價格、下面是 「第 0 個月投 5 萬進去,到這個月會變成多少」。
- 你可以動什麼:
- 選要看哪一檔,以及要看哪一段(第 0→1、1→2、2→3 個月)。 選定之後,那兩根柱子之間會出現「×幾倍」的箭頭。
- 要看出什麼(本節唯一重點):
- 報酬的單位是「倍數」,不是「差幾塊錢」。 20.09 → 22.20 差 2.11 元,聽起來很少;但它是變成 1.105 倍, 而 5 萬元跟著變成 5.53 萬 —— 決定你賺多少的是倍數,不是差價。
「差幾塊」沒辦法拿來比較
同樣漲 5 塊錢,起點不一樣,意義差很多:
| 從 | 漲到 | 差幾塊 | 變成幾倍 | 報酬 |
|---|---|---|---|---|
| 10 元 | 15 元 | +5 | 1.5 倍 | +50% |
| 100 元 | 105 元 | +5 | 1.05 倍 | +5% |
兩列的「差幾塊」一模一樣,但你拿 5 萬去買,第一列會變成 7.5 萬、第二列只會變成 5.25 萬。 所以整套教材談報酬時,永遠是在談倍數。倍數的算法就是相除:
00919 三個月分別是 1.105 倍、1.35 倍、1.65 倍; 00929 是 1.105 倍、1.22 倍、1.35 倍。 這組數字大得不像真的(一個月漲 65% 是誇張的), 那是為了讓後面每一步都能心算 —— 記著這件事,不要把它當成市場常態。
③ 倍數相乘很難算,所以取 ln 把它變成相加
上一節確定了:報酬的單位是倍數。那三個月連續漲的總報酬怎麼算? 不是把三個倍數加起來,而是乘起來:
乘法很不好處理。平均、變異數、內積 —— 後面十幾關的工具全部建立在加法上 (02 關那個「變異數才是可加的量」就是這個意思)。 所以我們需要一個把乘法變成加法的動作。那個動作就是 ln:
這一節的 ln 基礎在 基礎 01 關 ④ 節(那三條性質+可以拖著對帳的滑桿); 「e 的幾次方」這個問法本身在 基礎 01 關 ③ 節。 這一頁不重教,直接用。
把它套到那三個倍數上:
互動一:同一件事的兩種算法(相乘 vs 相加)
- 你會看到什麼:
- 上排是倍數的世界:價格一格一格 × 倍數往上跳; 下排是ln 的世界:同一段路變成 + 一個小數字。
- 你可以動什麼:
- 「累積到第幾個月」滑桿(1 → 3):被算進去的那幾段會亮起來。
- 要看出什麼:
- 兩排永遠對得上。上排的乘積、下排的和,讀數盤會同時把 e相加的結果 算給你看 —— 兩個數字一路相等, 差距永遠是 0.000。取 ln 不是換一種報酬,是換一種記帳方式。
同一組價格的兩種畫法
把上面那件事畫成曲線就更清楚:價格是往上彎的(因為它在乘), 但ln 價格是一節一節的直線段(因為它在加)。
價格模式下「這個月漲得比較多嗎」很難用眼睛比 —— 因為柱子越後面越高、 斜率會被起點放大。切到 ln 模式,同樣的漲幅就是同樣的高度差, 眼睛可以直接比較不同月份、甚至不同資產。這就是為什麼所有後面的計算都跑在 ln 的世界裡。
為什麼那四個價格挑得那麼奇怪:它們是「e 的次方」
回頭看 ② 那四個價格 20.09、22.20、29.96、49.40。 它們不是隨手挑的 —— 每一個都剛好是 e 的某個次方。 價格一旦寫成 e 的次方,ln 一取就只剩指數:
r = ln(Pt/Pt−1) = ln Pt − ln Pt−1 → 報酬 = 指數相減
第 1 個月:3.1 − 3.0 = 0.1 第 2 個月:3.4 − 3.1 = 0.3 第 3 個月:3.9 − 3.4 = 0.5
三個月合計:3.9 − 3.0 = 0.9(= 0.1 + 0.3 + 0.5,頭尾相減就好) 中間那一行用到 ln 的第二個性質:裡面相除 = 外面相減 (它其實就是 ln(a×b) = ln a + ln b 的另一面)。 把價格挑成 e³, e³·¹, e³·⁴, e³·⁹ 的用意就在這裡: 報酬直接用眼睛減就得到,不用按計算機 —— 下一節 ④ 開始要用的 0.1 / 0.3 / 0.5,就是這樣減出來的。
r = 0.1 → 漲 e0.1 ≈ 1.105 倍(+10.5%); r = 0.5 → 漲 e0.5 ≈ 1.649 倍(+64.9%)。
當 r 很小的時候,log 報酬 ≈ 百分比報酬 (0.02 ≈ +2%),所以實務上兩者常被混著講。r 一大就差很多 —— 這裡的 0.5 絕對不是「+50%」,是 +65%。
互動二:橫向減 vs 直向減
最後一件事。這張價格表上有兩個方向可以減,只有一個方向減出來的是報酬:
- 你會看到什麼:
- 那八個價格寫成 e 的次方(上排 00919、下排 00929),以及箭頭指出「誰減誰」、減出來是多少。
- 你可以動什麼:
- 兩顆按鈕切換橫向減(同一檔、相鄰月份)與直向減(同一個月、兩檔相比)。
- 要看出什麼:
- 兩種減法的單位不一樣。橫向減出來的是「這檔自己漲跌多少」(可比較、可累加的報酬); 直向減出來的是「兩檔的價差」—— 而且它算完之後後面再也沒用到。
橫向是時間方向,直向是資產方向。 我們要的是「每一檔自己的漲跌」,所以要沿著時間減 —— 這樣減出來的東西才叫報酬, 才能取平均、才能算變異數。
直向減出來的 0.2 / 0.2 / 0.3 / 0.5 是價差, 單位是「log 價格的差」,不是報酬。它可以拿來看「兩檔的差距在拉開」, 但它不是後面流水線的輸入 —— 算完就擱在那裡。
④ 平均與去均值:XA、XB 從哪裡來
橫向減之後,手上有兩組數字:
00929:r = (0.1, 0.2, 0.3) → μB = (0.1+0.2+0.3)/3 = 0.2 把 0.3 和 0.2 圈起來記住,它們是兩件事的輸入: 一是「期望報酬」(機率統計 01 關),二是接下來要扣掉的那個基準。
接著是 去均值(de-mean,也叫去中心化):每個數字減掉自己那一欄的平均。
XB = (0.1, 0.2, 0.3) − 0.2 = (−0.1, 0, 0.1) X 是偏離量:這個月比自己的平均高多少 / 低多少。之後所有「變異數」「共變異數」 「主軸」都只吃 X,不吃原始報酬。
為什麼要先扣掉平均?因為「一起動」跟「平均多高」是兩個不同的問題。 我們要問的是「這個月 A 比自己平常高的時候,B 是不是也比自己平常高」—— 這句話裡的「比自己平常」就是去均值。02 關把這件事畫過: 平移資料不改變它的形狀,但會讓所有公式變乾淨(共變異數變成單純的內積)。
- 你會看到什麼:
- 兩條數線:上面是 00919 的三個月報酬,下面是 00929 的。三角形標記是各自的平均。
- 你可以動什麼:
- 一顆按鈕,把兩排數字整排平移到平均落在 0(也就是去均值)。
- 要看出什麼:
- 去均值只是把兩排點各自搬到原點,點與點之間的距離完全沒變。 搬完之後你會看到這一頁最關鍵的事實:XA 的偏離剛好是 XB 的兩倍。
XA = (−0.2, 0, 0.2)、 XB = (−0.1, 0, 0.1) —— XA = 2 × XB,一個乘法就對上,沒有任何誤差。
這組數字就是為了讓這件事看得見而設計的 —— 等一下 ⑤ 算出來的四格,比例會剛好是 4 / 2 / 2 / 1。 兩檔的報酬完全成比例,代表這兩欄其實只是同一個方向的兩個放大版本。 後面的 λ = 0、佔比 100%、Σ 不可逆,全部都是這一行的必然結果 —— 而不是三個獨立的發現。
⑤ Σ = XᵀX / (n−1):每一格都是一個內積
下一步是 XᵀX。把 X 想成一張兩欄的表:
那四格不是四個新公式,是四個內積。這就是 01 關那個 「把對應位置乘起來再全部加總」的動作,做四次:
Σ = XᵀX / (n−1) = XᵀX / 2 = [[0.04, 0.02], [0.02, 0.01]] 對角線(左上、右下)是「自己跟自己內積」= 變異數; off-diagonal(右上、左下)是「兩欄互相內積」= 共變異數。 右上和左下一定相等,因為 XA·XB = XB·XA。
- 你會看到什麼:
- Σ 的四格,以及被選中那一格的逐項計算(三個月各乘一次、加起來、再除以 n−1)。
- 你可以動什麼:
- 點四格中的任何一格。
- 要看出什麼:
- 四格的算法一模一樣,只差「拿哪兩欄來配對」。 以及:右上和左下算出來一定同一個數字,所以 Σ 永遠對稱。
同一張表,這一頁叫 Σ,前面十五關叫 C,
統計課本叫 covariance matrix,寫程式的人叫 cov。四個名字,一個東西。
而它的意義只有一句:資料形狀說明書。 對角線說「每一欄自己多散」,非對角線說「兩欄一起動的程度」—— 03 關把這句話畫成圖過。
⑥ λ = 0 與 λ = 0.05:那個「100%」是怎麼來的
接著解特徵方程式。兩階的情況可以純手算:
(0.04 − λ)(0.01 − λ) − 0.02² = 0
λ² − 0.05λ + (0.0004 − 0.0004) = 0
λ² − 0.05λ = 0 → λ(λ − 0.05) = 0 → λ = 0 或 λ = 0.05 I = 單位矩陣(對角線 1、其他 0)。 det(Σ − λI) = 0 這一行是 04 關的定義式: 「找到那些方向,Σ 對它們只做拉長、不做轉向」。注意常數項剛好抵銷成 0 —— 這不是巧合,見下面。
兩個特徵向量也算得出來,而且各有一個在金融裡常見的叫法:
| λ | 特徵向量 | 常見的叫法 | 人話 |
|---|---|---|---|
| 0.05 | (2, 1)/√5 | 大盤 | 兩檔同時往同一邊動,而且 00919 動的幅度是 00929 的兩倍。這組資料的全部變異都在這個方向上。 |
| 0 | (1, −2)/√5 | 產業輪動 | 一個漲、另一個跌(方向相反)。這個方向的變異數是 0 —— 在這三個月裡,這種事一次都沒發生過。 |
於是就有了那個「100%」:λ = 0.05 佔了總變異的 100%。 總變異就是兩個特徵值加起來(也等於對角線相加,0.04 + 0.01 = 0.05), 而第二個特徵值是 0,所以第一個當然佔 100%。
互動:把方向轉一圈,看變異數怎麼變
- 你會看到什麼:
- 左圖是去均值後的三個月(橫軸 00919 的偏離、縱軸 00929 的偏離), 加上一根你可以轉的方向箭頭與每個點投影到它上面的落點; 右圖是「轉到每個角度時,投影後的變異數有多大」那條掃描曲線。
- 你可以動什麼:
- 角度滑桿 θ(0°~180°),或兩顆按鈕直接跳到最大 / 最小那個方向。
- 要看出什麼:
- 三個點完全落在一條直線上。所以轉到那條線的方向時變異數最大(0.05 = 100%), 轉到跟它垂直時,三個點的投影全部疊在原點 —— 變異數精準等於 0。 這就是 λ = 0 的圖像意義。
回頭看 ④ 那一行:XA = 2 × XB。 兩欄完全成比例,代表這張表其實只有一欄的資訊,另一欄是它乘 2。 所以:
- det Σ = 0.04 × 0.01 − 0.02² = 0.0004 − 0.0004 = 0 —— 剛好抵銷,這就是上面那條方程式常數項消失的原因。
- Σ 的秩是 1:兩欄只撐出一條線,不是一個面。
- 所以第二個特徵值必須是 0,第一個必然佔 100%。
這正是乾淨的單因子結構:兩檔資產完全由同一個方向驅動。 λ = 0.05 是那個共同方向,λ = 0 表示「沒有第二個獨立方向」。 這組數字是為了數學好算而設計的 —— 在這個前提下, 「如果真有這樣的資料,那就照它買」這句話是講得通的:資料裡確實只有一個方向,沒有第二種可能。
這一關要補的是下一句:真實資料幾乎不會這麼乾淨。 三個月的報酬、扣掉平均只剩 2 個自由度,卻要估 2 檔資產的 3 個參數 —— 這正是 機率統計 05 關踩坑 1說的「樣本數沒有遠大於要估的參數」。 所以這一關的主互動就是讓你把月數拉大,看這個乾淨結構在真實規模下會變成什麼(⑩)。
det Σ = 0 的直接後果是 Σ 不可逆 (06 關那個 Singular matrix 在這裡真的出現了)。 這件事很有殺傷力,因為投資組合最有名的那條公式 w ∝ Σ−1μ(最佳化 03 關在解的東西) 當場沒辦法算。
全景 01 關那句 「秩不足會讓 C 出現 λ=0、不可逆,任何要用 C⁻¹ 的方法當場翻車」—— 這一頁就是那句話的具體案例。所以這條流水線走的是另一條路(⑧ 的反變異數加權), 那條路只需要對角線,剛好繞過這個問題。
⑦ 門檻 0.03:這一節只把它當一個常數
推導的第 11 步是 RMT 降噪,用一條線 λm = 0.03 把特徵值分兩堆:
λ₂ = 0 < 0.03 → 壓成 0(判定為雜訊)
Λc = diag(0.05, 0) Λc 讀作「降噪後的 lambda 對角矩陣」, c 是 cleaned。diag(a, b) = 對角線放 a、b,其他位置是 0。
- 你會看到什麼:
- 一條特徵值的數線,門檻 0.03 畫成一條虛線,兩個 λ 各自落在線的哪一邊。
- 你可以動什麼:
- 這張圖沒有東西可以動 —— 這一節刻意不給滑桿,因為門檻在本關是給定的常數。
- 要看出什麼:
- 降噪這個動作本身很單純:畫一條線,線上留、線下砍。 難的不是砍,而是「線該畫在哪」,那是本關不教的部分。
「有一條線,超過算訊號、低於算雜訊」這個想法本身是合理且常見的。 本關把 0.03 當成一個給定的常數來用,就這樣,不多解釋 —— 因為那條線背後是隨機矩陣理論(RMT:純雜訊資料的特徵值會落在哪個範圍), 要講清楚需要另外一整關。
這裡值得記住的是 機率統計 05 關那句話的通用版: 門檻是產品決策,不是數學結論。數學可以告訴你「純雜訊大概會長到多大」, 但「要不要砍」永遠是你替這個系統做的選擇。
選讀附註:這條線的正式版本(不進主軸,想跳過可以跳過)
這條門檻的正式版本是 Marchenko–Pastur 分布的上緣: 如果一張表完全是雜訊,它的共變異數矩陣的特徵值會落在一個可以算出來的範圍內, 上緣大約是 σ²(1 + √(N/T))²(N = 資產數、T = 期數)。 超過上緣的特徵值才「不像純雜訊」。
但它是「資產數與期數都很大」時的漸近結果 —— 2 檔 × 3 個月離那個規模差得非常遠。所以本關只把 0.03 當成一個常數示範「降噪長什麼樣」, 不拿它去判定這組資料。這也是為什麼這一節沒有滑桿:給你拉,等於在暗示這個數字對這組資料有意義。
⑧ 20 / 80 是怎麼來的:反變異數加權
最後三行,才是真正決定「錢怎麼分」的地方:
1 / 0.01 = 100 ← 0.01 是 Σ 右下角,00929 的變異數
25 / 125 = 20% 100 / 125 = 80% 這叫反變異數加權(inverse-variance weighting):波動越大、給越少。 分母 125 = 25 + 100,只是把兩個數字normalize成加起來 1。
落地就是:00919 一萬元、00929 四萬元。
看清楚上面那三行用到什麼:只有 Σ 對角線的兩個數字。 特徵值 0.05、特徵向量 (2,1)/√5、大盤、產業輪動、Λc —— 一個都沒進去。
所以「看到 λ 就說要投資」中間不是一步推論,那裡是兩件不同的事: 特徵值那一段在解釋資料的結構(這兩檔其實是同一個東西的兩個放大版), 產生權重的是另一條路(只看各自波動大小的反變異數加權)。 如果你剛才覺得中間有個跳躍 —— 你是對的,那裡確實有。
- 你會看到什麼:
- 兩條「1 / 變異數」的長條,以及它們換算出來的權重與金額。
- 你可以動什麼:
- 假想把 00919 的變異數調大調小(00929 固定在算出來的 0.01)。
- 要看出什麼:
- 這條規則只認波動、不認報酬。把 00919 的變異數調到跟 00929 一樣(0.01), 權重立刻變成 50 / 50;調到很大,它的權重就趨近 0。報酬 0.3 完全沒有出現在這個式子裡。
⑨ 主互動一:自己拖比例,看風險與報酬怎麼動
反變異數加權給了一個答案(20 / 80),但那只是所有可能分法裡的一個點。 這個互動讓你把整條可能性走一遍。用的公式就是 機率統計 03 關推出來、 最佳化 03 關整關在壓的那兩個:
組合風險 wᵀΣw = 0.04wA² + 2(0.02)wAwB + 0.01wB² 下標 p = portfolio(整包)。wB = 1 − wA, 因為錢就這麼多。wᵀΣw 是變異數,開根號才是波動 σp。
- 你會看到什麼:
- (風險 σp, 報酬 μp) 平面。所有分法連成的軌跡,加上四個標好的位置: 全押 00929、全押 00919、反變異數加權的 20/80、以及那個風險為 0 的位置。
- 你可以動什麼:
- 直接拖圖上那顆綠點,或用滑桿。範圍刻意開到負數與超過 100% (負的 = 放空,就是 最佳化 03 關那個 wi < 0)。
- 要看出什麼:
- 軌跡是折線,不是弧線。最佳化 03 關那條漂亮的弧在這裡塌成兩段直線 —— 因為這兩檔的相關係數是 1.000(完全同步),混起來一點分散效果都沒有。 而折點碰到縱軸(σ = 0)那件事,是這組資料被設計出來的直接後果。
拖到 wA = −100%(放空一份 00919、買兩份 00929)時, wᵀΣw 精準等於 0。而那個權重方向 (−1, 2) 正是 λ = 0 的特徵向量 (1, −2) 的反向 —— 「變異數為 0 的方向」跟「風險為 0 的組合」是同一件事的兩種說法。這個對應關係很漂亮,值得記住。
但它只在這組被設計成完美成比例的資料上成立。 真實資料裡 λ₂ > 0,這個零風險組合就不存在了 —— 你可以在 ⑩ 把月數拉大,親眼看它的風險從 0 慢慢長出來。 再次提醒:這不是投資建議,這是在讀一個數學結構。
⑩ 主互動二:把「用幾個月的資料」拉大(本關的論點)
到這裡整條流水線已經走完了。剩下最後一個問題,也是這一關真正想回答的:
如果不是三個月,而是十二個月、六十個月,這整套算下來會長什麼樣?
這不是要挑前面那條算法的毛病 —— 三個月是為了教學而挑的,教學就該挑好算的。 但既然前面主線十六關都在講「C 是估出來的」, 那就應該親眼看一次:乾淨的設計資料與真實規模的資料差在哪。
前三個月就是前面用的那三個月,一個數字都沒改 (00919 的 0.1 / 0.3 / 0.5、00929 的 0.1 / 0.2 / 0.3)。 所以把滑桿拉到 3,你會精準看到前面算出來的 Σ、λ = 0 / 0.05、100%、20 / 80。
第 4 個月以後,用一個固定 seed 的亂數產生器(mulberry32)接下去,機制是一個單因子模型:
共同因子 f ~ 常態(0, 1) // 「大盤」那個方向
00919 的月報酬 = 0.3 + 0.2·f + s·a // a、b 是各自的獨立雜訊(常態)
00929 的月報酬 = 0.2 + 0.1·f + s·b // 係數 0.2 : 0.1 = 2 : 1,跟前三個月同一個比例
s = 0.03 → 0.22,隨月份線性變大 // 「兩檔各自的產業因素慢慢跑出來」
兩件事要說明白:① 係數 2:1 是照前三個月設的,所以「大盤」這個共同方向一直存在, 不是被我們拆掉的;② 雜訊隨月份變大是我們刻意安排的,目的是讓你能連續看到結構 「從乾淨走到不乾淨」,而不是一步跳過去。真實資料不會這麼聽話 —— 這一點必須誠實講。 整池 60 個月是固定的(seed 固定),滑桿只決定你「用前面幾個月」,不會重新抽。
mulberry32 · seed = 20260814 · 固定 60 個月- 你會看到什麼:
- 左圖是去均值後的每個月(橫軸 00919、縱軸 00929)加上兩根主軸; 右圖是「λ₁ 佔比」隨月數變化的曲線,虛線是 100%。右邊讀數盤是整條流水線的即時重算。
- 你可以動什麼:
- 月數滑桿 3 → 60,或四顆預設按鈕(3 / 12 / 24 / 60)。
- 要看出什麼(四件事,一次看):
- ① λ₂ 從 0 變成正數:第二個方向長出來了; ② det Σ 離開 0,於是 Σ−1 從「算不出來」變成「算得出來」; ③ 那個 100% 掉下來; ④ 反變異數加權的 20 / 80 也跟著搬家 —— 權重本來就是估計值。
三個一定要自己拉一次的位置
| 月數 | Σ 與 λ | Σ−1 | 怎麼解釋 |
|---|---|---|---|
| 3 | λ₂ = 0、佔比 100.0%、det = 0 | 算不出來 | 原本那三個月,一個數字都沒改。兩檔完全成比例,資料裡只有一個方向 —— 這是設計出來的乾淨。 |
| 12 | λ₂ 已經是正數、佔比掉到 97% 附近 | 算得出來 | 第二個方向出現了。「一個因子解釋 100%」這句話不再成立, 但共同因子還是很大 —— 結構真的存在,只是不再是全部。 |
| 60 | 佔比 75% 上下、λ₂ 明顯 | 算得出來 | 結構還在(四分之三的變異仍然來自同一個方向),但「照它買」那句話的前提已經鬆掉了: 現在有第二個方向,而且它有真實的大小。 |
「找到一個能解釋過去 100% 變異的方向」和「這個方向未來會賺錢」是兩個不同的敘述。
前者是對已經發生的資料做座標軸重排(05 關的 PCA, 只要有資料就一定算得出來,而且一定有一個「最大」的方向); 後者需要這個方向在樣本外也站得住 —— 那是完全另一件事。
在刻意設計的單因子資料上,兩者被畫上等號是合理的:資料裡真的只有一個方向。 在真實資料上,中間要補的就是 最佳化 03 關踩坑 1 「歷史報酬不是未來報酬」與 全景 01 關那句 「C 是用過去的樣本估的」。這一關的價值不是推翻前面的算法,是把它的適用範圍講清楚。
⑪ 這關回答了什麼
先自己回答,再點開對答案。答不出來的那條,上面一定有對應的互動可以回去再玩一次。
為什麼看到 λ 這個資料,就會有「可以投資、100% 要投資」的結論?我不懂這個推論的依據。
因為那裡確實有兩件不同的事被接在一起,中間沒有一步推論。
把 ⑧ 最後三行單獨看:1/0.04 = 25、 1/0.01 = 100、25/125 = 20% —— 只用到 Σ 對角線的兩個數字。特徵值、特徵向量、大盤、產業輪動、Λc 都沒有出現在裡面。
所以正確的讀法是:特徵值那一段在解釋「這兩檔其實是同一個東西的兩個放大版」, 產生權重的是另一條路(反變異數加權)。你覺得中間有跳躍,是因為那裡本來就是兩件事。
至於「100% 要投資」那個 100%,指的是一個方向解釋了過去全部的變異, 不是「應該 100% 押下去」。而且那個 100% 是這組資料被設計成的樣子(⑥), 月數一拉大就會掉下來(⑩)。
橫向減與直向減,差別在哪?為什麼推薦橫向那個?
橫向是沿著時間減,出來的是報酬;直向是沿著資產減,出來的是價差。
橫向減(ln Pt − ln Pt−1) 回答「這一檔這個月自己漲跌多少」,單位是報酬 —— 可以比較、可以取平均、可以算變異數, 後面整條流水線吃的都是它。
直向減(同一個月、兩檔的 log 價格相減)回答「兩檔的差距多大」,單位是價差。 它算出來是 0.2 / 0.2 / 0.3 / 0.5,然後就沒再用到。 它不是錯的,只是不是這條流水線要的輸入。可以在 ③ 切換兩種模式看清楚。
為什麼價格要寫成 e 的次方?Pt / Pt−1 是什麼意思?
Pt/Pt−1 是「這個月變成上個月的幾倍」。 取 ln 之後,倍數的乘法變成加法。
三個月連續漲,總倍數是三個比值相乘;取 log 之後就是三個 log 報酬相加。 這一頁故意把價格挑成 e³, e³·¹ 這種剛好是 e 的次方的數,是為了讓 ln(Pt/Pt−1) 直接等於指數相減 —— 心算就看得出報酬,不用按計算機。
順帶記住尺度:r = 0.5 代表這個月漲 e0.5 ≈ 1.65 倍, 也就是 +65%。這組報酬大得不像真的,那是為了好算,不是市場常態。
去均值(de-mean)是什麼意思?為什麼要先減掉平均?
去均值 = 每個數字減掉自己那一欄的平均,把「絕對水準」換成「比自己平常高多少」。
因為我們要問的是「A 比自己平常好的時候,B 是不是也比自己平常好」—— 這個問題跟兩檔各自平均多高無關。扣掉平均之後, 共變異數就退化成單純的內積,公式全部變乾淨。
而且在這組資料上,去均值之後立刻看到關鍵事實: XA = (−0.2, 0, 0.2) 剛好是 XB = (−0.1, 0, 0.1) 的兩倍 —— 後面所有「λ=0、100%、不可逆」都是這一行的結果(④)。
共變異數矩陣 Σ = XᵀX/(n−1) 的每一格是什麼?
每一格都是一個內積,除以 n−1。
左上 = XA·XA/2 = 0.04(00919 自己的變異數); 右下 = XB·XB/2 = 0.01(00929 的變異數); 右上 = 左下 = XA·XB/2 = 0.02(兩檔的共變異數)。 四格的算法完全一樣,只差「拿哪兩欄配對」,可以在 ⑤ 一格一格點開看。
除以 n−1 = 2 而不是 3,理由在 機率統計 01 關:平均是從同一批資料估出來的,用掉一個自由度。 三個月扣掉平均之後,其實只剩 2 個自由度。
λ = 0 和 λ = 0.05 分別代表什麼?「0.05 佔 100%」在這組資料上是什麼意思?
λ 是「那個方向上有多少變異」。0.05 是唯一有變異的方向,0 代表另一個方向完全沒有變異。
圖像版本在 ⑥:三個月的點完全落在一條直線上。 沿著那條線看,散開程度是 0.05;轉 90° 垂直看過去,三個點的投影全部疊在一起,散開程度 0。
「佔 100%」就是 0.05 / (0.05 + 0) = 1。 它是這組資料被設計成的樣子(兩欄完全成比例 → 秩 1 → 第二個 λ 必須是 0), 不是一個意外的發現。真實資料不會這樣,把 ⑩ 的月數拉大就看得到。
第二個特徵向量為什麼可以叫「產業輪動」?
因為它的方向是「一個漲、另一個跌」。
第二個特徵向量是 (1, −2)/√5:第一個分量正、第二個負。 兩檔往相反方向動,這種型態用金融的語言叫「資金從一邊輪到另一邊」,所以叫產業輪動; 第一個特徵向量 (2, 1)/√5 兩個分量同號,兩檔一起動,所以叫大盤。
名字是人給的,數學只給方向。數學說的是「這是變異數第二大的正交方向」; 「產業輪動」是把那個方向翻譯成領域語言。這組資料上它的 λ 是 0 —— 意思是這三個月裡這種事一次都沒發生過。
RMT 的門檻 0.03 怎麼用?為什麼這一關不教它是怎麼算出來的?
用法只有一句:超過算訊號、低於算雜訊(壓成 0)。 所以 0.05 留下、0 被砍掉,得到 Λc = diag(0.05, 0)。
不教理論的理由是:那條線的正式版本是 Marchenko–Pastur 上緣, 它是「資產數與期數都很大」時的漸近結果,而 2 檔 × 3 個月離那個規模差太遠 —— 拿它去判定這組資料是誤用。所以本關把 0.03 當成一個給定的常數,只示範「降噪長什麼樣」 (⑦,那一節刻意沒有滑桿)。
要記的通用句在 機率統計 05 關:門檻是產品決策,不是數學結論。
20 / 80 到底怎麼算出來的?為什麼不用 w ∝ Σ−1μ 那套?
20/80 是反變異數加權:權重正比於 1/變異數。 1/0.04 = 25、1/0.01 = 100, 25/125 = 20%、100/125 = 80%。波動越大、給越少。
不用 Σ−1μ 的原因很具體: det Σ = 0,Σ 不可逆,那條公式當場算不出來 (06 關的秩不足在這裡真的發生了)。 反變異數加權只需要對角線兩個數字,剛好繞過反矩陣 —— 它是這種情況下的合理選擇。
把 ⑩ 的月數拉大,你會看到 Σ−1 從「算不出來」變成「算得出來」,那條公式也就重新可用了。
期望報酬明明算了(0.3 和 0.2),為什麼沒有進入配置?月數拉大之後 20/80 會怎樣?
因為反變異數加權只看波動、不看報酬。所以報酬較高的 00919 反而只拿 20% —— 這不是矛盾,是這個規則的定義。
期望報酬在這一頁只出現在兩個地方:一是第 4 步算出來(④), 二是 ⑨ 的縱軸。它沒有進入權重公式。 想讓報酬影響權重,就得用 Σ−1μ 那一族方法 —— 而那需要 Σ 可逆。
至於月數拉大:20/80 會跟著搬家(⑩ 的讀數盤會即時算給你看)。 這件事本身就是重點:權重不是一個事實,它是一個估計值, 而估計值會隨著你用多少資料而改變。這正是 最佳化 03 關踩坑 2 「C 的估計誤差會讓權重亂跳」的最小案例。
這條推導每一步都對。它唯一的前提是「資料真的長成這樣」 —— 兩檔完全成比例、只有一個方向、第二個方向精準等於 0。 前面主線十六關給你的工具,剛好足夠讓你自己去檢查那個前提還在不在。
附錄
下面兩張表是查用的,不是讀用的:想從頭核對那十三步、 或畫面上哪個符號不認得,回來這裡翻。
附錄:推導速查與符號表(需要時再展開)
推導速查:十三個步驟
下面這張表把整條推導壓成一頁,每個數字都用程式重算過。 最右欄是「這一步是哪一關教的」—— 這就是為什麼這一頁擺在主線十六關之後。
| # | 這一步在做什麼 | 數字 | 哪一關 |
|---|---|---|---|
| 1 | 設定價格情境 | 00919:e³ → e³·¹ → e³·⁴ → e³·⁹ 00929:e²·⁸ → e²·⁹ → e³·¹ → e³·⁴ | 本頁 ② |
| 2 | 橫向減:同一檔、相鄰月份相減 = log 報酬 | 00919:0.1, 0.3, 0.5 00929:0.1, 0.2, 0.3 | 本頁 ③ |
| 3 | 直向減:同一個月、兩檔相減 = 價差 | 0.2, 0.2, 0.3, 0.5 (算完之後沒再用到) | 本頁 ③ |
| 4 | 取平均 | 00919:0.3 00929:0.2 | 機率統計 01 期望值 |
| 5 | 去均值向量 | XA = (−0.2, 0, 0.2) XB = (−0.1, 0, 0.1) | 02 去中心化 |
| 6 | 算 XᵀX | [[0.08, 0.04], [0.04, 0.02]] (比例剛好是 4 / 2 / 2 / 1) | 01 內積 |
| 7 | 除以 n−1 = 2 | Σ = [[0.04, 0.02], [0.02, 0.01]] | 03 共變異數矩陣 |
| 8 | 解特徵方程式 | λ² − 0.05λ = 0 → λ = 0 和 0.05 | 04 特徵值 |
| 9 | 標「100%」 | 0.05 佔總變異 100% | 05 PCA |
| 10 | 求特徵向量並命名 | λ=0.05 → (2, 1)/√5「大盤」 λ=0 → (1, −2)/√5「產業輪動」 | 05 主軸 |
| 11 | RMT 降噪:門檻 λm = 0.03 | 0.05 > 0.03 留下、0 < 0.03 判為雜訊 | 本頁 ⑦ |
| 12 | 算出配置(反變異數加權) | 1/0.04 = 25、1/0.01 = 100 25/125 = 20%、100/125 = 80% | 機率統計 03 · 最佳化 03 |
| 13 | 落地 | 00919 一萬元、00929 四萬元 | — |
0.1 / 0.3 / 0.5 是三個月的 log 報酬,0.3 是它們的算術平均 —— 整條推導裡沒有出現任何機率加權,所以第 4 步只接 機率統計 01 關的期望值定義,不接機率加權那一節。
整頁的符號表(看不懂就回來這裡)
只列看懂這一頁必須認得的符號,其他一次性的記號在出現的那一節就地翻譯過了:
| 符號 | 唸法 / 中文 | 就是在講 |
|---|---|---|
| Pt / Pt−1 | 這個月 / 上個月的價格 | 本頁那組 20.09、22.20、29.96、49.40。t 是月份編號。 |
| ex | e 的 x 次方 | e 是一個固定的數字(≈ 2.71828),跟 π 一樣是常數。本頁那四個價格剛好都是 e 的次方,這樣取 ln 就直接讀到指數。 |
| ln | 自然對數 | 「e 的幾次方」的反問。ln e³ = 3,所以次方寫法跟 ln 是一對。 |
| r | log 報酬 | rt = ln(Pt / Pt−1),也就是指數相減。0.1 = 「這個月漲了 e0.1 ≈ 1.105 倍」。 |
| μ | mu,平均 / 期望報酬 | 三個月報酬的算術平均。00919 是 0.3、00929 是 0.2。 |
| σ | sigma,標準差 | 抖多大。小寫 σ 是一檔(或一個組合)的標準差,大寫 Σ 是整組的矩陣,別看混。 |
| n−1 | 樣本自由度 | 三個月所以除以 2。理由在 機率統計 01 關:平均是估出來的,用掉一個自由度。 |
| Σ | 大寫 sigma,共變異數矩陣 | Σ = XᵀX / (n−1)。前面十五關叫它 C,本頁寫 Σ,同一個東西。 |
| λ | lambda,特徵值 | 「這個方向上有多少變異」。這組資料解出 0.05 和 0。 |
| w | 權重 | 錢怎麼分。w = (0.2, 0.8) 就是「一萬 / 四萬」。加起來是 1。 |