mcpField
M
market-microstructure

market-microstructure

github.com/agiprolabsデータ・データベース456522 回インストール8 週間前に更新
リポジトリ

market-microstructure について

オーダーブックではなくAMMプールを使うSolana DEXの取引フローを分析するスキルです。取引分類、出来高や売買圧力の指標、モメンタム、トークンの回転率、仮装取引の検出を扱います。

主な機能

  1. 01スワップを買い・売りに分類
  2. 02時間別・規模別の出来高分析
  3. 03買い圧力と売り圧力の測定
  4. 04モメンタムと回転率の指標化
  5. 05仮装取引の疑いを検出

活用シーン

  1. 01トークンの売買フローを評価
  2. 02大口取引と小口取引を区別
  3. 03出来高急増や仮装取引の疑いを調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/agiprolabs/claude-trading-skills --skill market-microstructure

インストール後、Claude Code で/market-microstructureを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
flow_signals.md
trade_classification.md
wash_trading.md
scripts/
trade_flow_analysis.py
volume_profile.py

詳細

マーケットマイクロストラクチャ — DEX のオーダーフロー分析

概要

Solana DEX のマーケットマイクロストラクチャは、従来の金融とは根本的に異なります。 AMM にオーダーブックはなく、すべての取引は流動性プールとのスワップです。それでも、 取引フロー分析は有効です。スワップの順序、規模、方向から、蓄積、分配、クジラの活動、 ウォッシュトレードのパターンを把握できます。

このスキルでは、以下について説明します。

  • 取引の分類 — スワップの方向から買いと売りを特定する
  • 出来高プロファイル — 時間別および規模別の内訳
  • 買い手/売り手の圧力 — 比率指標、ネットフロー、取引件数の非対称性
  • 取引規模の分布 — クジラの検出、個人投資家と機関投資家のフロー
  • フローモメンタムシグナル — 加速、出来高急増、複合スコア
  • トークンの回転率 — センチメントの代替指標としての売買回転率
  • ウォッシュトレードの検出 — 偽の出来高やボットのパターンを見つける

DEX でマイクロストラクチャが重要な理由

CEX では、マイクロストラクチャとはオーダーブックの厚み、ビッド・アスク・スプレッド、 および注文の優先順位を指します。AMM では、流動性はプールの価格曲線に存在するため、 スプレッドも注文の優先順位もありません。しかし、取引テープ(時系列順に並んだスワップの一覧) には豊富なシグナルが含まれています。

  1. 誰が取引しているか? — クジラのウォレットか個人投資家か、スマートマネーかボットか
  2. どのように取引しているか? — 大口の単発スワップか、DCA 形式の分割取引か
  3. いつ取引しているか? — イベントやタイムゾーンに関連した出来高の集中
  4. どちらの方向か? — ローリングウィンドウにおける買い圧力と売り圧力の差し引き

これらのシグナルは、エントリー/エグジットのタイミング、ポジションサイズ、トークン品質のスコアリングに役立ちます。

取引の分類

買いと売りの特定

Solana DEX では、すべてのスワップに入力トークンと出力トークンがあります。

スワップの方向分類意味
SOL → Token買いトレーダーが SOL を使ってトークンを取得
USDC → Token買いトレーダーがステーブルコインを使ってトークンを取得
Token → SOL売りトレーダーがトークンを SOL に戻す
Token → USDC売りトレーダーがトークンをステーブルコインに戻す
Token A → Token B状況による分析対象のトークンに基づいて分類
API データソースからの取得

Birdeye Trade History(/defi/txs/token):

  • side フィールドを返します。値は "buy" または "sell" です。
  • from(入力トークン)と to(出力トークン)の数量を含みます。

DexScreener Pair Trades:

  • ペアに対するスワップの方向を示す type フィールドを返します。

Helius Parsed Transactions:

  • スワップの命令を解析して、入力/出力のミントと数量を抽出します。
  • どのミントが対象のトークンと一致するかに基づいて分類します。

詳しい分類ロジックとサイズ区分については、references/trade_classification.md を参照してください。

出来高プロファイル

時間別プロファイル

取引出来高を固定の時間区分に集計し、パターンを特定します。

# Hourly volume profile
hourly_volume = {}
for trade in trades:
    hour = trade["timestamp"] // 3600 * 3600
    hourly_volume.setdefault(hour, {"buy_vol": 0, "sell_vol": 0})
    if trade["side"] == "buy":
        hourly_volume[hour]["buy_vol"] += trade["volume_usd"]
    else:
        hourly_volume[hour]["sell_vol"] += trade["volume_usd"]

時間別プロファイルから得られる主な指標:

  • ピーク時間帯 — トークンの取引が最も活発な時間帯
  • 出来高のトレンド — 出来高が増加、減少、または安定しているか
  • 出来高の異常 — ローリング平均の 3 倍を超える急増
規模別プロファイル

取引を規模ごとに分類し、クジラの活動と個人投資家の活動を区別します。

区分SOL の範囲主な取引主体
極小< 0.1 SOL端数/テスト取引
小0.1 – 1 SOL個人投資家
中1 – 10 SOL活発なトレーダー
大10 – 50 SOL本格的なポジション
クジラ50+ SOLクジラ/機関投資家

買い手/売り手の圧力指標

基本比率
def compute_pressure(trades: list[dict], period_seconds: int = 3600) -> dict:
    """Compute buy/sell pressure metrics over a time period."""
    buy_vol = sum(t["volume_usd"] for t in trades if t["side"] == "buy")
    sell_vol = sum(t["volume_usd"] for t in trades if t["side"] == "sell")
    total_vol = buy_vol + sell_vol

    buy_trades = sum(1 for t in trades if t["side"] == "buy")
    sell_trades = sum(1 for t in trades if t["side"] == "sell")
    total_trades = buy_trades + sell_trades

    return {
        "buy_sell_ratio": buy_vol / sell_vol if sell_vol > 0 else float("inf"),
        "buy_volume_pct": buy_vol / total_vol if total_vol > 0 else 0.5,
        "net_flow_usd": buy_vol - sell_vol,
        "trade_count_ratio": buy_trades / total_trades if total_trades > 0 else 0.5,
    }
シグナルの解釈
指標強気中立弱気
買い出来高比率> 60%40–60%< 40%
ネットフロープラスで増加中ゼロ付近マイナスで増加中
取引件数比率> 0.550.45–0.55< 0.45
大口取引比率買い側が優勢均衡売り側が優勢

シグナルの一覧と複合スコアの詳細については、references/flow_signals.md を参照してください。

取引サイズの分布

取引サイズの分布を分析すると、市場構造が明らかになります。

import statistics

def analyze_trade_sizes(trades: list[dict]) -> dict:
    """Analyze trade size distribution."""
    sizes = [t["volume_usd"] for t in trades]
    if not sizes:
        return {}

    return {
        "mean": statistics.mean(sizes),
        "median": statistics.median(sizes),
        "stdev": statistics.stdev(sizes) if len(sizes) > 1 else 0,
        "skew_indicator": statistics.mean(sizes) / statistics.median(sizes),
        "max_trade": max(sizes),
        "whale_pct": sum(s for s in sizes if s > 5000) / sum(sizes),
    }

歪度の解釈: skew_indicator(平均値/中央値)が 1.0 を大きく上回る場合、裾の厚い分布を示しており、少数の大口取引が支配的です。これはクジラの関心が高いトークンでは一般的ですが、相場操縦の兆候である可能性もあります。

取引フローから得られるモメンタムシグナル

出来高の加速

現在の期間の出来高を前の期間と比較します。

acceleration = current_volume / previous_volume if previous_volume > 0 else 0
  • acceleration > 2.0 — 出来高急増。ブレイクアウトまたは急落の可能性があります
  • acceleration 0.8–1.2 — 活動が安定しています
  • acceleration < 0.5 — 関心が薄れています
買い圧力の加速

買い比率の経時変化を追跡します。

current_buy_ratio = current_buy_vol / current_total_vol
previous_buy_ratio = prev_buy_vol / prev_total_vol
buy_momentum = current_buy_ratio - previous_buy_ratio

出来高の増加を伴う正の buy_momentum は、強い買い集めのシグナルです。

トークンの流通速度

トークンの流通速度は、トークンがどれくらい頻繁に持ち主を変えるかを測定します。

velocity = daily_volume / circulating_supply
流通速度解釈
< 0.01活動が低調、流動性が低い、または強固な保有者がいる
0.01–0.05通常の取引活動
0.05–0.20活発な取引。投機の可能性があります
> 0.20非常に高い回転率。ウォッシュトレードの可能性があります

ユニークなトレーダー数が少ないにもかかわらず流通速度が高い場合、ウォッシュトレードの危険信号です。

ウォッシュトレードの検出

ウォッシュトレードは、トークンを実際以上に活発に見せるために出来高を水増しします。 主な検出シグナルは次のとおりです。

  1. ユニークなトレーダーの比率が低い — unique_wallets / trade_count < 0.3
  2. 出来高/TVL の異常 — daily_volume / tvl > 10(出来高が流動性を大幅に上回る)
  3. 取引サイズが均一 — 取引サイズ分布のエントロピーが低い
  4. 自己取引 — 短い時間枠内で同じウォレットが両側に存在する
  5. 同時に資金提供されたクラスター — 複数のウォレットが同じ送金元から資金提供されている

詳細な検出方法とスコアリングについては、references/wash_trading.md を参照してください。

データソース

Birdeye API

Solana トークンの取引履歴を取得する主なデータソースです。

  • GET /defi/txs/token — トークンの最近の取引
  • GET /defi/ohlcv — 出来高を含むローソク足データ
  • GET /defi/price/volume — 集計された出来高データ

API キーが必要です。エンドポイントの詳細については、birdeye-api スキルを参照してください。

DexScreener API

ペア単位のデータを取得できる、無料で認証不要の代替手段です。

  • GET /latest/dex/tokens/{address} — 出来高を含むトークンペア
  • GET /latest/dex/pairs/solana/{pairAddress} — ペアの詳細
Helius API

ウォレット単位の取引分析やパース済みトランザクションに使用します。

  • スワップトランザクションをパースして取引の詳細を抽出します
  • 取引を特定のウォレットに帰属させます
  • トランザクションのパースについては、helius-api スキルを参照してください

複合モメンタムスコア

複数のフローシグナルを単一のスコア(範囲:-100~+100)にまとめます。

def compute_momentum_score(
    buy_ratio: float,
    volume_accel: float,
    whale_buy_pct: float,
    unique_trader_trend: float,
) -> float:
    """Compute composite momentum score from flow signals.

    Args:
        buy_ratio: Buy volume / total volume (0 to 1).
        volume_accel: Current vol / previous vol.
        whale_buy_pct: Whale buy volume / total whale volume (0 to 1).
        unique_trader_trend: Change in unique traders vs previous period.

    Returns:
        Score from -100 (strong sell pressure) to +100 (strong buy pressure).
    """
    # Buy ratio component: 0.5 = neutral, maps to [-40, +40]
    buy_component = (buy_ratio - 0.5) * 80

    # Volume acceleration: >1 = growing, maps to [-20, +20]
    vol_component = min(max((volume_accel - 1.0) * 20, -20), 20)

    # Whale direction: 0.5 = neutral, maps to [-25, +25]
    whale_component = (whale_buy_pct - 0.5) * 50

    # Unique trader growth: positive = healthy, maps to [-15, +15]
    trader_component = min(max(unique_trader_trend * 15, -15), 15)

    score = buy_component + vol_component + whale_component + trader_component
    return max(-100, min(100, score))
スコア範囲解釈
+60 to +100強い買い集め — 強い買い圧力
+20 to +60緩やかな買い — 慎重な買い集め
-20 to +20中立/均衡したフロー
-60 to -20緩やかな売り — 分配が進行中
-100 to -60強い分配 — 強い売り圧力

他のスキルとの連携

スキル連携方法
birdeye-api取引履歴と出来高の主なデータソース
helius-apiパース済みトランザクションから取得する、ウォレットに帰属した取引データ
liquidity-analysis出来高/TVL 比率、およびフローシグナルを解釈するための流動性の状況
whale-tracking大口取引の帰属先となるクジラのウォレットを特定
token-holder-analysis流通速度指標を解釈するための供給量分布の状況
position-sizingフローシグナルを利用してエントリーサイズを調整
regime-detectionフローモメンタムとレジーム分類を組み合わせる

ファイル

リファレンス
  • references/trade_classification.md — 買い/売りの分類ロジック、サイズ区分、集計
  • references/flow_signals.md — 数式と解釈を含むシグナルの完全な一覧
  • references/wash_trading.md — 検出方法、指標、リスクスコアリング
スクリプト
  • scripts/trade_flow_analysis.py — 取引を取得して分類し、フローシグナルとモメンタムを計算します
  • scripts/volume_profile.py — 時間ごとの出来高プロファイル、トレンド検出、異常の特定

コメント