機能

Richfolio は単一のパイプラインに 18 以上の機能を詰め込んでいます — すべて無料枠の API で動作します。


2 段階 AI 分析(Think/Plan フレームワーク)

Richfolio は OpenAlice の Think/Plan アーキテクチャに着想を得た、2 段階の認知フレームワークを採用しています:

ステージ 1:Observe(Think) — Gemini が各ティッカーごとに構造化された観察結果を抽出します。どの価格レベルのシグナルが揃っているか(P/E が平均以下、52 週安値付近、200 日移動平均線以下)、どのモメンタムシグナルが有効か(RSI < 35、強気の MACD、ボリンジャー %B < 0.15、ストキャスティクス %K < 20)、リスクフラグ、バリュエーションとテクニカルの 1 文サマリー、ニュースのセンチメント、配分コンテキストなどです。このステージでは推奨アクションは出しません — 純粋なデータ解析です。

ステージ 2:Decide(Plan) — 別の Gemini 呼び出しが構造化された観察結果(生の数値ではなく)に加えて、すべての意思決定ルール、過去の推論コンテキストを受け取り、STRONG BUY の基準を適用して最終的な推奨を生成します。意思決定ステージはあらかじめ消化された観察結果を扱うため、STRONG BUY の基準をより一貫して適用できます。

各ティッカーには STRONG BUYBUYHOLDWAIT のいずれかのアクションが付き、推奨金額、指値価格、バリュー評価(株式)、底値シグナル(売られすぎ検知)も併せて返ります。Gemini API が利用できない、またはクォータを使い切った場合は、Richfolio は自動的にギャップベースの推奨にフォールバックします。Gemini の一時的なエラー(503/429)はバックオフ付きで最大 2 回まで自動リトライされます。

STRONG BUY のティッカーには、メールと Telegram メッセージに 「詳細分析」 リンクも付きます。クリックすると GitHub Pages 上の専用分析ページが開き、インタラクティブな TradingView チャート、詳しい買いの根拠、リスク分析、主要指標、ファンダメンタル、アクションのサマリーが表示されます — すべて Gemini 2.5 Flash が生成したものです。

毎日のブリーフ STRONG BUY 分析


決算カレンダー・ガード

Richfolio は Yahoo Finance の calendarEvents モジュールを使って近づいてくる決算日を自動検知し(追加 API 呼び出しはゼロ — 既存の quoteSummary リクエストに相乗りします)、プログラム的な安全上限を適用します:

  • 決算まで ≤ 3 日 → 強制的に HOLD — 決算をまたいで保有するリスク/リワードが買い推奨には不釣り合いに歪んでいます
  • 決算まで ≤ 7 日BUY で上限カット — 決算直前に STRONG BUY を出すことは決してありません
  • 決算まで ≤ 14 日 → 注意喚起のため、メールではカラーバッジで、Telegram では [earnings Xd] タグで表示

このガードは AI プロンプト内(ソフトな指示)と、ガードパイプラインのプログラム的なハード上限(AI からは上書き不可)の両方で実行されます。高リスクイベント中のポジションを避ける OpenAlice の決算カレンダー認識に着想を得ています。


AI 後段ガード検証パイプライン

AI が推奨を返した後、プログラム的な検証パイプラインが 6 つの逐次チェックを実行し、ユーザーに届く前に AI のよくあるミスを捕捉します。コンテキスト分離を備えた OpenAlice のガードパイプライン概念に着想を得ています:

  1. 債券 ETF キャップ — 短期債券 ETF(BSV、SHY など)は BUY でハード上限、信頼度の最大値は 65%
  2. 決算の近接 — 決算カレンダー・ガードをプログラム的に強制
  3. STRONG BUY 基準の強制 — 配分ギャップ ≥ 2%、信頼度 ≥ 80%、少なくとも 1 つの価格レベルシグナルがあることを検証。1 つでも満たさなければ BUY に降格
  4. STRONG BUY は最大 2 件 — 信頼度でソートし、上位 2 件のみ残して残りは降格
  5. 信頼度の妥当性 — 95% で上限(AI は時に 98〜100 を出す)。HOLD/WAIT は 70% で上限
  6. 買い金額の妥当性 — 推奨買い金額はギャップ金額を上限とし、HOLD/WAIT の買い金額はゼロに

