每日從台灣上市股票(成交值前 500 檔)中,以兩個策略各篩出最多 2 檔候選股, 並以 200 萬本金、最高 2 倍槓桿進行歷史回測驗證。
pip install pandas numpy requests
python3 download_data.py # 下載 3 年日線 (TWSE OpenAPI 清單 + Yahoo Finance 歷史價)
python3 backtest.py --leverage 2 # 回測兩策略
python3 daily_picks.py # 輸出今日訊號 → 明日進場候選共同條件:股價 > 10 元、日成交值 > 5 千萬、大盤濾網(加權指數收盤 > 60 日均線才開新倉)。
- 多頭排列(close > MA20 > MA60,MA20/MA60 皆上揚)
- 近 20 日漲幅 15–60%(動能股但不過熱)
- 拉回確實觸及 MA20 後當日收回 MA20 之上
- 停損 2 ATR,停利 1.8R,最長持有 30 日(36 組參數掃描選定,1.8R 整欄皆獲利)
- 收盤突破前 60 日高點
- 成交量 ≥ 2.5 倍 20 日均量
- 收在當日 K 棒上緣 25% 內、近 20 日漲幅 ≤ 60%(避開噴出末端)
- 初始停損 1.5 ATR,Chandelier 移動停利(最高收盤 − 3 ATR),最長持有 60 日
- 進場:訊號日次一交易日開盤價
- 成本:手續費 0.1425% 雙邊、證交稅 0.3%、滑價 0.1% 單邊
- 部位:單筆風險 = 權益 1%,整股(1000 股)為單位,總名目曝險 ≤ 權益 × 槓桿
- 每策略每日最多新進 2 檔
| 檔案 | 說明 |
|---|---|
download_data.py |
下載股票清單與日線資料至 data/ |
strategies.py |
兩個策略的訊號邏輯與技術指標 |
backtest.py |
組合層級回測引擎 |
daily_picks.py |
每日選股輸出(含停損價與建議股數) |
sweep_a.py |
策略 A 參數掃描工具 |
組合 (A 50% + B 50% 獨立資金池, 200 萬本金):
| 槓桿 | 總報酬 | 年化 | 最大回撤 | 期末權益 |
|---|---|---|---|---|
| 1x (建議) | +35.6% | +10.7% | 19.1% | 2,712,140 |
| 2x | +29.8% | +9.1% | 27.8% | 2,595,502 |
各策略 (子帳戶 100 萬, 2x 槓桿上限):
| 策略 | 交易數 | 勝率 | 獲利因子 | 子帳報酬 | 最大回撤 |
|---|---|---|---|---|---|
| A 強勢拉回 | 150 | 45.3% | 1.28 | +21.8% | 12.4% |
| B 爆量突破 | 364-457 | ~24% | 1.12-1.24 | +37~49% | 33-46% |
設計重點:
- A/B 獨立資金池: B 的連續停損期不會拖垮 A
- B 不設回撤暫停 (靠停損與部位上限控制), 因其獲利依賴度過低潮後的大反彈
- 1x 槓桿整體優於 2x: B 的同步停損期在槓桿下損失放大
回測結果不代表未來績效;槓桿會放大虧損。實單前建議先以小部位驗證, 並注意 Yahoo 資料未含除權息調整造成的訊號誤差。