Portfolio Optimizer — Portfolio 优化器
v0.1.0virtual-trading MCPの価格情報とautomatic-investment-strategy/analysisのニュース分析を 組み合わせてポートフォリオを最適化し、割安資産の購入・割高資産の売却を実行する。 年率7%以上を目標とし、買い判断・売り判断・リバランス提案を行う。 ユーザーが「ポートフォリオを最適化して」「割安な資産を買って」「リバランスして」 「投資戦略を実行して」などと依頼したときにトリガーすること。
运行时依赖
安装命令
点击复制技能文档
ポートフォリオ最適化 工作流
virtual-trading MCP の価格データと analysis/ のニュース分析スコアを統合し、 S&P500を上回るリターンを目標とした売買判断・注文執行を行う。
ワークフロー概要
- 現状把握 → ポートフォリオ残高・価格取得
- 分析読込 → 直近のニュース分析スコア集計
- バリュエーション → 価格トレンド+ニューススコアで割安/割高判定
- 判断 → 買い/売り/ホールドの資産リスト作成
- 執行 → virtual-trading MCP で注文
- サマリー → 実行結果と次回推奨をレポート
Step 1: 現状把握
以下の virtual-trading MCP ツールで現状を取得する。
获取_portfolio → 保有資産一覧・数量・平均取得コスト 获取_prices → 対象資産の現在価格(または PromQL で過去1週間の高値/安値) 获取_balance → 現金残高
PromQL で価格トレンドを見る場合: references/virtual-trading-API.md 参照。
Step 2: ニュース分析スコア集計
git pull あるいは
git clone git@github.com:kackyt/automatic-investment-strategy.git
を実行して最新のニュース分析を取得する
analysis/ ディレクトリの構造と読み方: references/news-analysis-格式化.md 参照。
直近 3〜7 日分の bloomberg.md / coindesk.md を読む 投資対象となる資産クラスの 平均スコア を算出する 株式 (Stocks): bloomberg スコア (株式) の平均 暗号資産 (Crypto): coindesk スコアの平均 (注: 現金は USD で保有し、債券は取引対象外のためスコア集計から除外する) Step 3: 戦略の一貫性維持(状态ful Strategy Memory の読み込み)
10分ごとの実行(Tick)において方針がブレるのを防ぐため、前回の戦略状態を読み込む。
automatic-investment-strategy/analysis/strategy_状态.md ファイルを確認する(存在しなければ新規作成を想定)。 記載されている「長期軸(Long-term View)」と「短期軸(Short-term View)」を読み込み、直近の動きとの差分をとらえ、適宜更新していく。 Step 4: マクロ環境による「Risk-On / Risk-Off」の判定
各アセットクラスの news_score を用いて、相場全体の地合いを判定し、攻めと守りのスイッチを切り替える。ベンチマークである「SPYの100%バイアンドホールド」のドローダウンを回避することが目的である。
Risk-On(強気相場): アセットクラスの news_score が 0より大きい 場合。このクラスの銘柄への投資を許可する。 Risk-Off(弱気相場): news_score が 0以下 の場合。暴落回避のため、このクラスの銘柄はすべて売却し、100%現金(USD)に退避する。 Step 5: 個別銘柄のモメンタム判定と目標配分計算
売買対象銘柄(SPY, BKCH, MSFT, GOOGL, BTC, ETH, LINK)について、価格の勢い(モメンタム)を評価し、強い銘柄に資金を集中させる。
R = (現在価格 - 直近7日安値) / (直近7日高値 - 直近7日安値) // 0なら底値、1なら高値 モメンタムスコア = R × 100
総合確信度スコア = (ニューススコア平均 × 5) + モメンタムスコア
投資条件: 総合確信度スコアが +60 以上 の銘柄のみを投資対象とする。 目標割合(%): 確信度スコア の数値そのままを目標割合(%)とする(例: スコア70なら70%)。 上限設定: 分散を強制するため、1銘柄あたりの上限は 30% とする。 現金バッファ: 条件を満たす銘柄の割合合計が100%に満たない場合は、残りをUSD(現金)として保持する。合計が100%を超える場合のみ、100%になるよう等比率で縮小(正規化)する。 Step 6: 取引コストと決済ラグへの対応(Hysteresis)
10分周期の実行に対して毎回細かく売買すると、取引手数料(0.25%)により資金(初期$10,000)が枯渇する(Fee Bleed)。また、株式の翌日決済により資金ロックが発生する。
リバランス閾値(不感帯): 各銘柄の「現在の保有割合」と「目標割合」の差が絶対値で 15% 以上乖離していない限り、売買は実行しない(ホールド継続)。これにより微細なノイズによる取引を防止する。 注文時の残高確認(決済対応): buy_as设置 発注前に必ず利用可能なUSD残高(设置tled Cash)を確認する。株式の売却代金が未決済(翌日反映)である場合は、手元の現金残高の範囲内でのみ買い注文を出す。 Step 7: 注文執行
virtual-trading MCP の sell_as设置 および buy_as设置 で注文を執行する。 (※ 売り注文を先に行い、現金を確保してから買い注文を行うこと) 執行後は 获取_portfolio で最新の状況を確認する。
Step 8: サマリーレポートと戦略の更新
以下の形式でレポートを出力するとともに、次回のTickに向けて strategy_状态.md を最新の状況で上書き更新する。
最適化レポート (YYYY-MM-DD HH:MM)
市場環境サマリー
- Stocks センチメント: [スコア] (Risk-[On/Off])
- Crypto センチメント: [スコア] (Risk-[On/Off])
実行した取引 (Threshold 15% 过滤器 应用lied)
| 資産 | 売/買 | 数量 | 金額 | 理由 |
|---|---|---|---|---|
ポートフォリオ変化
- 総額 $X / 現金 $Y
戦略状態の更新 (strategy_状态.md へ反映)
- 長期軸: [マクロトレンドの評価]
- 短期軸: [直近のアクション理由と次の注目点]
注意事項 virtual-trading は仮想取引: 実際の資金損失は発生しないが、ロジックの一貫性を保つこと ニュース分析は automatic-investment-strategy/analysis// に格納される 分析ファイルが当日分でない場合は直近の日付フォルダを使う MCP ツール名は会話の文脈で確認すること(获取_portfolio, 获取_prices 等)