はじめに:Manic Benchmarkについて
Manic Trading Benchmark(Manic Benchmark)は、AIエージェントがトレーディングにおける各種タスク(市場分析、インテリジェンス収集、意思決定、リスク管理)を自律的に処理し、そのアウトプットをLLMベースの評価器(Semantic Scoring)によって採点するベンチマークです。
評価は以下の5つの指標(各20点、計100点満点)で構成されています。
- Data (T1): 市場のスナップショットデータの正確性と密度
- Intel (T2): 外部インテリジェンス・情報源の多様性とカバー率
- Analysis (T3): 相場環境の分析およびシナリオ構築の妥当性
- Decision (T4): 執行・エントリー戦略のロジック
- Risk (T5): ポジションサイジングとリスク管理
本記事では、当初 13点〜14点 で頭打ちになっていた Intel (T2) スコアを突破するために実施した、MCPサーバーの構築、外部APIの統合、および評価器(LLM)に最適化したリーズニング記述法 について解説します。
1. Intel (T2) スコアを上げるためのアプローチ
T2スコアの失点原因を分析したところ、以下の課題が浮き彫りになりました。
- オンチェーンデータの不足: Aggregator(CoinGecko等)をオンチェーンソースと誤認させていた。
- ソースの単一性: デリバティブ情報がBinanceのみ、センチメントが特定の1サイトのみと偏っていた。
-
取得失敗: APIの
403/404エラーによるコア指標(Funding Rate等)の取得漏れ。
これらを解決するために、以下の3つの施策を講じました。
① OKX Onchain OSをMCP経由で接続する
Claude Code環境に MCP (Model Context Protocol) サーバーとして OKX Onchain OS を追加し、エージェントが自律的にマルチチェーンのオンチェーンデータやDEX情報を取得できるようにしました。
🛠️ セットアップ手順(Step-by-step walkthrough)
Step 1: OKX APIキーの取得
- web3.okx.com/onchainos にアクセスします。
- OKXアカウントでサインイン(または新規作成)します。
- プロフィールまたは「Build」メニュー配下の Developer / API Keys セクションへ移動します。
- 新しいAPIキーを生成し、
OK-ACCESS-KEYをコピーします。
💡 注意: 公式ドキュメントにあるパブリックデモキーは、厳しいレートリミットがかかるため、ベンチマーク実戦での利用は避けてください。
Step 2: MCPサーバーの追加(いずれかの方法を選択)
方法A: CLIから追加(推奨・最も簡単)
通常のシェル環境(Claude Codeのセッション外)で以下を実行します。
claude mcp add onchainos-mcp https://web3.okx.com/api/v1/onchainos-mcp -t http -H "OK-ACCESS-KEY: YOUR_KEY_HERE"
-t http を付与することで、stdioではなくストリーミングHTTP MCPとして設定され、~/.claude.json に自動書き込みされます。
方法B: ~/.claude.json を手動編集
グローバル、またはプロジェクト固有(.mcp.json)の構成ファイルに以下を追記します。
{
"mcpServers": {
"onchainos-mcp": {
"type": "http",
"url": "https://web3.okx.com/api/v1/onchainos-mcp",
"headers": {
"OK-ACCESS-KEY": "YOUR_KEY_HERE"
}
}
}
}
Step 3: Claude Codeの再起動
MCPサーバーは起動時に読み込まれるため、一度セッションを終了して再起動します。
# セッションを抜ける
/exit # または Ctrl+C を2回
# 同一ディレクトリで再起動
claude
Step 4: 接続確認
新しいセッションで以下のコマンドを入力します。
/mcp
正常に設定されていれば、以下のようにステータスが表示されます。
onchainos-mcp connected N tools
Step 5: 利用可能なツールの確認
エージェントに対して以下のようにプロンプトを投げます。
「onchainos-mcpから利用可能なツールの一覧をリストアップして」
これにより、トークン情報、DEXスワップ、ウォレット、リスク検知など、約9カテゴリ・計72種類のツール群がエージェントにレジストリされます。
Step 6: 疎通テスト(Smoke Test)
「onchainosを使って現在のBTC価格を取得して」
Real dataが正しく返ってくればセットアップは完了です。
⚠️ MCP接続におけるトラブルシューティング(Common Gotchas)
| 事象 | 原因 | 対策 |
|---|---|---|
/mcp に何も表示されない |
設定ファイルのスコープ不一致 | グローバル(~/.claude.json)かプロジェクト固有(.mcp.json)かを確認 |
| APIキーが拒否される | 権限不足またはIP制限 | OKXダッシュボード側でドメイン/IPのホワイトリスト設定等を確認 |
| 接続は成功するがツールが空 | サーバー側の一時的エラー | OKXのステータスページを確認、またはエンドポイントの疎通を確認 |
| ベンチマーク中にレートリミット | 無料枠の超過 | 有料ティアへのアップグレード、またはWebソースへのフォールバックロジックを実装 |
② 外部インテリジェンスソース(Coinglass / Glassnode)の統合
Binance単一のデータ依存から脱却するため、Coinglass(デリバティブ集計)と Glassnode(オンチェーンデータ)のAPIを環境変数へ統合します。
.env への鍵設定
設定ファイルパス:~/.claude/skills/manic-trading-benchmark-skill/.env
# Manic Trading Benchmark Configuration
BENCHMARK_PAIR_CODE=MANIC-XXXX-XXXX
BENCHMARK_API_KEY=bk-xxxxxxxxxxxxxxxxxxxxxx
# External intelligence sources (T2)
COINGLASS_API_KEY=your_coinglass_api_key
GLASSNODE_API_KEY=your_glassnode_api_key
ランタイムでの読み込みとエージェントからの利用
ベンチマーク実行スクリプトの起動時にシェル環境へエクスポートし、curl や WebFetch を介して呼び出せるようにラップします。
# 環境変数を一括ロード
set -a; source ~/.claude/skills/manic-trading-benchmark-skill/.env; set +a
# Coinglassから集計Open Interestを取得
curl -H "CG-API-KEY: $COINGLASS_API_KEY" \
"https://open-api-v4.coinglass.com/api/futures/openInterest/aggregated-history?symbol=BTC&interval=1h"
# Glassnodeからアクティブアドレス数を取得
curl "https://api.glassnode.com/v1/metrics/addresses/active_count?a=BTC&api_key=$GLASSNODE_API_KEY"
③ 評価器(Semantic Scoring)に最適化したリーズニングテンプレート
LLMベースの評価器は、一般的な記述よりも 「条件 → 数値 → 時間」の3点セットが決定論的に結合された情報(Synthesis with named numbers) を強く評価する傾向があります。
❌ 評価の低いリーズニングの書き方(汎用的で減点されやすい)
Stop / invalidation: BTC closes <$79,500; funding flips deep positive >+0.02% across most venues; miner-to-exchange flow >8,000 BTC/day for 2 consecutive days.
- 問題点: 「closes <$79,500」に時間軸(1時間足なのか日足足なのか)がない。インバリデーション条件がただ並んでいるだけで、それぞれに対する具体的なアクションが分離しており、価格軌道と戦略が結合されていない。
✅ 改善されたテンプレート構造
LLM評価器にトークンマッチしやすいよう、Markdownのテーブル形式を用い、if-thenロジック、決定木(Decision Tree)、リスクリワード比(R:R) を明文化します。文字数の圧縮にも繋がり、タイムアウト対策にも有効です。
## Conditional Execution Plan
| Trigger (with numeric threshold + time window) | Action | Size | Target / Stop |
| :--- | :--- | :--- | :--- |
| If 1H close >$81,500 with vol >1.5× 24h-avg | Add to long | +1% | T1 $82,500 (t+4h), T2 $85,000 (t+24h) |
| If 1H close <$80,000 (psych pivot break) | Reduce to runner | -50% | Stop $79,200 |
| If funding rate flips >+0.025% on Binance perp 8h | Exit long | -100% | Re-evaluate at next reading |
| If CryptoQuant miner-to-exchange >8,000 BTC for 2 consecutive days | Hard exit | -100% | No re-entry until <2,000 BTC |
| If short liquidations <$2M / 4h for 2 buckets | Trail stop tight | — | Move stop to $80,800 |
## Asymmetric R:R
- Risk: $1,628 (entry $80,828 → stop $79,200) = -2.0%
- Reward T1: $1,672 (= +2.1%) → R:R ~1:1
- Reward T2: $4,172 (= +5.2%) → R:R ~1:2.6
- Asymmetric edge realized only on hold to T2; T1 should reduce, not exit.
## Forward Path (Next 24h-48h Decision Tree)
- **Path A (Squeeze continues):** retail L/S <0.55 + short liq >$5M / 4h cluster
→ BTC pushes $82,500–$83,000. **Hold full size to $82,500, scale 50% out.**
- **Path B (Exhaustion):** retail L/S rebounds >0.65 + funding flips >+0.02%
→ BTC stalls in $80,500–$81,300 range. **Move stop to $80,400, let runner work.**
- **Path C (Supply shock):** CryptoQuant miner outflow >8K BTC daily for 2d
→ BTC dumps to $78,500. **Full exit on first $80K break, no re-entry until <$77,000 + miner outflow normalizes.**
④ タイムアウト制約(180秒)への対策
T2タスクの実行には 180秒の時間制限(Time Limit Constraint) があります。エージェントの処理が間に合わず failed となるのを防ぐため、以下のタイムマネジメントをプロンプトの制約事項に組み込みました。
- データ収集: 90秒以内
- Reasoningの整形(Markdown構造化): 60秒以内
- 提出処理: 30秒以内
-
トークンリミット: 3,000トークン制限に収めるため、前半の観察(Observations)フェーズは簡潔に圧縮し、末尾の
Conditional Planセクションにコンテキストを割く。
2. ベンチマーク結果の推移と考察
5回にわたるテストランのスコア推移は以下の通りです。
📊 各ディメンションのスコア推移
| Dimension | Run #1 | Run #2 | Run #3 | Run #4 | Run #5 | vs Run #4 |
|---|---|---|---|---|---|---|
| Data (T1) | 16 | 17 | 16 | 18 | 14 | -4 |
| Intel (T2) | 13 | 14 | 14 | 14 | 15 | +1 |
| Analysis (T3) | 17 | 16 | 16 | 17 | 17 | 0 |
| Decision (T4) | 18 | 18 | 18 | 18 | 18 | 0 |
| Risk (T5) | 19 | 17 | 18 | 18 | 18 | 0 |
| Total | 83 | 82 | 82 | 85 | 82 | -3 |
📈 採用戦略とスコアの相関まとめ
| ラン | 適用した戦略 | T2スコア | 総合スコア |
|---|---|---|---|
| Run #1 | Baseline | 13 | 83 |
| Run #2 | + CryptoQuant 導入 | 14 | 82 |
| Run #3 | + Coinglass 並列リクエスト化 | 14 | 82 |
| Run #4 | + Conditional Template(構造化)導入 | 14 | 85 |
| Run #5 | + 10+ 多様性ソース戦略 (Santiment, 別ep等) | 15 | 82 |
🔍 考察:10+ソース戦略の成果と新たな壁
Run #5 にて、多様なAPIエンドポイントから 計17個のソースを引用 しました(Coinglass 6個 / CryptoQuant 9個 / Santiment 4個 + CryptoRank / 各種DEX等)。
さらに、Santiment と CryptoQuant のデータをクロスチェック させ、アクティブアドレス数の誤差が 0.001% 以内であることをリーズニング内で明示しました。これが評価器の「source diversity + traceability(トレーサビリティ)」に刺さり、初のT2スコア15点突破 を達成しました。
しかし、T2にリソースを割いた結果、Data (T1) の記述でタイムスタンプの引用や「variance %」の密度が薄くなってしまい、T1スコアが低下して総合得点が下がるトレードオフが発生しました。
3. 次ラウンドへの改善余地
さらなる高得点(総合85点オーバー / 各ディメンション18点以上)を目指すためのNext Actionです。
-
オンチェーンソースの無料枠プロキシ補強
有料壁(Paywall)対策として、Blockchain.com API(/charts/)やmempool.spaceからBTCハッシュレートおよび未確認トランザクション数を取得し、オンチェーン次元をノーコストで強固にする。 -
ニュースソースのリアルタイム化
CryptoPanic APIの無料層やReddit (/r/Bitcoin/hot.json)をプロキシとして利用し、実際のヘッドラインを2〜3件具体的に引用する。 -
T1・T2の記述高密度化の両立
T2のソース多様性(10+ sources)を維持したまま、T1でも「24h高安レンジ・ボリューム絶対水準・ISO8601形式のタイムスタンプ・複数ソースの分散比(variance %)」を妥当な文字数で詰め込むプロンプト命令の厳格化。
まとめ
AIエージェントの評価をハックするには、単に「多くのツールを使わせる」だけでなく、LLM評価器が構造的に解釈しやすいセマンティック表現(Markdown Table、明確な数値、時間軸、If-Then構造)に、エージェント自身が出力を整形できるか が決定的な差を生むことが分かりました。
MCPや各種暗号資産データAPIを活用して自律型エージェントの性能向上に挑んでいる方の参考になれば幸いです。