跳轉到

股價創新高動能

本篇介紹兩種基於股價創新高的動能策略,透過 data.universe(market='TSE_OTC') 限定標的範圍為上市櫃普通股。

股價創新高動能

選出股價創近 200 日新高的股票,每兩週再平衡,單檔最大持股比例限制 20%,並設定 20% 停損。

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()

創新高延續動能策略

在上一個策略的基礎上加入 sustain(5, 3) 條件:近 5 日內有 3 日以上的股價創前 200 日新高。這個條件可以過濾掉只有單日觸及新高就回落的標的,篩選出持續維持在高檔的強勢股。

from finlab.backtest import sim
from finlab import data

with data.universe(market='TSE_OTC'):
    close = data.get("price:收盤價")
    # 近 5 日內有 3 日以上的股價創前 200 日新高
    position = (close == close.rolling(200).max()).sustain(5, 3)
    report = sim(position, resample="2W", position_limit=0.2, stop_loss=0.2, name="創新高延續動能策略", upload=False)
    report.display()