Skip to content

lufftw/stock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

0050 策略回測與稽核分析

台灣 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 sharp

使用方式

策略回測(三策略比較)

python compare_0050.py

輸出: output/ 目錄下的 CSV 報表與 PNG 圖表。

含實際交易比較

python compare_0050.py --real-trades data/real_trades.csv

數據品質驗證

python verify_yfinance_data.py    # 檢查 yfinance 數據是否有斷層
python compute_seasonal.py        # 計算季節性反彈統計

建置簡報

NODE_PATH=$(npm root -g) node workspace/v6/build.js

策略說明

Sep-Dec 累積策略 — 每年 9-12 月在訊號觸發時分批買入 0050 ETF。

  • 進場條件: 9-12 月,週 Stochastic K < 50 或 加權指數回檔 ≥ 10%
  • 分批建倉: 最多 3 碼 (30% + 30% + 40% 初始資金)
  • 出場條件: +30% 獲利賣 70%,+50% 獲利清倉
  • 基準比較: Buy & Hold、修改策略(保留 10% 永久部位)

修正後績效摘要 (v6, 2009-2026)

指標 季節性策略 修改策略 買入持有
總報酬 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 價格斷層(已修正)

yfinance 的 0050.TW 數據在 2013/2014 邊界存在 75% 價格斷層。 compare_0050.pybacktest_0050.py 已內建 fix_price_discontinuities() 自動修正。

詳見: Postmortem

About

stock

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •