Market Microstructure logo

Market Microstructure

Community
agiprolabs
market-microstructure

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

Overview

Publisheragiprolabs
Repositoryclaude-trading-skills
Skill namemarket-microstructure
Stars
434
Forks
85
Bundled files
5
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 5 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by agiprolabs on GitHub. Read the source before you install it.

Installation

Install the Market Microstructure AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/agiprolabs/claude-trading-skills/tree/main/skills/market-microstructure
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/agiprolabs/claude-trading-skills.git /tmp/claude-trading-skills
mkdir -p .claude/skills
cp -r /tmp/claude-trading-skills/skills/market-microstructure .claude/skills/market-microstructure
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Market Microstructure in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Market Microstructure on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Market Microstructure is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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 DirectionClassificationMeaning
SOL → TokenBuyTrader spending SOL to acquire token
USDC → TokenBuyTrader spending stables to acquire token
Token → SOLSellTrader converting token back to SOL
Token → USDCSellTrader converting token to stables
Token A → Token BContext-dependentClassify 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:

python
# 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:

BucketSOL RangeTypical Actor
Micro< 0.1 SOLDust / test trades
Small0.1 – 1 SOLRetail traders
Medium1 – 10 SOLActive traders
Large10 – 50 SOLSerious positions
Whale50+ SOLWhales / institutions

Buyer/Seller Pressure Metrics

Core Ratios

python
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

MetricBullishNeutralBearish
Buy Volume %> 60%40–60%< 40%
Net FlowPositive, increasingNear zeroNegative, increasing
Trade Count Ratio> 0.550.45–0.55< 0.45
Large Trade RatioHigh buy-sideBalancedHigh 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:

python
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:

python
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:

python
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:

python
velocity = daily_volume / circulating_supply
VelocityInterpretation
< 0.01Low activity, illiquid, or strong holders
0.01–0.05Normal trading activity
0.05–0.20Active trading, possible speculation
> 0.20Very 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 ratio — unique_wallets / trade_count < 0.3
  2. Volume/TVL anomaly — daily_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):

python
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 RangeInterpretation
+60 to +100Strong accumulation — heavy buy pressure
+20 to +60Moderate buying — cautious accumulation
-20 to +20Neutral / balanced flow
-60 to -20Moderate selling — distribution underway
-100 to -60Strong distribution — heavy sell pressure

Integration with Other Skills

SkillHow It Connects
birdeye-apiPrimary data source for trade history and volume
helius-apiWallet-attributed trade data from parsed transactions
liquidity-analysisVolume/TVL ratios, liquidity context for flow signals
whale-trackingIdentify whale wallets for large trade attribution
token-holder-analysisSupply distribution context for velocity metrics
position-sizingUse flow signals to adjust entry sizing
regime-detectionCombine 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

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Market Microstructure AI skill do?

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

Why use Market Microstructure on TypingMind?

Because you install it once and use it with any model. Market Microstructure is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Market Microstructure in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/agiprolabs/claude-trading-skills/tree/main/skills/market-microstructure. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Market Microstructure?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Market Microstructure?

As many as you like. As long as a model supports skills, you can use Market Microstructure with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Market Microstructure AI skill free?

Yes. It is published on GitHub by agiprolabs under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