Skip to content

Repository files navigation

我花九天建了一套台股量化交易系統,然後它誠實地告訴我:買 0050 就好

從 +211% 年化到 −8% 年化 — 一個散戶做量化研究的失敗報告


TL;DR

這是一個誠實記錄失敗的公開量化研究專案

2026 年 4 月,我用 9 天時間建了一套包含 142 個特徵、LightGBM + SHAP + FinBERT 情緒引擎、規則式 regime gate 的台股主動策略系統。

頭條 backtest 數字:年化 +211.8%、Sharpe 3.99

修正執行偏差後:年化 −8% 到 +5%、Sharpe 常常為負

在三輪嚴格 pre-commit 紀律的實驗下,我系統性地證明:以我當前的資源和技術、在 2018-2026 的歷史時段、在散戶實務執行條件下,我無法做出穩定超越 0050 Buy&Hold 的主動策略

最終決定:100% 0050 Buy&Hold 就好。

這份 repo 完整公開了整個失敗過程 — 程式碼、資料設計、三輪實驗報告、十層 Alpha 死亡模型、以及給未來研究者的 break-even alpha 公式。


📖 想先讀文章?

如果你對量化交易感興趣、正在學 ML 做交易、或已經做了但還沒賺錢 — 這兩份文件是我在這 9 天裡最想告訴過去的自己的話。


🗂️ Repo 導覽

📚 研究報告(從這裡開始)

文件 內容
article/ 公開文章(給一般讀者)
docs/PROJECT_FINAL_REPORT.md 完整技術結論報告(三輪實驗整合 + 10 層模型 + 文獻)
docs/ROUND_1_VERDICT.md Round 1:日頻 ML + ETF 輪動 + Revenue Event 三條路徑失敗
docs/ROUND_2_DESIGN.md / ROUND_2_VERDICT.md Round 2:Revenue Event + TTM 平滑(反直覺失敗)
docs/ROUND_3_DESIGN.md Round 3:90/10 Core-Satellite + Vol Targeting

💻 程式碼

模組 說明
data/ FinMind + yfinance + TWSE 資料管道
features/ 142 個特徵(技術、跨市場、籌碼、導數、情緒)
models/ LightGBM ranker + 機率校準 + SHAP 篩選
strategy/ Regime gate + 停損 + 資金管理
backtest/ Walk-forward 回測(6 個版本,每輪一個)
scripts/ 每個 round 的 CLI 入口
main.py Live 每日預測主入口

📊 範例輸出

output/reports/ 保留了每輪的 backtest 完整報告 — 數字是真的,包括所有失敗。


🎯 10 層 Alpha 死亡模型

這是本專案最重要的產出。三輪實驗 + 三方交叉驗證(Claude + Codex + web-search subagent)整合出的通用診斷框架

# 失敗層 核心機制 我的案例
1 執行摩擦 Raw alpha < TC + slippage Round 1 Daily ML
2 Universe 相關性 選股宇宙過於類似 benchmark Round 1 ETF
3 波動承受度 Alpha 真實但 MaxDD 超出承受 Round 1 Revenue Event
4 訊號處理 Smoothing 反而洗掉 edge Round 2 TTM
5 部位調節 Vol targeting + hard stops 讓衛星休眠 Round 3 Core-Satellite
6 資料真實性 Look-ahead / survivorship 初期 +211% 假象
7 Alpha Decay 已發表 anomaly 衰退 32-58% 動能因子
8 Multiple Testing N 次試誤致 deflated SR 下修 累積 20+ 實驗
9 Regime Shift 2020/2022/2024 alpha 符號不同 全時段
10 容量/擁擠 AUM 上去後滑價非線性惡化 未直接驗證

完整版本含學術文獻:docs/PROJECT_FINAL_REPORT.md


🧮 Break-Even Alpha 公式(動手前先算這個)

break_even_alpha = benchmark_return + TC + slippage + √(2 ln N) × σ_SR

以散戶做台股為例:

benchmark_return  = 20%     (0050 長期均值)
TC                = 0.585%  (來回)
slippage          = 0.3%    (小資金估)
N                 = 20      (你試過的策略數)
σ_SR              = 0.5
√(2 ln 20)        ≈ 2.45

break_even_alpha ≈ 22.1%

意義:如果你試了 20 個策略,最好的那個必須年化達到 22.1% 才剛好越過多重檢定的最低科學門檻。要真正有 alpha 證據,還要 × 3 ≈ 66%。

公式出處:Bailey & López de Prado 2014 的 Deflated Sharpe Ratio


💎 Epitaph

「若 alpha 只能在忽略成本、容量與風控時成立,它不是可部署優勢,只是樣本內現象。」

「一旦需要事後改參數才能過關,該淘汰的是策略,不是修改敘事。」

「下次動手寫 ranker 之前,先計算 break-even alpha。若估不到 3 倍這個數字,關掉 IDE,加碼 0050。」


🚀 如果你想重現實驗(進階)

1. 環境設置

git clone git@github.com:Zachariah9420/the-0050-project.git
cd the-0050-project
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -r requirements.txt

2. 設定 FinMind API token

FinMind 免費註冊取得 token,然後:

# Linux/macOS
export FINMIND_TOKEN="your_token_here"

# Windows PowerShell
$env:FINMIND_TOKEN = "your_token_here"

或建立 .env 檔案(已在 .gitignore):

FINMIND_TOKEN=your_token_here

3. 下載資料(首次需要,約 10-15 分鐘)

python main.py --download-only

4. 重現三輪實驗

# Round 1a: 日頻 ML (hold=10)
python main.py --backtest-ranker --start 2018-01-01 --end 2026-04-15 --hold 10

# Round 1b: ETF 輪動
python scripts/run_etf_rotation.py

# Round 1c: Revenue Event YoY
python scripts/run_revenue_rotation.py

# Round 2: TTM + filter
python scripts/run_revenue_round2.py

# Round 3: Core-Satellite
python scripts/run_core_satellite.py

所有 backtest 會輸出到 output/reports/


⚠️ 免責聲明

這不是投資建議。

本 repo 記錄的是一個失敗的研究專案。所有程式、分析、結論均以「現狀」提供,僅供教育與研究目的。

作者明確得出「100% 0050 Buy&Hold 是當前最佳配置」的結論 — 這是個人研究發現,不是給任何人的投資建議

過去績效不保證未來表現。做任何投資決策前,請:

  1. 自己研究
  2. 諮詢合格的理財顧問
  3. 清楚了解風險承受度

🤝 回饋與討論

如果你:

  • 發現了邏輯漏洞
  • 想分享你自己的量化失敗/成功經驗
  • 對十層模型有補充
  • 有能打敗 0050 的想法想試驗

歡迎開 Issue 或直接聯絡。

這個 repo 的目的不是終結討論,是開啟一個誠實的對話。


📜 License

CC BY 4.0

文章、程式碼、分析報告都採用 Creative Commons Attribution 4.0 International License。

你可以:轉載、翻譯、引用、商業使用 唯一要求:註明來源(作者 + 本 repo 連結)


🙏 致謝

  • Claude (Anthropic) — 專案主要協作 AI,9 天的研究夥伴
  • Codex (OpenAI) — 獨立 AI reviewer,挑戰了多個錯誤解讀並重跑資料驗證
  • Web-search subagent — 帶入學術文獻外部觀點
  • FinMind — 提供免費台股資料 API
  • Marcos López de Prado — 《Advances in Financial Machine Learning》一書影響整個專案的研究紀律
  • Campbell Harvey — 他 2017 AFA Presidential Address 是這個專案靈魂的學術源頭

作者:Zachariah Liu 專案狀態:正式結案(2026-04-21) 最終建議:100% 0050 Buy&Hold

研究者的勝利不是找到 alpha,是在 pre-commit 紀律下保持誠實。

About

9 天的散戶量化失敗記錄 — 從 +211% 年化到認輸買 0050 的誠實報告

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages