設定
Richfolio はすべてのポートフォリオデータを単一の JSON 設定で扱います — あなたのポートフォリオはプライベートに保たれます。
セットアップ
fork したリポジトリの Settings → Secrets and variables → Actions → Variables タブに移動し、下記の JSON 内容を持つ CONFIG_JSON という変数を作成します。
例
{
"targetPortfolio": {
"VOO": 20,
"QQQ": 15,
"GLD": 10,
"BSV": 20,
"SMH": 5,
"BTC": 1.5
},
"currentHoldings": {
"AAPL": 30,
"VOO": 1,
"BTC": 0.0002
},
"watching": ["MSFT", "NVDA", "AMD"],
"watchingCrypto": ["BTC/CRO", "ETH/CRO"],
"totalPortfolioValue": 50000,
"defaultCurrency": "USD",
"intradayAlerts": {
"enabled": true,
"confidenceIncreaseThreshold": 10
}
}
フィールドリファレンス
| フィールド | 必須 | 説明 |
|---|---|---|
targetPortfolio | はい | 目標配分のパーセンテージ。キーはティッカーシンボル、値はパーセンテージで、合計は約 100% になるようにします。 |
currentHoldings | はい | 現在保有している株数。目標に含まれない銘柄も含められます(例:ETF 重複検出のための AAPL)。 |
watching | いいえ | 追跡したいが目標ポートフォリオに含めないティッカーの配列。データ取得、AI スコアリングを行ったうえで、配分計算を汚さずに別の「Watch List」セクションに表示されます。下記の Watch List を参照してください。 |
totalPortfolioValue | はい | あなたのポートフォリオ総額の見積もり(defaultCurrency 建て)。実際の保有が目標より小さい場合の配分計算に使用します。 |
defaultCurrency | いいえ | ISO 4217 通貨コード(例:"USD"、"GBP"、"AUD")。デフォルト:"USD"。メール/Telegram 内のすべての金額はこの通貨で表示され、一致しないティッカーは Yahoo Finance のライブレートで FX 換算されます。 |
watchingCrypto | いいえ | 暗号資産クロスペアの配列。"BASE/QUOTE" 形式(例:["BTC/CRO", "ETH/CRO"])で「QUOTE 建ての BASE 価格」を意味します。Yahoo ではなく crypto.com のキー不要な公開 API から取得する、ウォッチ専用の交換シグナルです。下記暗号資産クロスペアを参照。 |
intradayAlerts | いいえ | ザラ場アラートの設定(下記参照)。省略時はデフォルト値が適用されます。 |
cryptoAlerts | いいえ | --crypto スケジュール用のアラート設定。フィールドは intradayAlerts と同一で、独立して調整できます。 |
ザラ場アラート
intradayAlerts セクションは、ザラ場チェックがアラートを送信する条件を制御します。すべてのフィールドはオプショナルで、合理的なデフォルト値があります。
アラートは STRONG BUY 関連の変化でのみ発火します:
- STRONG BUY へのアップグレード — 他のレベル → STRONG BUY
- STRONG BUY からのダウングレード — STRONG BUY → 他のレベル
- 信頼度の変化 — STRONG BUY のままで信頼度が閾値以上シフト
| フィールド | デフォルト | 説明 |
|---|---|---|
enabled | true | マスタートグル。false に設定するとザラ場アラートを完全に無効化できます。 |
confidenceIncreaseThreshold | 10 | STRONG BUY ティッカーのアラート発火に必要な最小信頼度変化(絶対値、パーセントポイント)。 |
分析の更新
最新の価格(時間外/プレマーケットを含む)で単一ティッカーを再分析します。新しい分析 URL 付きでメール+ Telegram を送信します。
Actions → Portfolio Monitor → Run workflow → mode: refresh、ticker: SMH。
利用可能な場合は Yahoo Finance の postMarketPrice と preMarketPrice を使用します。時間外データが利用できない場合は通常市場価格にフォールバックします。
Watch List
オプショナルな watching 配列は、スコアリングしてシグナルとして表示したいものの、目標ポートフォリオには含めたくないティッカーを追跡します。ポートフォリオ内のティッカーと並んでデータ取得・プロンプト投入・スコアリングは行われますが、配分ベースのルールはすべてバイパスします。
こんなときに使えます:
- 目標ウェイトを決める前に、銘柄をリサーチしたいとき
- 現在保有していない銘柄について推奨が欲しいとき(例:「NVDA でポジションを始めるのに今は良いタイミング?」)
- ポートフォリオ合計を 100% 超に膨らませずに、ティッカーへのシグナルが欲しいとき
Watch ティッカーとポートフォリオティッカーの違い
| 挙動 | ポートフォリオティッカー | Watch ティッカー |
|---|---|---|
| 配分 % にカウントされる | はい | いいえ |
| 配分ギャップを算出 | はい | いいえ |
STRONG BUY に gap ≥ 2% 必須 | はい | いいえ — 代わりにシグナル合流が必要 |
| オーバーウェイトポジションガードの対象 | はい | いいえ |
| STRONG BUY 最大 2 件上限のカウント対象 | はい | いいえ — 該当する watch STRONG BUY はすべて表示 |
suggestedBuyValue が入る | はい(ギャップに基づく) | 常に 0 — サイズは手動で決定 |
| メイン「AI 買い推奨」セクションに表示 | はい | いいえ — 別の「Watch List」セクションに表示 |
| 指値価格の提案 | はい | はい(同じロジック) |
| STRONG BUY 詳細分析ページ | はい | はい |
Watch STRONG BUY の基準
参照できる配分ギャップがないため、watch ティッカーは STRONG BUY を獲得するためにより強いシグナル合流が必要です:
- ≥1 個の価格レベルシグナル(P/E が過去平均以下、52 週ポジション < 30%、または株価が 200 日線以下)
- 価格レベルシグナルを裏付ける ≥2 個のモメンタムシグナル(RSI < 35、強気の MACD クロスオーバー、ボリンジャー %B < 0.15、ストキャスティクス %K < 20、OBV 上昇)
- 重大なレッドフラグなし
- シグナル合流のみに基づく信頼度 ≥ 80%
- バリュー評価 A または B(株式の場合。ETF と暗号資産はスキップ)
例
{
"targetPortfolio": { "VOO": 20, "GLD": 10, ... },
"currentHoldings": { "VOO": 5, "AAPL": 30 },
"watching": ["MSFT", "NVDA", "AMD", "AVGO"]
}
このポートフォリオは AAPL + VOO を保有し、MSFT/NVDA/AMD/AVGO はリサーチ用のシグナルとしてのみ追跡しています。Watch ティッカーは独自のメール/Telegram セクションに表示され、ポートフォリオ合計を 100% 超に押し上げることはなく、ポートフォリオの STRONG BUY を圧迫することもありません。
暗号資産クロスペア
オプションの watchingCrypto 配列は、Richfolio の他の機能とは違う問いに答えます。「現金でこれを買うべきか?」ではなく、「すでにコイン X を保有している — 今はその一部をコイン Y に交換する好機か?」です。
{
"watchingCrypto": ["BTC/CRO", "ETH/CRO"]
}
記法
"BASE/QUOTE" はQUOTE 建ての BASE 価格を意味します — 「買おうとしている資産」を「支払おうとしている資産」で割ったものです。
したがって "BTC/CRO" は「BTC 1 枚が何 CRO か」であり、これはまさに CRO を BTC に交換する前に低くあってほしい数値です。ペアの追加・削除・入れ替えはすべて設定だけで完結します。"SOL/CRO"、"BTC/USDT"、"ETH/BTC" はコード変更なしで動作します。
方向を統一する理由
取引所は市場のどちら側を上場するかを自由に決めます。crypto.com では CRO は CRO_BTC の基軸通貨ですが、ETH_CRO では決済通貨です — そのまま読むと 2 つのペアは正反対の方向を向きます。CRO を BTC に替えるには CRO_BTC が高いほうがよく、CRO を ETH に替えるには ETH_CRO が低いほうがよい、という具合です。1 通のブリーフに 2 つの極性が混在すると読み違えが起きやすく、ペアを増やすほど悪化します。
Richfolio はすべてを「支払う通貨建ての、買おうとしている資産」に正規化するため、低い = 割安 = 交換の好機が常に成り立ちます。取引所がどちら側を上場しているかは取引所自身の銘柄メタデータから自動判定し、必要に応じて系列を逆数化します。
何があり、何が無いか
| 価格ソース | crypto.com Exchange 公開 API — キー不要、登録不要 |
| 建値 | 決済通貨(例:1,313,198 CRO)。レポート通貨には決して換算しません |
| テクニカル指標 | フルセット — SMA50/200、RSI、MACD、ボリンジャー、ATR、ストキャスティクス、OBV、90 日パーセンタイル |
| 52 週レンジ | 365 本の日足から算出(暗号資産は暦日ベースで毎日取引されるため) |
| P/E、ファンダメンタル、配当、決算、アナリスト目標株価 | コインペアにはそもそも存在しません — AI にも明示しており、バリュー評価を捏造しません |
| 配分ターゲット/ギャップ | なし — watching リストと同じくウォッチ専用 |
suggestedBuyValue | 常に 0(現金支出ではなく交換のため) |
| X/Facebook などへの公開投稿 | ソーシャル投稿が有効でも、決して投稿しません |
P/E が存在し得ないため、クロスペアで使える価格水準シグナルは 3 つではなく2 つだけです:52 週位置 < 30%、および 200 日移動平均線を下回っていること。P/E が無いことは不合格ではないと、AI に明示しています。
配信と頻度
クロスペアは 2 か所に現れます。
- 日次ブリーフの Watch List —
watchingのティッカーと並んで表示されます。 - 専用の 1 日 8 回スケジュール(
.github/workflows/crypto-monitor.yml、3 時間ごと)— シグナルが実質的に変化したときだけメール/Telegram を送ります。
高頻度に意味があるのは、暗号資産が 24 時間 365 日取引される一方、株式のザラ場チェックはたいてい米国市場が閉じている間に走るからです。ローカル実行は npm run crypto です。
なお日足は 1 日 1 回しか確定しないため、3 時間差の 2 回の実行ではテクニカル指標は完全に同一です — 値動きを伴わないアクションの反転はシグナルではなくスコアのノイズです。cryptoAlerts.minPriceMovePctToAlert(デフォルト 1.0)がこれを抑制します。cryptoAlerts のフィールドはintradayAlertsと同一で、独立して調整できます。
{
"cryptoAlerts": {
"enabled": true,
"minConfidenceToAlert": 80,
"minPriceMovePctToAlert": 1.0
}
}
"enabled": false にすると、日次ブリーフにはクロスペアを残したまま専用アラートだけを止められます。
シグナルの読み方
クロスペアの推奨は交換シグナルなので、アクションの意味が少し変わります。
| アクション | 意味 |
|---|---|
| STRONG BUY / BUY | 決済通貨を基軸通貨に交換する好機 |
| HOLD / WAIT | 決済通貨建てで見て基軸通貨が割高 — 待つべき |
注意点が 1 つ。両サイドともボラティリティが高いため、有利なペア価格は基軸通貨の下落または決済通貨の上昇のどちらからも生じ得ます。データが示唆する場合、AI にはどちらかを述べるよう求めています。
ティッカー形式
| 種類 | 形式 | 例 |
|---|---|---|
| 米国株/ETF | 標準シンボル | AAPL、VOO、QQQ、SMH |
| 暗号資産 | ショートネーム | BTC、ETH(自動的に BTC-USD、ETH-USD に変換) |
| インターナショナル | Yahoo Finance シンボル | 0700.HK(Tencent)、TM(Toyota) |
Tips
-
目標パーセンテージは合計 100% になるようにしてください。100% でなくてもギャップ計算は動作しますが、提案される買い金額が大きすぎたり小さすぎたりすることがあります。
-
目標外の保有は ETF 重複検出のために追跡されます。例えば AAPL を保有すると、AAPL を含む ETF(VOO や QQQ など)の買い優先度を下げます。
-
小数株もサポートされています — 暗号資産(
"BTC": 0.000188)や小数株購入をサポートするブローカーに便利です。 -
ポートフォリオ価値は実際の保有価値と設定上の見積もりの大きい方を使用します。目標配分にまだ近づいている途中でも、ギャップ計算が意味を保ちます。
ティッカーは何個まで追加できますか?
Richfolio はフォーカスされたポートフォリオで最も機能します。ハードコードされた上限はありませんが、無料枠の API クォータとダイジェストの可読性が実用的な境界を決めます。 **推奨レンジ:** | レンジ | 評価 | |-------|---------| | **10〜20** | スイートスポット — フォーカスされており、アクション可能、すべての無料枠が余裕 | | **20〜30** | まだ良好 — ダイジェストは管理可能、制限内にきれいに収まる | | **30〜50** | 技術的には動作するが、毎日のダイジェストが煩雑になる | | **50+** | 推奨されない(下記参照) | **50+ ティッカーが推奨されない理由:** - **NewsAPI(1 日 100 リクエスト)** — ニュースは 5 ティッカーずつバッチで取得されます。50 ティッカーで daily + intraday を実行すると約 22 回、100 ティッカーで約 42 回を使用し、リフレッシュの余地が少なくなります。 - **AI 分析の品質** — Gemini は一度に多くの選択肢を評価するとき、より希薄な推奨を生成します。 - **ダイジェストの可読性** — メールは長くなり、Telegram は 4,096 文字で切り捨てられます。シグナル対ノイズ比が急激に低下します。 - **実行時間** — 各ティッカーごとに Yahoo Finance の価格、テクニカル、ファンダメンタルの呼び出しが必要で、GitHub Actions の実行が遅くなります。 Gemini の無料枠は今やスタック内で最も厳しい制約になっています:2026 年 8 月のライブの 429 エラーでは `gemini-2.5-flash` のリクエストクォータが 1 日約 20 回と報告されており、richfolio のスケジュール(daily 1 回 + intraday 5 回)は 1 日 13 リクエスト以上を使用します — そのため Gemini は後半の実行でクォータを使い切って離脱することがよくあります。トークンのスループットは問題ではなく(100 ティッカーでも 1 回の実行で約 5.3 万トークンしか使わず、1 分あたり 25 万トークンの枠に対して十分余裕があります)、制約になっているのはリクエストの*回数*です。その他の現実的な制約は NewsAPI のクォータと情報過多です。 **TL;DR — すべての無料枠で最良の体験を得るには ≤30 ティッカーを目指してください。**
更新
保有が変わったら、新しい JSON 内容で CONFIG_JSON 変数を更新してください(Settings → Secrets and variables → Actions → Variables タブ)。