"""多因子「高殖利率」選股策略 — 比高股息 ETF 更聰明的高股息曝險。

實測結果（2010-02 ~ 2026-06，月調倉、等權重、未計手續費）：
    年化報酬 CAGR 17.67%、夏普 1.13、最大回撤 -28.51%
對照：純高殖利率（只買殖利率前 30%）只有 10.81%、夏普 0.70；
0056 同期長線年化約 13.5%。但若只看總報酬，含息 0050 長線約 20% 仍最高
——高股息本質是「現金流＋平穩」的風格，不是追求最高總報酬。

跑法：先 pip install finlab，執行時 finlab.login() 會自動引導你完成登入。
"""
import finlab
from finlab import data
from finlab.backtest import sim

finlab.login()

# 三個低相關因子：高殖利率（便宜的現金流）、營收成長、價格動能
dividend_yield = data.get("price_earning_ratio:殖利率(%)")
revenue_yoy = data.get("monthly_revenue:去年同月增減(%)")
close = data.get("price:收盤價")
momentum = close / close.shift(60)  # 近 60 個交易日（約 3 個月）動能

# 高殖利率前 30%，且營收還在成長、股價已止穩往上才買進（維持分散約 120 檔）
position = (
    (dividend_yield.rank(axis=1, pct=True) > 0.7)  # 殖利率全市場前 30%
    & (revenue_yoy > 0)                             # 月營收年增為正
    & (momentum > 1)                                # 近三個月股價站上
)

report = sim(position, resample="M", name="多因子高殖利率")
report.display()
