stock-portfolio
ポートフォリオ管理スキル
$ARGUMENTS を解析してコマンドを判定し、以下のコマンドを実行してください。
実行コマンド
python3 /Users/kikuchihiroyuki/stock-skills/.claude/skills/stock-portfolio/scripts/run_portfolio.py <command> [args]
コマンド一覧
snapshot -- PFスナップショット
現在価格・損益・通貨換算を含むポートフォリオのスナップショットを生成する。
python3 .../run_portfolio.py snapshot
buy -- 購入記録追加
python3 .../run_portfolio.py buy --symbol <sym> --shares <n> --price <p> [--currency JPY] [--date YYYY-MM-DD] [--memo テキスト] [--yes]
--yes (-y) を省略すると購入内容の確認プレビューを表示して終了する。--yes を指定すると確認をスキップして直接記録する(KIK-444)。
sell -- 売却記録
python3 .../run_portfolio.py sell --symbol <sym> --shares <n> [--price <売却単価>] [--date YYYY-MM-DD] [--yes]
--yes (-y) を省略すると売却内容の確認プレビュー(取得単価・推定実現損益)を表示して終了する。--yes を指定すると確認をスキップして直接記録する(KIK-444)。
--price を指定すると実現損益・損益率・税引後概算を計算して表示し、data/history/trade/*.json に保存する(KIK-441)。
review -- 売買パフォーマンスレビュー (KIK-441)
過去の売却記録(--price 付きで記録したもの)から損益統計を集計して表示する。
python3 .../run_portfolio.py review [--year 2026] [--symbol NVDA]
出力内容:
- 取引履歴テーブル(銘柄・売却日・株数・取得単価・売却単価・保有日数・実現損益・損益率)
- 統計(取引件数・勝率・平均リターン・平均保有期間・合計実現損益)
analyze -- 構造分析
地域/セクター/通貨/規模のHHI(ハーフィンダール指数)を算出し、ポートフォリオの偏りを分析する。規模別構成(大型/中型/小型/ETF/不明)テーブルを含む4軸分析(KIK-438, KIK-469 P2: ETF分類)。ETFはセクター「ETF」、規模「ETF」として独立分類される。
python3 .../run_portfolio.py analyze
health -- ヘルスチェック
保有銘柄の投資仮説がまだ有効かをチェックする。テクニカル(SMA50/200, RSI, ゴールデンクロス/デッドクロス検出)とファンダメンタル(変化スコア、株主還元安定度)の多軸で3段階アラートを出力。小型株は自動的に感度を引き上げ(KIK-438)。
python3 .../run_portfolio.py health
テクニカル分析(KIK-356/374/438):
- SMA50/200 のトレンド判定(上昇/横ばい/下降)
- ゴールデンクロス/デッドクロス検出: 60日 lookback でクロスイベントを検出し、発生日と経過日数を表示
- 小型株クロスルックバック短縮(KIK-438): 小型株は lookback=30日で直近の変動を早期検出
株主還元安定度(KIK-403):
- 配当+自社株買いの総還元率から安定度を評価(✅安定高還元/📈増加傾向/⚠️一時的高還元/📉減少傾向)
- 一時的高還元(temporary)→ 早期警告に昇格
- 減少傾向(decreasing)→ アラート詳細に理由追加
- 長期適性判定に総還元率(配当+自社株買い)を使用
小型株アロケーション(KIK-438):
- 銘柄ごとに時価総額から規模分類(大型/中型/小型/不明)し
[小型]バッジを表示 - 小型株は EARLY_WARNING → CAUTION に自動エスカレーション
- PF全体の小型株比率を算出し、>25% で警告、>35% で危険を表示
ETFヘルスチェック(KIK-469 Phase 2):
- 個別株とETFのテーブルを分離表示
- ETFテーブル: 銘柄/損益/トレンド/経費率/AUM/ETFスコア/アラート
- 個別株テーブル: 従来通り(変化の質/長期適性/還元安定度)
アラートレベル:
- 早期警告: SMA50割れ / RSI急低下 / 変化スコア1指標悪化 / 一時的高還元
- 注意: SMA50がSMA200に接近 + 指標悪化 / 変化スコア複数悪化 / 小型株のEARLY_WARNING昇格
- 撤退: デッドクロス検出 / トレンド崩壊 + 変化スコア悪化
adjust -- ポートフォリオ調整アドバイザー (KIK-496)
ヘルスチェック結果 + マーケットレジーム判定から、17ルール(P1-P10: ポジション別、F1-F7: PF全体)で具体的な調整アクション(SELL/SWAP/ADD/TRIM_CLASS/FLAG)を生成する。
python3 .../run_portfolio.py adjust [--full]
CLIオプション:
--full: フル分析モード(集中度・相関分析も含む。API負荷が高い)
出力:
- マーケットレジーム(bull/bear/crash/neutral)— SMA50/200、RSI、ドローダウンから判定
- HIGH/MEDIUM/LOW 優先度別のアクションテーブル(アクション種別/対象/理由/ルールID)
- サマリー(アクション件数)
レジーム補正: crash 時は urgency を1段階引き上げ。bear 時は小型株・下降トレンド系ルールを引き上げ。
rebalance -- リバランス提案
現在のポートフォリオ構造を分析し、集中リスクの低減と目標配分への調整案を提示する。
python3 .../run_portfolio.py rebalance [options]
CLIオプション:
--strategy defensive|balanced|aggressive(デフォルト: balanced)--reduce-sector SECTOR(例: Technology)--reduce-currency CURRENCY(例: USD)--max-single-ratio RATIO(例: 0.15)--max-sector-hhi HHI(例: 0.25)--max-region-hhi HHI(例: 0.30)--additional-cash AMOUNT(円, 例: 1000000)--min-dividend-yield YIELD(例: 0.03)
forecast -- 推定利回り
保有銘柄ごとにアナリスト目標価格 or 過去リターン分布から12ヶ月の期待リターンを3シナリオ(楽観/ベース/悲観)で推定する。バリュートラップ警告・TOP/BOTTOM ランキング付き。
python3 .../run_portfolio.py forecast
推定手法:
- アナリスト法: アナリスト目標株価 + 配当利回り + 自社株買い利回り(株主還元込み)
- 過去リターン法: ETF等アナリストカバレッジなし銘柄は過去CAGR + 標準偏差で推定(KIK-469 P2: ETFは年率ボラティリティ表示 +
[ETF]バッジ付き) - 業界カタリスト調整(KIK-433, Neo4j 接続時): 同セクターの直近
growth_driverカタリスト数 × 1.7% を楽観シナリオに加算、riskカタリスト数 × 1.7% を悲観シナリオから減算(上限各 10%)
出力構成(KIK-390):
- ポートフォリオ全体の3シナリオ利回り・損益額テーブル
- 注意銘柄セクション(バリュートラップ警告のある銘柄を集約)
- 期待リターン TOP 3 / BOTTOM 3 ランキング
- 銘柄別詳細(アナリスト目標/Forward PER/ニュース件数/Xセンチメント/3シナリオ)
what-if -- What-Ifシミュレーション (KIK-376 / KIK-451)
銘柄の追加・売却・スワップをシミュレーションし、ポートフォリオへの影響をBefore/After比較で表示する。
# 追加のみ(従来)
python3 .../run_portfolio.py what-if --add "SYMBOL:SHARES:PRICE[,...]"
# スワップ(売却して購入)(KIK-451)
python3 .../run_portfolio.py what-if --remove "SYMBOL:SHARES[,...]" --add "SYMBOL:SHARES:PRICE[,...]"
# 売却のみシミュレーション (KIK-451)
python3 .../run_portfolio.py what-if --remove "SYMBOL:SHARES[,...]"
CLIオプション:
--add: 追加銘柄リスト(任意)。形式:SYMBOL:SHARES:PRICEをカンマ区切り--remove: 売却銘柄リスト(任意)。形式:SYMBOL:SHARESをカンマ区切り(価格不要・時価で試算)--addと--removeのどちらか一方は必須
出力:
- [売却時] 売却候補のコンテキスト(KIK-470):
--remove指定時、シミュレーション前にスクリーニング出現回数・投資メモ・リサーチ履歴を自動表示(Neo4j接続時) - Before/After のセクターHHI・地域HHI・通貨HHI比較
- 追加銘柄の基本情報(PER/PBR/配当利回り/ROE)
- [スワップ時] 売却銘柄テーブル(銘柄・株数・売却代金試算)
- [スワップ時] 資金収支(購入必要資金 / 売却代金試算 / 差額)
- [スワップ時] 売却銘柄ヘルスチェック(売却対象のアラート状況)
- 判定ラベル: 推奨 / 注意して検討 / 非推奨(スワップ時は「このスワップは推奨」等)
- ETF品質評価(KIK-469 P2): ETF追加時にETFスコアを判定に反映(品質良好≥75、品質低<40で警告)
backtest -- バックテスト
蓄積されたスクリーニング結果からリターンを検証し、ベンチマーク(日経225/S&P500)と比較する。
python3 .../run_portfolio.py backtest [options]
CLIオプション:
--preset PRESET: 検証対象のスクリーニングプリセット(例: alpha, value)--region REGION: 検証対象の地域(例: jp, us)--days N: 取得後N日間のリターンを検証(デフォルト: 90)
出力:
- スクリーニング日別の平均リターン
- ベンチマーク比較(超過リターン)
- 勝率・平均リターン・最大リターン/最大損失
simulate -- 複利シミュレーション
現在のポートフォリオを基に、複利計算で将来の資産推移をシミュレーションする。forecast の期待リターン + 配当再投資 + 毎月積立を複利で計算し、楽観/ベース/悲観の3シナリオで表示。
python3 .../run_portfolio.py simulate [options]
CLIオプション:
--years N(シミュレーション年数, デフォルト: 10)--monthly-add AMOUNT(月額積立額, 円, デフォルト: 0)--target AMOUNT(目標額, 円, 例: 15000000)--reinvest-dividends(配当再投資する, デフォルト: ON)--no-reinvest-dividends(配当再投資しない)
list -- 保有銘柄一覧
portfolio.csv の内容をそのまま表示する。
python3 .../run_portfolio.py list
自然言語ルーティング
自然言語→スキル判定は .claude/rules/intent-routing.md を参照。
制約事項
- 日本株: 100株単位(単元株)
- ASEAN株: 100株単位(最低手数料 3,300円)
- 楽天証券対応(手数料体系)
- portfolio.csv のパス:
.claude/skills/stock-portfolio/data/portfolio.csv
出力
結果はMarkdown形式で表示してください。
snapshot の出力項目
- 銘柄 / 名称 / 保有数 / 取得単価 / 現在価格 / 評価額 / 損益 / 損益率 / 通貨
analyze の出力項目
- セクターHHI / 地域HHI / 通貨HHI / 規模HHI(KIK-438)
- 各軸の構成比率(規模別構成テーブル: 大型/中型/小型/ETF/不明)
- ETF注釈(ルックスルー未対応の注記)
- リスクレベル判定
health の出力項目
- 個別株テーブル: 銘柄(小型株は
[小型]バッジ付き) / 損益率 / トレンド / クロスイベント / 変化の質 / アラート / 長期適性 / 還元安定度 - ETFテーブル(KIK-469 P2): 銘柄 / 損益 / トレンド / 経費率 / AUM / ETFスコア / アラート
- アラートがある銘柄の詳細(理由、SMA/RSI値、クロス発生日・経過日数、変化スコア、株主還元安定度、推奨アクション)
- 小型株アロケーション: PF全体の小型株比率サマリー(✅正常/⚠️警告/🔴危険)
forecast の出力項目
- ポートフォリオ全体: 3シナリオ利回り(楽観/ベース/悲観)+ 損益額 + 総評価額
- 注意銘柄セクション: バリュートラップ警告のある銘柄一覧
- TOP 3 / BOTTOM 3: 期待リターンランキング(アナリスト数付き)
- 銘柄別: アナリスト目標価格 / Forward PER / ニュース件数 / Xセンチメント / 3シナリオ / ETFは年率ボラティリティ +
[ETF]バッジ
what-if の出力項目
- [売却時] 売却候補のコンテキスト(KIK-470): スクリーニング出現回数・投資メモ・リサーチ履歴
- Before/After のHHI比較(セクター/地域/通貨)
- 追加銘柄のファンダメンタルズ
- 集中度変化の判定
- [スワップ時] 売却銘柄テーブル(売却代金試算)
- [スワップ時] 資金収支(購入必要資金 / 売却代金 / 差額)
- [スワップ時] 売却銘柄ヘルスチェック
- [スワップ時] 「このスワップは推奨 / 注意して検討 / 非推奨」
backtest の出力項目
- スクリーニング日別リターン
- ベンチマーク比較(超過リターン)
- 勝率・統計値
adjust の出力項目
- マーケットレジーム(レジーム名/SMA50 vs SMA200/RSI/ドローダウン)
- HIGH Priority テーブル: SELL/SWAP/TRIM_CLASS アクション
- MEDIUM Priority テーブル: FLAG/SELL アクション
- LOW Priority テーブル: FLAG アクション
- サマリー(HIGH/MEDIUM/LOW 件数、レジーム)
rebalance の出力項目
- 現状のHHI(セクター/地域/通貨)と目標HHI
- 売却候補(銘柄・株数・理由)
- 購入候補(銘柄・株数・理由・配当利回り)
- リバランス後のHHI予測値
simulate の出力項目
- 年次推移テーブル(年/評価額/累計投入/運用益/配当累計)
- 3シナリオ比較(楽観/ベース/悲観の最終年)
- 目標達成分析(到達年/必要積立額)
- 配当再投資の複利効果
実行例
# スナップショット
python3 .../run_portfolio.py snapshot
# 購入記録
python3 .../run_portfolio.py buy --symbol 7203.T --shares 100 --price 2850 --currency JPY --date 2025-06-15 --memo トヨタ
# 売却記録
python3 .../run_portfolio.py sell --symbol AAPL --shares 5
# 構造分析
python3 .../run_portfolio.py analyze
# 一覧表示
python3 .../run_portfolio.py list
# ヘルスチェック
python3 .../run_portfolio.py health
# 推定利回り
python3 .../run_portfolio.py forecast
# リバランス提案
python3 .../run_portfolio.py rebalance
python3 .../run_portfolio.py rebalance --strategy defensive
python3 .../run_portfolio.py rebalance --reduce-sector Technology --additional-cash 1000000
# What-Ifシミュレーション(追加のみ)
python3 .../run_portfolio.py what-if --add "7203.T:100:2850,AAPL:10:250"
# What-Ifシミュレーション(スワップ: 7203.T売却 → 9984.T購入)(KIK-451)
python3 .../run_portfolio.py what-if --remove "7203.T:100" --add "9984.T:50:7500"
# What-Ifシミュレーション(純売却)(KIK-451)
python3 .../run_portfolio.py what-if --remove "7203.T:50"
# 調整アドバイザー (KIK-496)
python3 .../run_portfolio.py adjust
python3 .../run_portfolio.py adjust --full
# バックテスト
python3 .../run_portfolio.py backtest --preset alpha --region jp --days 90
前提知識統合ルール (KIK-466)
health コマンド
get_context.py の出力に以下がある場合、ヘルスチェック結果と統合して回答する:
- 売買履歴(BOUGHT/SOLD): 購入価格・日付を参照し、含み損益の文脈を付加。売却済み銘柄が警告に出た場合は「売却済みのため問題なし」と明記
- 投資メモ(Note): テーゼ・懸念メモがあれば、ヘルスチェック結果と照合。「バリュートラップ懸念メモあり → 今回もBTスコア高 → 本当に要注意」等
- 前回ヘルスチェック(HealthCheck): 前回との差分を示す。「前回HOLD → 今回EXIT: 状況悪化」「前回EXIT → 今回HOLD: 改善」
- スクリーニング履歴(SURFACED): 警告銘柄が過去にスクリーニング上位だった場合、「注目度は高い(3回上位)が現在は要注意」等
- テーゼ経過: テーゼメモが90日以上前なら「テーゼ見直し時期」と促す
snapshot / forecast
- 前回スナップショット・フォーキャストがあれば差分コメントを付加
- 「前回比: 評価額+5.2%、利回り改善」等
分析結論の記録促し
EXIT/警告に対して具体的な判断(「売却推奨」「継続保有」等)を含む回答をした場合:
💡 この判断を投資メモとして記録しますか?