文件
開啟 Studio

策略範例

股價創新高動能

本頁內容4

突破歷史區間高點的股票,短期內延續上漲的機率明顯高於市場平均,也就是「強者恆強」的動能效應。這一頁有兩個版本:創 200 日新高就買,以及要求新高持續出現的延續版,適合想追蹤強勢股、並用停損控制風險的人。

策略邏輯

  • 選股範圍:上市與上櫃普通股(data.universe(market='TSE_OTC')),排除興櫃、全額交割股與特殊證券。
  • 進場:收盤價等於近 200 個交易日的最高價。200 日約等於台股一整年的交易日,對應「年度新高」。
  • 延續版多一個條件:近 5 個交易日內至少 3 日創前 200 日新高,過濾只有單日觸及新高就回落的股票。
  • 換股:每兩週一次。
  • 風控:單檔最大持股比例 20%,個股下跌 20% 停損。

完整程式碼

new_high.py
from finlab.backtest import sim
from finlab import data

# 標的範圍為上市櫃普通股
with data.universe(market='TSE_OTC'):
    # 取得收盤價
    close = data.get("price:收盤價")
    # 股價創近 200 日新高
    position = close == close.rolling(200).max()
    # 每兩週再平衡,單檔最大持股比例限制 20%,停損 20%
    report = sim(
        position,
        resample="2W",
        position_limit=0.2,
        stop_loss=0.2,
        name="股價創新高策略",
        upload=False,
    )
    report.display()

report.display() 會畫出完整的回測報告。

怎麼調整

  • 新高天數 rolling(200).max():取 200 個交易日的高點,只有股價觸及區間最高點時條件才成立。200 日相當於一年期新高,與美股 52 週高點突破的經典設定接近。
  • 延續條件 sustain(5, 3):要求近 5 個交易日內至少 3 日創新高,可過濾只單日打到高點便回落的假突破,留下真正維持強勢的股票。這個版本更挑剔,通常持股檔數較少但品質較高。
  • 換股頻率 resample='2W':每兩週換股。較長的持有期給突破部位發酵時間,也能降低換股頻率與交易成本。
  • 單檔上限 position_limit=0.2:避免過度集中於少數強勢股。
  • 停損 stop_loss=0.2:個股下跌 20% 時自動停損,避免假突破的回檔吃掉整體績效。

下一步

↑↓ 選擇 Enter 開啟 Esc 關閉