Communitygithub.com

jwd2a/skills

ジャスティンの株式ポートフォリオを分析し、S&P 500 (SPY) をベンチマークとして比較します。

skills とは?

このスキルは、ジャスティンの個人株式ポートフォリオの包括的な分析とモニタリングを提供します。主な機能には、Fidelity CSVからのポートフォリオインポート、ボラティリティ・相関マトリックス・Sortino比率・多様化スコアなどの高度な分析、トレーリングストップ監視、マルチカデンスレポート(日次・週次・月次・四半期・年次)、市場全体のモメンタムスクリーニング、ポートフォリオ出入りの回転トラッキングが含まれます。データソースとしてAlphavantage(分単位5リクエスト制限)とFinnhub(無制限リアルタイムクオート)を利用し、Slack形式のテキストで結果を出力します。特にS&P 500 (SPY) をベンチマークとした成長比較が特徴で、デイトレードから長期投資まで幅広い投資スタイルに対応します。Pythonスクリプト群で構成され、CLIから直接実行可能です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jwd2a/skills/tree/HEAD/portfolio

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Portfolio Analytics Skill

ジャスティンの株式ポートフォリオを分析し、S&P 500 (SPY) をベンチマークとして比較します。

ファイル

  • portfolio.py — ポジション管理のためのポートフォリオクラス
  • 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 — 各ポジションのベータ調整済みボラティリティトレーリングストップ。

動作の仕組み

  • 30日間のローリング年率換算ボラティリティとSPYに対するベータを計算
  • ポジションごとにトレーリング高値を追跡
  • 調整後下落額 = 高値からの純下落額 − (ベータ × SPYの高値からの下落額)
  • 調整後下落額が日次ボラティリティの1.5倍を2営業日連続で超えた場合に警告
  • 状態はstops_state.jsonに永続化

使用方法

python trailing_stops.py --status          # 全ポジションの現在の水準を表示
python trailing_stops.py --check           # 日次監視(違反時に警告を発火)

出力

  • --status: 現在価格、トレーリング高値、ボラティリティ、ベータ、ストップ水準までの距離
  • --check: 違反があれば警告、なければ「all clear」。警告後は状態をリセット。

レポート

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との成長比較、P/L、トレーリングストップ
  • 四半期: 月次 + モメンタムトレンド(加速/減速)、均等ウェイトからのウェイトドリフト
  • 年次: 月次 + 年間ランキング、四半期別多様化スコアトレンド

データソース

  • 日次: Finnhubライブクオート(レート制限問題なし)
  • 週次以上: AlphaVantage履歴データ(レート制限対策として呼び出し間に3秒遅延)

モメンタムスクリーナー

momentum_screener.py — Yahoo Financeデータを使用して市場からトップモメンタム銘柄をスキャン。

使用方法

python3 momentum_screener.py                          # デフォルト: 10日モメンタムでトップ20
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を使用(無料枠は1分あたり5回、呼び出し間に3秒遅延)
  • ポートフォリオデータはJSONとして ~/hex/skills/portfolio/portfolio.json に保存
  • SPAXX(マネーマーケット)は分析から除外

関連スキル