股價創新高動能
本篇介紹兩種基於股價創新高的動能策略,透過 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()