jpskill.com
💬 コミュニケーション コミュニティ

market-microstructure

DEX orderflow analysis, trade classification, buyer/seller pressure, and microstructure signals for Solana tokens

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o market-microstructure.zip https://jpskill.com/download/10419.zip && unzip -o market-microstructure.zip && rm market-microstructure.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10419.zip -OutFile "$d\market-microstructure.zip"; Expand-Archive "$d\market-microstructure.zip" -DestinationPath $d -Force; ri "$d\market-microstructure.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して market-microstructure.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → market-microstructure フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1
📖 Claude が読む原文 SKILL.md(中身を展開)

この本文は AI(Claude)が読むための原文(英語または中国語)です。日本語訳は順次追加中。

Market Microstructure — DEX Orderflow Analysis

Overview

Market microstructure on Solana DEXes differs fundamentally from traditional finance. There are no orderbooks on AMMs — every trade is a swap against a liquidity pool. Yet trade flow analysis remains powerful: the sequence, size, and direction of swaps reveal accumulation, distribution, whale activity, and wash trading patterns.

This skill covers:

  • Trade classification — identifying buys vs sells from swap direction
  • Volume profiles — time-based and size-based breakdowns
  • Buyer/seller pressure — ratio metrics, net flow, trade count asymmetry
  • Trade size distribution — whale detection, retail vs institutional flow
  • Flow momentum signals — acceleration, volume spikes, composite scores
  • Token velocity — turnover rate as a sentiment proxy
  • Wash trading detection — spotting fake volume and bot patterns

Why Microstructure Matters on DEXes

On CEXes, microstructure means orderbook depth, bid-ask spread, and queue position. On AMMs, liquidity sits in pool curves — there is no spread or queue. But the trade tape (the chronological list of swaps) contains rich signal:

  1. Who is trading? — Whale wallets vs retail, smart money vs bots
  2. How are they trading? — Large single swaps vs DCA-style splits
  3. When are they trading? — Volume clustering around events or time zones
  4. What direction? — Net buy vs sell pressure over sliding windows

These signals feed into entry/exit timing, position sizing, and token quality scoring.

Trade Classification

Buy vs Sell Identification

On Solana DEXes, every swap has an input token and output token:

Swap Direction Classification Meaning
SOL → Token Buy Trader spending SOL to acquire token
USDC → Token Buy Trader spending stables to acquire token
Token → SOL Sell Trader converting token back to SOL
Token → USDC Sell Trader converting token to stables
Token A → Token B Context-dependent Classify based on which token you're analyzing

From API Data Sources

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

  • Returns side field: "buy" or "sell"
  • Includes from (input token) and to (output token) amounts

DexScreener Pair Trades:

  • Returns type field indicating swap direction relative to the pair

Helius Parsed Transactions:

  • Parse swap instructions to extract input/output mints and amounts
  • Classify based on which mint matches your target token

See references/trade_classification.md for detailed classification logic and size buckets.

Volume Profiles

Time-Based Profiles

Aggregate trade volume into fixed time buckets to identify patterns:

# 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"]

Key metrics from time profiles:

  • Peak hours — when is the token most actively traded?
  • Volume trend — is volume increasing, decreasing, or stable?
  • Volume anomalies — spikes exceeding 3x the rolling average

Size-Based Profiles

Classify trades into size buckets to separate whale activity from retail:

Bucket SOL Range Typical Actor
Micro < 0.1 SOL Dust / test trades
Small 0.1 – 1 SOL Retail traders
Medium 1 – 10 SOL Active traders
Large 10 – 50 SOL Serious positions
Whale 50+ SOL Whales / institutions

Buyer/Seller Pressure Metrics

Core Ratios

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,
    }

Signal Interpretation

Metric Bullish Neutral Bearish
Buy Volume % > 60% 40–60% < 40%
Net Flow Positive, increasing Near zero Negative, increasing
Trade Count Ratio > 0.55 0.45–0.55 < 0.45
Large Trade Ratio High buy-side Balanced High sell-side

See references/flow_signals.md for the full signal catalog and composite scoring.

Trade Size Distribution

Analyzing the distribution of trade sizes reveals market structure:

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),
    }

Interpreting skew: A skew_indicator (mean/median) well above 1.0 indicates a fat-tailed distribution — a few large trades dominate. This is normal for tokens with whale interest but can also signal manipulation.

Momentum Signals from Trade Flow

Volume Acceleration

Compare current period volume to the previous period:

acceleration = current_volume / previous_volume if previous_volume > 0 else 0
  • acceleration > 2.0 — volume surge, potential breakout or dump
  • acceleration 0.8–1.2 — stable activity
  • acceleration < 0.5 — dying interest

Buy Pressure Acceleration

Track how the buy ratio changes over time:

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

Positive buy_momentum with increasing volume is a strong accumulation signal.

Token Velocity

Token velocity measures how frequently tokens change hands:

velocity = daily_volume / circulating_supply
Velocity Interpretation
< 0.01 Low activity, illiquid, or strong holders
0.01–0.05 Normal trading activity
0.05–0.20 Active trading, possible speculation
> 0.20 Very high turnover, potential wash trading

High velocity combined with low unique trader count is a wash trading red flag.

Wash Trading Detection

Wash trading inflates volume to make a token appear more active than it truly is. Key detection signals:

  1. Low unique trader ratiounique_wallets / trade_count < 0.3
  2. Volume/TVL anomalydaily_volume / tvl > 10 (volume vastly exceeds liquidity)
  3. Uniform trade sizes — low entropy in trade size distribution
  4. Self-trading — same wallet on both sides within short windows
  5. Funded-together clusters — multiple wallets funded from the same source

See references/wash_trading.md for detailed detection methods and scoring.

Data Sources

Birdeye API

Primary source for trade history on Solana tokens:

  • GET /defi/txs/token — recent trades for a token
  • GET /defi/ohlcv — candle data with volume
  • GET /defi/price/volume — aggregated volume data

Requires API key. See the birdeye-api skill for endpoint details.

DexScreener API

Free, no-auth alternative for pair-level data:

  • GET /latest/dex/tokens/{address} — token pairs with volume
  • GET /latest/dex/pairs/solana/{pairAddress} — pair details

Helius API

For wallet-level trade analysis and parsed transactions:

  • Parse swap transactions to extract trade details
  • Attribute trades to specific wallets
  • See the helius-api skill for transaction parsing.

Composite Momentum Score

Combine multiple flow signals into a single score (range: -100 to +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))
Score Range Interpretation
+60 to +100 Strong accumulation — heavy buy pressure
+20 to +60 Moderate buying — cautious accumulation
-20 to +20 Neutral / balanced flow
-60 to -20 Moderate selling — distribution underway
-100 to -60 Strong distribution — heavy sell pressure

Integration with Other Skills

Skill How It Connects
birdeye-api Primary data source for trade history and volume
helius-api Wallet-attributed trade data from parsed transactions
liquidity-analysis Volume/TVL ratios, liquidity context for flow signals
whale-tracking Identify whale wallets for large trade attribution
token-holder-analysis Supply distribution context for velocity metrics
position-sizing Use flow signals to adjust entry sizing
regime-detection Combine flow momentum with regime classification

Files

References

  • references/trade_classification.md — Buy/sell classification logic, size buckets, aggregation
  • references/flow_signals.md — Complete signal catalog with formulas and interpretation
  • references/wash_trading.md — Detection methods, metrics, and risk scoring

Scripts

  • scripts/trade_flow_analysis.py — Fetch trades, classify, compute flow signals and momentum
  • scripts/volume_profile.py — Hourly volume profiles, trend detection, anomaly identification