Lab 5 · Capstone Strategy

我的投資策略實戰

前 4 個 Lab 你學到了算績效、量風險、建投組、評回測。現在把所有工具串起來—— 為一個具體「投資人角色」設計一套策略,產出一份正式的「投資策略提案書」。

1選投資人角色
2配置資產
3回測驗證
4撰寫提案書

開始之前

🕹️ 你要做什麼

  1. 選 1 個 persona:退休族 Lucy / 上班族 Kevin / 新鮮人 Maggie —— 每個 persona 有不同的目標(CAGR/MDD/Vol)。
  2. 系統自動帶出建議權重,你可以在滑桿上微調(會自動歸一到 100%)。
  3. 回測 vs SPY 基準,看「verdict 卡」的三個 ✓/✗ —— 有沒有同時達標。
  4. 完成三題挑戰:A 為何適合、B 如何管理、C 最擔心的風險與對策。
  5. 匯出「投資策略提案書」Markdown,交給老師或自己存檔。
  6. 進階:打開 Colab 區塊,把整份提案書的回測用程式碼重現一次。

🧠 要建立的觀念

  • 好策略的定義是「合身」—— 與 persona 的風險承受度、期限、目標對齊,而非最高報酬。
  • 目標 KPI 是檢查表(filter),不是最適化對象:為了過標而硬塞高風險資產,會偏離 persona。
  • 策略提案書的三段式:為何適合 → 如何管理 → 最擔心的風險與應對,缺一不可。

🛠️ 會學到的方法

  • 把 Lab 1~4 的工具串成一條完整決策流程。
  • 用目標 KPI(minCAGR / maxMDD / maxVol)當 pass/fail 檢查。
  • 基準比較(vs SPY):超額報酬、風險改善、Sharpe 差異。
  • 撰寫正式策略提案書的結構化格式。

🎓 你在前面 4 個 Lab 的進度

如果某個 Lab 還沒跑過,建議先去玩一下,會更懂這個綜合 Lab 在做什麼。

1選投資人角色

不同的人,風險承受度、投資期限、目標都不一樣。你的策略要「合身」。
🧓

退休族 Lucy

65 歲退休、本金 1000 萬、每月需提領 3 萬、最怕 -20% 以上的回撤。目標:保本 + 穩定現金流。

低風險需現金流MDD ≤ 15%
🧑‍💼

中堅上班族 Kevin

38 歲、年收入 120 萬、定期定額 2 萬、目標 15 年後買房頭期款 300 萬。能承受中度波動,追求長期複利。

中風險15 年CAGR ≥ 8%
🧑‍🎓

新鮮人 Maggie

25 歲、第一份工作薪水 5 萬、每月投 1 萬、未來 30 年不需要動用。可以扛較大波動、追求最大化長期報酬。

高風險30 年CAGR ≥ 10%

2配置資產

以下是系統根據 persona 建議的起始配置,你可以微調權重。權重會自動歸一。

3回測驗證

用 2015-2026(約 11 年)的真實資料回測你的策略,看看對得起 persona 的需求嗎?

權益曲線 vs 100% SPY(大盤基準)

4三題挑戰 · 撰寫提案書

這三題是刻意設計成「論文等級」的提問,每題都要你動用 Lab 1~4 學到的概念來作答。 完成後匯出就是一份可交付的正式提案書。

🎓 Capstone 洞見 · 把五個 Lab 串成一條決策鏈

策略設計不是「找最高 Sharpe 的那一個」,而是「在 persona 的約束下、找一個你自己也能堅持的方案」。 這幾張卡解釋專業投資人在做提案書時會考慮的面向。

🧭

策略設計的 5 個層次(由內而外)

Persona(風險承受 / 期限 / 目標) → ② 資產選擇(哪些可投資標的符合目標) → ③ 建構法(等權 / 風險平價 / 最小變異…) → ④ 執行細節(再平衡頻率 / 成本 / 稅務) → ⑤ 監控機制(何時該 review / 何時該 exit)。 五層缺一不可,多數新手只看 ③。

