Communitygithub.com

jwd2a/skills

分析 Justin 的股票投資組合,並以 S&P 500 (SPY) 作為基準進行比較。

skills 是什麼?

Portfolio Analytics Skill 是一個專為 Justin 設計的投資組合分析工具,能夠對股票投資組合進行全面深入的技術分析,並以 S&P 500 指數(SPY)作為基準比較績效。此技能支援從 Fidelity CSV 導入持倉、計算年化波動率、相關性矩陣、Sortino 比率、多樣化分數以及與 SPY 的成長對比。除了基本的分析功能,它還包含追蹤止損監控(根據 beta 調整波動率)、多頻率報告(每日、每週、每月、每季、每年)以及動能篩選器(掃描 Yahoo Finance 的動能股)和輪動追蹤器(記錄進出場與績效)。此技能主要在 Python 環境中執行,需要 AlphaVantage 或 Finnhub 的 API 金鑰,適合需要自動化監控其個人投資組合並獲得可操作洞察的開發者或零售投資者。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jwd2a/skills/tree/HEAD/portfolio

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

投資組合分析技能

分析 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(貨幣市場基金)已從分析中排除

相關技能