我的投資策略實戰
前 4 個 Lab 你學到了算績效、量風險、建投組、評回測。現在把所有工具串起來—— 為一個具體「投資人角色」設計一套策略,產出一份正式的「投資策略提案書」。
開始之前
🕹️ 你要做什麼
- 選 1 個 persona:退休族 Lucy / 上班族 Kevin / 新鮮人 Maggie —— 每個 persona 有不同的目標(CAGR/MDD/Vol)。
- 系統自動帶出建議權重,你可以在滑桿上微調(會自動歸一到 100%)。
- 回測 vs SPY 基準,看「verdict 卡」的三個 ✓/✗ —— 有沒有同時達標。
- 完成三題挑戰:A 為何適合、B 如何管理、C 最擔心的風險與對策。
- 匯出「投資策略提案書」Markdown,交給老師或自己存檔。
- 進階:打開 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% 以上的回撤。目標:保本 + 穩定現金流。
中堅上班族 Kevin
38 歲、年收入 120 萬、定期定額 2 萬、目標 15 年後買房頭期款 300 萬。能承受中度波動,追求長期複利。
新鮮人 Maggie
25 歲、第一份工作薪水 5 萬、每月投 1 萬、未來 30 年不需要動用。可以扛較大波動、追求最大化長期報酬。
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 = {
"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)。
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 後讀一遍,五個坑你踩到幾個?
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)
上方每張洞見卡都附 4~6 行對應 snippet。要看「persona → 權重 → 回測 → verdict → Markdown 提案書」串成的完整版, 在
lab5_capstone.ipynb 一鍵重現,並把 persona 換成你自己。