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(マネーマーケット)は分析から除外