台灣 ETF 0050 (元大台灣50) Sep-Dec 累積策略回測、實際交易稽核、多策略比較的完整分析工具集。
v6 重要更新: 發現並修正 yfinance 0050.TW 在 2013/2014 邊界的價格斷層 (75% 異常跌幅), 所有回測數據已重新計算。詳見 Postmortem。
stock/
├── CLAUDE.md # 開發規範與已知問題
├── README.md # 本文件
│
├── 回測與分析腳本
│ ├── compare_0050.py # 主程式:三策略比較(含數據修正)
│ ├── backtest_0050.py # 單策略回測(含數據修正)
│ ├── backtest_modified.py # 修改版策略回測
│ ├── audit_trades.py # 實際交易 vs 回測稽核
│ ├── verify_claims.py # 績效聲明驗證
│ ├── whatif_analysis.py # 假設情境分析
│ ├── verify_yfinance_data.py # yfinance 數據品質驗證
│ └── compute_seasonal.py # 季節性反彈統計
│
├── 圖表腳本
│ ├── chart_matplotlib.py # Matplotlib 日線圖
│ ├── chart_plotly.py # Plotly 互動圖
│ ├── chart_seaborn.py # Seaborn 統計圖
│ ├── chart_intraday_*.py # 日內圖表 (Bloomberg/Plotly/Seaborn/Wave)
│ ├── chart_matplotlib_30m.py # 30 分鐘 K 線
│ ├── chart_matplotlib_60m.py # 60 分鐘 K 線
│ └── elliott_wave_backtest.py # 艾略特波浪回測
│
├── data/ # 輸入資料
│ ├── real_trades.csv # 實際券商交易紀錄
│ └── *.jpg, *.png # 交易截圖
│
├── output/ # 回測輸出
│ ├── comparison_summary.csv # 三策略績效比較
│ ├── strategy_yearly.csv # 策略年度績效
│ ├── strategy_trades.csv # 策略交易紀錄
│ ├── *_equity.csv # 權益曲線
│ └── *.png # 績效圖表
│
├── reports/ # 簡報檔案
│ └── 0050_audit_presentation_v6.pptx # 最新版(含數據修正)
│
├── docs/ # 文件
│ └── postmortem/ # 事後分析
│ └── 2026-02-19_yfinance_price_discontinuity.md
│
└── workspace/ # 簡報建置工具
├── assets/ # 簡報背景素材
└── v6/ # v6 建置環境(最新)
├── build.js # Node.js 建置腳本
└── slides/*.html # HTML 投影片模板
# Python (via WSL on Windows)
pip install yfinance pandas numpy matplotlib
# Node.js (簡報建置)
npm install -g pptxgenjs playwright sharppython compare_0050.py輸出: output/ 目錄下的 CSV 報表與 PNG 圖表。
python compare_0050.py --real-trades data/real_trades.csvpython verify_yfinance_data.py # 檢查 yfinance 數據是否有斷層
python compute_seasonal.py # 計算季節性反彈統計NODE_PATH=$(npm root -g) node workspace/v6/build.jsSep-Dec 累積策略 — 每年 9-12 月在訊號觸發時分批買入 0050 ETF。
- 進場條件: 9-12 月,週 Stochastic K < 50 或 加權指數回檔 ≥ 10%
- 分批建倉: 最多 3 碼 (30% + 30% + 40% 初始資金)
- 出場條件: +30% 獲利賣 70%,+50% 獲利清倉
- 基準比較: Buy & Hold、修改策略(保留 10% 永久部位)
| 指標 | 季節性策略 | 修改策略 | 買入持有 |
|---|---|---|---|
| 總報酬 | 292.29% | 537.86% | 1405.48% |
| CAGR | 8.34% | 11.48% | 17.22% |
| 最大回撤 | -24.63% | -29.37% | -33.82% |
| Sharpe | 1.505 | 1.780 | 0.929 |
| Sortino | 1.871 | 2.485 | 1.261 |
yfinance 的 0050.TW 數據在 2013/2014 邊界存在 75% 價格斷層。
compare_0050.py 和 backtest_0050.py 已內建 fix_price_discontinuities() 自動修正。
詳見: Postmortem