投資組合分析技能
分析 Justin 的股票投資組合,並以 S&P 500 (SPY) 作為基準進行比較。
檔案
portfolio.py— 用於管理持倉的 Portfolio 類別analyze.py— 分析引擎(波動率、相關性、Sortino、多樣化、成長)prices.py— 價格擷取模組
使用方式
從 Fidelity CSV 更新投資組合
from portfolio import Portfolio
p = Portfolio()
p.load_from_fidelity_csv("/path/to/export.csv")
p.save()
執行分析
python analyze.py # 90 天預設
python analyze.py --days 180 # 自訂期間
python analyze.py --json portfolio.json --days 60
輸出
Slack 格式的文字,包含:
- 各持倉與投資組合波動率(年化)
- 相關性矩陣
- 多樣化分數
- Sortino 比率(0% 無風險利率)
- 與 SPY 基準的成長比較
追蹤止損監控
trailing_stops.py — 根據 Beta 調整波動率的追蹤止損,適用於每個持倉。
運作方式
- 計算 30 天滾動年化波動率及對 SPY 的 Beta
- 追蹤每個持倉的歷史高點
- 計算調整後跌幅 = 自高點以來的原始跌幅 − (Beta × SPY 自高點以來的跌幅)
- 當調整後跌幅連續兩個交易日超過 1.5 倍日波動率時發出警報
- 狀態保存在
stops_state.json
使用方式
python trailing_stops.py --status # 顯示所有持倉的當前水平
python trailing_stops.py --check # 每日監控(觸發時發出警報)
輸出
--status:當前價格、追蹤高點、波動率、Beta、距止損水平的距離--check:若觸發則發出警報,否則顯示「一切正常」。警報後重置狀態。
報告
report.py — 多頻率的投資組合報告,輸出為 Slack 格式。
使用方式
python report.py --cadence daily # 短日報摘要(Finnhub 即時報價)
python report.py --cadence weekly # 週績效 + 追蹤止損
python report.py --cadence monthly # 完整分析,30 天回溯期
python report.py --cadence quarterly # 90 天 + 動能趨勢 + 權重偏移
python report.py --cadence yearly # 252 天 + 年度排名 + 多樣化趨勢
各頻率詳細說明
- 每日:約 10-15 行。即時報價、持倉變動、最佳/最差、SPY 比較
- 每週:約 20 行。週變動、追蹤止損距離、波動率
- 每月:完整套件 — 波動率、相關性矩陣、Sortino、多樣化、與 SPY 成長比較、損益、追蹤止損
- 每季:每月 + 動能趨勢(加速/減速)、相對於等權重的權重偏移
- 每年:每月 + 年度排名、按季度劃分的多樣化分數趨勢
資料來源
- 每日:Finnhub 即時報價(無速率限制問題)
- 週以上:AlphaVantage 歷史資料(為符合速率限制,呼叫間隔 3 秒)
動能篩選器
momentum_screener.py — 使用 Yahoo Finance 資料掃描市場中的頂尖動能股。
使用方式
python3 momentum_screener.py # 預設:前 20 名(10 日動能)
python3 momentum_screener.py --lookback 5 # 5 日動能
python3 momentum_screener.py --lookback 20 # 20 日(1 個月)
python3 momentum_screener.py --top 10 # 前 10 名結果
python3 momentum_screener.py --universe bullpen # 僅掃描儲備股
python3 momentum_screener.py --universe sp500 # 完整的 S&P 500
python3 momentum_screener.py --min-volume 500000 # 最低日均成交量篩選
python3 momentum_screener.py --compare # 在結果中標記當前持倉
python3 momentum_screener.py --json # JSON 格式輸出
輸出
每檔股票:原始報酬率、年化波動率、風險調整後動能、上漲日一致性、平均成交量。
輪動追蹤器
rotation_tracker.py — 記錄投資組合的進出場並追蹤輪動績效。
使用方式
python3 rotation_tracker.py --log GOOGL exit 311.49 "追蹤止損觸發"
python3 rotation_tracker.py --log POWL enter 85.20 "動能篩選器選股"
python3 rotation_tracker.py --stats # 交易統計(勝率、平均盈虧等)
python3 rotation_tracker.py --json # JSON 格式輸出
策略文件
請參閱 docs/finance/STRATEGY.md 以取得完整的動能輪動策略文件。
備註
- 使用 AlphaVantage 取得歷史價格(免費方案每分鐘 5 次呼叫,呼叫間隔 3 秒)
- 投資組合資料以 JSON 格式儲存在
~/hex/skills/portfolio/portfolio.json - SPAXX(貨幣市場基金)已從分析中排除