研究動機
傳統技術分析指標(MA、RSI)的參數通常是「業界慣例」,缺乏對個別標的的適應性。 我的碩論想探討:能不能用演化式搜尋,替每檔股票找到統計上更優的進出場參數?
PPTS 策略架構
PPTS(Price Profit Trading Strategy)的核心假設是:
股價在特定價格區間內的分布有可預測的均值回歸傾向。
四個主要參數:
- n_bins:價格區間分割數
- hold_days:持有天數上限
- profit_target:目標利潤率(%)
- entry_threshold:進場門檻(區間內相對位置)
參數空間的搜尋維度是 4,但每個維度的有效範圍很大, 純粹 grid search 的計算量不可行 → 這就是為什麼用 GA。
遺傳演算法設計
染色體編碼
每個個體是一個 4-tuple:
individual = [n_bins, hold_days, profit_target, entry_threshold]
# 例如: [8, 15, 0.03, 0.25]
適應度函數
在訓練集(2010–2018)上回測,計算:
fitness = Sharpe_ratio × (1 + win_rate) - max_drawdown_penalty
Sharpe ratio 負數時直接回傳 0,避免負適應度污染選擇壓力。
演化操作
- 選擇:Tournament selection(k=5),比賽制比輪盤更穩定。
- 交叉:Two-point crossover,保留局部參數搭配。
- 突變:Gaussian mutation,每個參數有 10% 機率加上小擾動。
- 世代:100 世代,族群大小 50。
結果觀察
本站的論文互動展示 可以即時觀察族群演化:
- 前 20 世代:最佳個體的 Sharpe ratio 快速提升(探索期)
- 20–60 世代:族群多樣性下降,趨向收斂(開採期)
- 60+ 世代:局部最優,偶爾突變跳出
跨標的差異:台積電(2330)的最佳 hold_days 集中在 5–10 天, 而鴻海(2317)的最佳配置更傾向更長持有(20–30 天)。這說明個別股票的最佳策略 差異顯著,支持了逐檔最佳化的必要性。
限制與未來方向
- 前視偏差:訓練集和測試集切分需要更嚴格的 walk-forward 驗證。
- 交易成本:目前模型未考慮滑價和手續費。
- 多因子整合:目前只用價格資訊,加入成交量或基本面可能改善。
完整程式碼和互動圖表在論文頁面。