CNN Fear & Greed Index について
CNN の米国株式市場 Fear & Greed Index を取得する Go パッケージ、CLI、MCP サーバーです。現在と過去のスコア、日次履歴、7 つの構成指標の詳細を取得できます。
主な機能
- 01現在のスコアと評価
- 02過去の期間別スコア
- 03約 1 年分の日次履歴
- 047 つの構成指標とその履歴
- 05Go パッケージと CLI
活用シーン
- 01現在の市場心理の確認
- 02過去の期間との市場心理の比較
- 03各構成指標スコアの確認
- 04指数データの JSON 出力
MCP 対応
stdio の MCP サーバーは get_fear_and_greed ツールを 1 つ公開し、指数の取得に対応します。include_history 引数は任意です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/wildsurfer/cnnfag:2.2.0ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/wildsurfer/cnnfag:2.2.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
cnn-fear-and-greed-parse
CNN の Fear & Greed Index 用の Go パッケージです。米国株式市場のセンチメントを 0~100 で示します。現在のスコアと評価、前日終値・1 週間前・1 か月前・1 年前の値、約 1 年分の日次履歴に加え、7 つの構成指標(市場モメンタム、株価の強さ、株価の幅、プット/コールオプション、市場のボラティリティ、ジャンク債需要、安全資産需要)を取得できます。各指標には独自のスコア、評価、実数値の履歴があります。このモジュールには CLI と MCP サーバーも含まれており、Go 標準ライブラリ以外の依存関係はありません。
インストール
go get github.com/wildsurfer/cnn-fear-and-greed-parse/v2
使い方
package main
import (
"context"
"fmt"
cnnfag "github.com/wildsurfer/cnn-fear-and-greed-parse/v2"
)
func main() {
result, err := cnnfag.Get(context.Background())
if err != nil {
panic(err)
}
fmt.Printf("Now: %.0f (%s)\n", result.Score, result.Rating)
fmt.Printf("One year ago: %.0f\n", result.OneYearAgo)
fmt.Printf("History: %d daily points since %s\n",
len(result.History), result.History[0].Date.Format("2006-01-02"))
fmt.Printf("VIX indicator: %.0f (%s)\n",
result.MarketVolatility.Score, result.MarketVolatility.Rating)
}
出力:
Now: 64 (greed)
One year ago: 58
History: 250 daily points since 2025-08-11
VIX indicator: 50 (neutral)
Indicator の History には元となる系列の実数値(モメンタムの場合は S&P 500 の水準、ボラティリティの場合は VIX の水準、その他の場合は比率やスプレッド)が格納され、Score は CNN による 0~100 の正規化値です。独自の http.Client(タイムアウト、プロキシ)を使うには、cnnfag.HTTPClient を置き換えてください。
CLI
Go のコードを書かずに、cron ジョブやシェルパイプラインで使う場合:
go install github.com/wildsurfer/cnn-fear-and-greed-parse/v2/cmd/cnnfag@latest
$ cnnfag
64 (greed) as of 2026-08-11T00:00:00Z
previous close 64 · week ago 60 · month ago 47 · year ago 58
$ cnnfag -json | jq .score
64.3714285714286
-json は日次履歴を含む結果全体を出力します。-timeout はリクエストのタイムアウトを変更します(デフォルトは 15s です)。
MCP サーバー
cnnfag mcp は stdio 経由で Model Context Protocol サーバーを起動し、AI アシスタントがインデックスを照会できるようにします。オプションの include_history 引数を持つツール get_fear_and_greed を 1 つ公開します。MCP クライアントの設定:
{
"mcpServers": {
"cnnfag": {
"command": "cnnfag",
"args": ["mcp"]
}
}
}
MCP クライアントがバイナリを見つけられる必要があります。MCP クライアントがシェルの PATH を引き継がない場合は、フルパス(通常は ~/go/bin/cnnfag)を指定してください。このモジュールのほかの部分と同様に、サーバーも標準ライブラリのみで構築されています。
このサーバーは MCP Registry に io.github.wildsurfer/cnnfag として公開されており、ローカルバイナリではなく Docker を使いたいクライアント向けに、コンテナイメージ ghcr.io/wildsurfer/cnnfag も提供されています。
仕組み
CNN は、公開されている仕様付きの API を提供していません。このパッケージは、Fear & Greed ページ自体が使用する JSON エンドポイントにリクエストを送信します。
https://production.dataviz.cnn.io/index/fearandgreed/graphdata
このエンドポイントは、ブラウザーからのリクエストに見えないものを拒否するため、パッケージはブラウザーに似せた User-Agent と Referer ヘッダーを送信します。これは、他の言語で知られているラッパーと同じデータソースを使用しています。
スケジュールされた CI ジョブが週に 1 度、実際のエンドポイントに対してテストスイートを実行するため、CNN 側の変更を数日以内に検知できます。
v1 からの移行
v2 は全面的な書き直しです。CNN が v1 の解析対象だった HTML ページを削除したため、v1 は動作しなくなり、そのデータモデルも CNN が公開する内容と一致しなくなりました。まずインポートパスを更新してください。
import cnnfag "github.com/wildsurfer/cnn-fear-and-greed-parse/v2"
次に、呼び出しを調整してください。
| v1 | v2 |
|---|---|
cnnfag.Parse() | cnnfag.Get(ctx)。context.Context を受け取ります |
Result.Now.Value (int) | Result.Score (float64) |
Result.Now.Text | Result.Rating |
Result.PreviousClose.Value (int) | Result.PreviousClose (float64) |
Result.OneWeekAgo.Value、.OneMonthAgo.Value、.OneYearAgo.Value | フィールド名は同じですが、現在は通常の float64 です |
Result.PreviousClose.Text およびその他の過去期間のラベル | 削除されました。CNN の API には過去期間のラベルがありませんが、すべての History ポイントには評価が含まれます |
Result.LastUpdateDate | Result.Timestamp。解析による推測値ではなく、CNN の正確な時刻になりました |
Result.ImageURL、Result.GetImageBytes() | 削除されました。ニードル画像はもう存在しません |
ErrHTTPNon200 | ErrUnexpectedStatus。errors.Is で確認してください |
ErrEmptyField | ErrEmptyResult |
ErrImgLoadNon200、ErrReadingBytes | 画像 API とともに削除されました |
| — | Result.History が新たに追加されました。約 1 年分の日次スコアが含まれます |
スコアは整数に丸めた値から、CNN が提供する正確な浮動小数点数に変更されました。そのため、v1 の 44 は、v2 では 43.71 のような値に相当します。以前と同じ表示にする必要がある場合は、%.0f または math.Round で丸めてください。
プロジェクトの歴史
v1(2021 年)は goquery を使用して money.cnn.com/data/fear-and-greed の HTML を解析し、インデックスのニードル画像もダウンロードできました。CNN がそのページを削除したため解析が動作しなくなり、画像も存在しなくなりました。v2(2026 年)は JSON エンドポイントを使用した書き直しで、API を簡素化し、履歴データを追加して、依存関係をゼロにしました。v1 の最後のリリースには v1.2.0 のタグが付いています。
データに関する免責事項
このパッケージは CNN と提携しておらず、CNN の承認も受けていません。Fear & Greed Index とその値は CNN(Warner Bros. Discovery)に帰属します。MIT ライセンスの対象はこのリポジトリ内のコードのみであり、CNN のデータに関する権利は付与されません。CNN の利用規約では、サイトコンテンツの個人利用が許可されている一方、商用利用は制限されています。このデータを製品で使用する場合、規約への準拠は利用者の責任です。また、エンドポイントはいつでも変更または消失する可能性があります。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。