自我檢查:你的提案書的挑戰 A、B、C 是否分別對應 ①+②、③+④、⑤?

🧭 五層結構化 persona
persona = {
    "name":    "退休族 Lucy",          # ① Persona
    "universe":["VTI","TLT","GLD"],    # ② 資產
    "builder": "risk_parity",          # ③ 建構法
    "rebal":   "QE", "cost_bps": 5,    # ④ 執行
    "stop":    {"mdd_breach": -0.20},  # ⑤ 監控
}
🎯

過標 ≠ 好策略:Goal Filtering vs Goal Optimization

Verdict 卡顯示 3 個 ✓/✗,但全部 ✓ 不代表策略最好。 例如 Lucy 目標 MDD ≤ 15%,某組合做到 MDD = 8%(遠優於目標)卻 CAGR 只有 3%(剛好過門檻), 另一組合 MDD = 14.5%、CAGR = 7%,後者其實對 Lucy 更合適(有現金流空間)。 KPI 是 filter,不是要 max 的目標函數。

親手驗:在 Step 2 微調權重,觀察「全部過標」時還有哪組更適合 persona 的 偏好(例如更穩定的 vol / 更低的 turnover)。

🎯 filter 而非 maximize
pass_all = (kpi["CAGR"] >= target["min_cagr"]
            and abs(kpi["MDD"]) <= target["max_mdd"]
            and kpi["Vol"] <= target["max_vol"])
# 只在「全過濾」的候選裡,挑 persona 偏好的那個(非最大 Sharpe)
📋

提案書三段式:說服力來自「推理鏈」而非「數字」

挑戰 A(合身性)→ 挑戰 B(執行)→ 挑戰 C(風險)。這個結構逼你: 先證明「為何值得做」,再證明「做得到」,最後證明「知道什麼會失敗」。 業界的 IPS (Investment Policy Statement) 本質就是這三段的放大版。 缺 C 是最常見的失敗模式——只報喜不報憂,客戶/老闆一眼看穿。

親手驗:寫完 A、B、C 後,重讀一次:若你是 persona 本人(而不是學生), 你會被這三段說服並交給對方管錢嗎?

📋 三段式結構
proposal = {
    "A_fit":      "為何合身:對齊 persona 的 MDD / 期限 / 現金流",
    "B_manage":   "如何執行:再平衡頻率 / 成本 / review cadence",
    "C_risk":     "最擔心什麼:量化 VaR/ES + 觸發停損規則",
}
assert all(proposal.values()), "缺 C 就是只報喜不報憂"  
🚧

Capstone 最常見的五個坑

① 忘記回答 persona 的現金流需求(Lucy 要提領); ② 基準選錯(Maggie 30 年投資期卻拿 SPY 做基準,應該拿 80/20 股債組合); ③ 只給樣本內績效,沒做 OOS 驗證; ④ 挑戰 C 寫成「通膨上升」這種萬用擋箭牌——必須量化才有說服力; ⑤ 提案書沒寫「停損條件」——好策略要定義什麼時候承認失敗。

自我檢查:匯出 Markdown 後讀一遍,五個坑你踩到幾個?

🚧 OOS + 停損條件
train = rets.loc["2015":"2021"]   # 訓練期(7 年)
test  = rets.loc["2022":]          # 樣本外(~4 年)
# 停損:滾動 12m MDD 若跌破目標 +5pp,啟動防守
roll_mdd = (eq / eq.rolling(252).max() - 1).rolling(252).min()
stop_flag = roll_mdd < -(target["max_mdd"] + 0.05)
📓
想看完整 pipeline 程式碼?
上方每張洞見卡都附 4~6 行對應 snippet。要看「persona → 權重 → 回測 → verdict → Markdown 提案書」串成的完整版, 在 lab5_capstone.ipynb 一鍵重現,並把 persona 換成你自己。
在 Colab 開啟 →