各ガードはトリガー時にデバッグ用のログを出力します。ガード同士は独立しており、生のブローカー/API オブジェクトではなく、推奨データのみを受け取ります。


テクニカルモメンタムシグナル

Richfolio は Yahoo Finance から 250 日分の過去価格データを取得し、ポートフォリオ内のすべてのティッカーについてテクニカル指標を計算します:

  • SMA50 / SMA200 — 50 日および 200 日の単純移動平均線、それぞれに対する現在価格の位置
  • RSI(14) — 14 日の相対力指数(30 未満 = 売られすぎ、70 超 = 買われすぎ)
  • MACD — 移動平均収束拡散(EMA12 − EMA26、シグナルライン = MACD の EMA9)。クロスオーバー(強気/弱気)とヒストグラムの方向からモメンタムの転換を検出します。トレンド相場に最適
  • ボリンジャーバンド — SMA(20) ± 2σ。%B(バンド内の位置:0 = 下限、1 = 上限)、バンド幅(ボラティリティ)、スクイーズ検出(バンド幅が 120 日レンジの下位 20% に入るとブレイクアウトが近いことを示唆)を追跡します。レンジ相場に最適
  • ATR(14) — Wilder スムージングの平均トゥルーレンジ。絶対値と価格比のパーセントで報告。ATR% > 3% = 高ボラティリティ(AI は指値を広めに取る)、ATR% < 1% = 低ボラティリティ(指値を狭く)。ポジションサイジングの参考として有用
  • ストキャスティクス — %K(14) と 3 日平滑の %D。%K < 20 = 売られすぎの確認(STRONG BUY 基準のモメンタムシグナルに加算)、%K > 80 = 買われすぎ。RSI とは別の計算方法で補完
  • OBV(オンバランスボリューム) — 累積 OBV と 10 日線形回帰によるトレンド分析。方向のみを報告:上昇(蓄積)、下降(分配)、横ばい(中立)。OBV の絶対値はティッカー間で意味を持ちません — トレンドのみが重要
  • ゴールデンクロス/デッドクロス — SMA50 が SMA200 を上抜け(強気)または下抜け(弱気)
  • モメンタムシグナル — 価格と移動平均線、RSI に基づき 強気弱気中立 に分類
  • 直近安値 — 7 日および 30 日の安値。近隣のサポートを把握するため

AI プロンプトには、MACD とボリンジャーバンドが食い違う場合の明確な矛盾解消ルールが含まれています:トレンド相場では MACD、レンジ相場ではボリンジャーバンドを信用します。両方が一致するとき、信頼度はブーストされます。ボリンジャーのスクイーズと同時の MACD クロスオーバーは最強のエントリーシグナルとして扱われます。

すべてのテクニカルデータ — 出来高変化(7 日対 30 日平均)を含む — はより根拠のある推奨のために AI プロンプトに入力されます。STRONG BUY のティッカーでは、モメンタムの詳細(MACD クロスオーバー/ヒストグラム、%B、スクイーズ状態を含む)がメールと Telegram メッセージに直接表示されます。


指値価格

Gemini が STRONG BUY または BUY を推奨する際は、現在の市場価格よりやや低い指値価格も提案します。提案価格は最寄りのサポートに基づきます:

  • 移動平均線のサポート — 価格が 50 日線または 200 日線付近
  • 直近安値 — 7 日または 30 日安値をサポートのフロアとして
  • キリ番 — キリの良い価格水準での心理的サポート

指値価格とその根拠は、STRONG BUY のティッカーについて、毎日のメール、Telegram メッセージ、ザラ場アラートに表示されます。


バリュー投資フレームワーク

個別株(ETF や暗号資産を除く)について、AI は構造化されたバリュー投資フレームワークを適用し、5 つのファンダメンタル基準に基づいて A〜D の評価を付けます:

  • ROE > 15% — 強い収益性
  • D/E < 50% — 保守的なレバレッジ
  • FCF/営業 CF > 80% — 強いキャッシュ転換力
  • 増益基調 — 成長中のビジネス
  • アナリスト目標価格を下回る株価 — 市場による過小評価
評価 達成項目数 意味
A 4〜5 優れたバリュー
B 3 良好なバリュー
C 1〜2 並のバリュー
D 0 割高

バリュー評価は AI の信頼度スコアに反映され(A で約 10 ポイント加算、D で約 10 ポイント減算)、メールと Telegram の出力ではカラーバッジとして表示されます。

すべてのファンダメンタルデータは Yahoo Finance の financialData モジュールから取得し、既存の quoteSummary 呼び出しに相乗りするため、追加 API オーバーヘッドはゼロです。


底値拾いモデル

すべてのティッカー(株式、ETF、暗号資産)について、AI は 4 つの底値指標を評価して潜在的な蓄積ゾーンを検出します:

  • RSI < 30 — 売られすぎ圏
  • 出来高の減少 > 20% — 売り疲れ(直近 7 日平均対前 30 日平均)
  • 株価が 200 日移動平均線以下 — ディープバリュー圏
  • デッドクロスが出現 — すでに織り込まれた可能性あり(RSI が極端に低い場合の逆張りシグナル)

誤シグナルを減らすため、資産種別ごとに閾値を変えています:

  • 暗号資産(BTC、ETH)2 つ以上の指標が揃ったときに底値シグナルをフラグ。STRONG BUY への引き上げは 3 つ以上で検討。
  • 株式と ETF3 つ以上の指標が揃ったときに底値シグナルをフラグ(より厳しい)。STRONG BUY への引き上げは 4 つすべてが揃ったときに検討。

底値シグナルは毎日のメール、ザラ場アラート、Telegram メッセージに表示されます。出来高変化は既存のチャートデータから計算するため、追加 API 呼び出しはありません


配分ギャップ分析

現在の保有を目標配分パーセンテージと比較します。各ティッカーは目標からの乖離度合いでスコアリングされ、ドル建てと株数の両方で推奨買い金額が算出されます。

実際のポートフォリオ価値と設定上の見積もりの大きい方を使って分析するため、現在の保有が目標ポートフォリオ規模より小さくても、ギャップ計算は意味を保ちます。


動的 P/E シグナル

トレーリング P/E を、Yahoo Finance の過去決算データから算出された平均 P/E と比較します。手動でベンチマークを設定する必要はありません — システムが四半期 EPS データを取得し、平均を自動計算します。

過去平均 P/E を下回っているティッカーは below avg(潜在的なバリュー)、上回っているティッカーは above avg(潜在的に割高)としてフラグされます。ETF と暗号資産は決算データを持たないため、当然このシグナルは適用されません。


ETF 重複検出

目標ポートフォリオ内の ETF の上位構成銘柄でもある個別株を保有している場合、Richfolio はその重複を検出し、その ETF の買い優先度を相応に下げます。

例: 30 株の AAPL を保有していて、VOO が約 7% を AAPL で構成している場合、直接保有している AAPL のエクスポージャが VOO の配分ギャップを部分的にカバーしていることになります。VOO の推奨買い金額は重複分だけ減らされます。

これにより、ETF 経由で気付かないうちに既に保有している銘柄に過度に集中することを防ぎます。


52 週レンジシグナル

各ティッカーの現在価格は、その 52 週レンジ内でポジショニングされます(0% = 安値、100% = 高値):

  • 安値付近(20% 未満)— 潜在的な買い機会
  • 高値付近(80% 超)— 慎重に
  • 中間レンジ — 中立

AI 分析はこのシグナルを P/E や配分データと並んで推奨に反映します。


センチメントスコア付きニュースダイジェスト

NewsAPI から各ティッカーごとのトップヘッドラインを取得します。無料枠の 1 日 100 リクエストの制限内に収まるようバッチ化したリクエストで取得します。直近 24 時間のヘッドラインを、企業名のマッピングを使ってティッカーにマッチさせます。

Gemini は各関連ヘッドラインを次のようにスコアリングします:

  • センチメント:強気、弱気、中立
  • インパクト:高、中、低(株価をどれだけ動かしうるか)
  • 総合センチメント:ティッカーごとの集約(強気、弱気、中立、混在)

センチメントタグは AI プロンプト内でヘッドラインと一緒に表示され(例:"Apple beats estimates" [強気、高インパクト])、全体のニュースセンチメント評価に反映されます。これは以前のバイナリな関連/非関連フィルタを、より豊富なシグナル抽出に置き換えるものです — しかも追加 API コストはゼロです(同じ Gemini 呼び出しで、出力スキーマがより豊富になっただけ)。


推論の永続化

毎日の実行後、Richfolio は AI の各推奨のスナップショット — アクション、信頼度、価格、理由 — を、7 日間のローリング履歴ファイル(state/reasoning-history.json)に書き込みます。次の実行時、AI は「HISTORICAL CONTEXT」セクションを受け取り、自分自身の確信度がどう変化してきたかを確認します:

AAPL: BUY 72% ($185) → BUY 68% ($187) → HOLD 55% ($192) — 弱化
SMH: HOLD 45% ($220) → BUY 70% ($210) → STRONG BUY 85% ($205) — 強化

これにより AI は確信度モメンタムを把握できます — あるティッカーが 3 日以上連続で強化していればトレンドが確認され、弱化していれば AI はより慎重になります。これは OpenAlice の brain/memory 永続化概念に着想を得ており、認知状態を監査可能なコミットとして追跡するものです。

GitHub Actions では actions/cachestate/ ディレクトリをキャッシュすれば、推論履歴をワークフロー実行をまたいで永続化できます。


ポートフォリオの健全性

現在の保有から、ポートフォリオ全体に関わる 2 つの指標を計算します:

  • 加重 Beta — ポジションサイズで加重したポートフォリオ全体の市場リスク
  • 年間配当収入の見積もり — 現在の配当利回りとポジションサイズに基づく年間配当の見積もり

ザラ場アラート

その日の買いの瞬間を逃しません。朝のブリーフが走った後、Richfolio は AI 推奨をベースラインとして保存します。ザラ場チェック(npm run intraday)は取引時間中に 2 時間ごとに実行され、価格とテクニカルを再取得し、Gemini 分析を再実行し(API クォータ節約のためニュースはスキップ)、朝のベースラインと比較します。

以下の場合にのみアラートが発火します:

  • 信頼度の上昇が少なくとも 5 ポイント(設定可能)かつ 80% 超(設定可能)
  • アクションのアップグレード — 例:朝の BUY が午後に STRONG BUY になった
  • 新しいシグナル — 朝には推奨されなかったティッカーが、今は強い買いシグナルを持つ

アラートはメールと Telegram で、朝対現在の比較、価格変動、AI の理由、STRONG BUY シグナルの指値価格を表示する集中フォーマットで届きます。アラートがなければ通知もなし — 本当に重要なときだけ Richfolio から連絡が来ます。

すべての閾値は CONFIG_JSON 変数の intradayAlerts セクションで設定できます。詳細は設定を参照してください。

ザラ場アラート


週次リバランスレポート

ポートフォリオのドリフトとリバランスのアクションに焦点を絞った別の週次レポート(npm run weekly)です。ニュースもなく、AI もなし — シンプルな表だけ:

  • BUY — アンダーウェイトのポジション(ギャップ > 1%)
  • TRIM — オーバーウェイトのポジション(ギャップ < -1%)
  • OK — 目標レンジ内のポジション

オーバーウェイト警告も含み、目標ポートフォリオに含まれない保有もフラグします。

週次リバランス


デュアル配信

すべてのレポートは 2 つのチャネルで配信されます:

  • メール — Resend 経由のダークテーマの HTML メール。完全な詳細(配分テーブル、P/E シグナル、AI 推奨、テクニカルモメンタム、指値、ニュース)を含む
  • Telegram — Telegram Bot API 経由の凝縮されたプレーンテキストサマリー。モバイル閲覧に最適化されています(STRONG BUY のテクニカルと指値価格を含む)

両チャネルは独立して動作します — 片方が未設定でも、もう片方は通常通り配信されます。


Richfolio — free, open-source portfolio monitoring.

This site uses Just the Docs, a documentation theme for Jekyll.