mcpField
M
market-microstructure-traditional

market-microstructure-traditional

github.com/agiprolabs其他456482 次安装8 周前更新
代码仓库

关于 market-microstructure-traditional

面向加密市场交易分析与做市研究的技能,讲解中心化交易所限价订单簿机制,并与 DEX 的 AMM 结构对比。涵盖价格形成、冲击、执行质量及做市风险。

主要功能

  1. 01拆解买卖价差与交易成本
  2. 02分析价格冲击和订单簿失衡
  3. 03介绍订单到达与价格形成模型
  4. 04评估 VWAP 和实施缺口
  5. 05比较 CEX 订单簿与 DEX AMM

适用场景

  1. 01分析大额订单的执行成本
  2. 02评估做市报价与库存风险
  3. 03比较 CEX 和 DEX 的交易机制

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/market-microstructure-traditional确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
cex_vs_dex.md
execution_quality.md
price_formation.md
scripts/
market_maker_sim.py
spread_analysis.py

详细介绍

市场微观结构(传统)

市场微观结构研究订单如何转化为交易,以及交易如何形成价格。了解这些机制对于优化执行、做市和检测信息型订单流至关重要。本技能介绍应用于中心化交易所加密市场的限价订单簿(LOB)理论,并对比 LOB 机制与基于 AMM 的 DEX 结构。

核心概念

概念含义
买卖价差即时交易的成本——现在交易与稍后交易之间的成本差异
价格冲击你的订单对市场价格的影响
订单簿失衡根据队列规模预测短期价格方向
逆向选择与知情交易对手交易的风险
库存风险做市商因累积头寸而承担的风险
执行质量你的成交与基准相比的表现

买卖价差分解

买卖价差并非单一组成部分,而是可分解为三个部分(Roll,1984;Glosten & Harris,1988):

  1. 逆向选择 — 与知情交易者交易所获得的补偿
  2. 库存持有 — 承担风险所获得的补偿
  3. 订单处理 — 提供流动性的固定成本(费用、基础设施)
价差指标
# Quoted spread: what you see on the order book
quoted_spread = best_ask - best_bid
quoted_spread_bps = (best_ask - best_bid) / midprice * 10_000

# Effective spread: what you actually pay (accounts for price improvement)
effective_half_spread = abs(trade_price - midprice_at_trade)
effective_spread_bps = effective_half_spread / midprice_at_trade * 10_000

# Realized spread: market maker's actual profit (after price moves)
# Measured at trade_price vs midprice N seconds later
realized_spread = trade_sign * (trade_price - midprice_after_delay)

有效价差对执行质量最为重要。有效价差与实现价差之间的差异衡量了逆向选择——即做市商因信息型订单流而蒙受的损失。


价格形成模型

Glosten-Milgrom(1985)

这是一个序贯交易模型,做市商设定买入价和卖出价,以便在知情交易者与非知情交易者的混合交易中实现盈亏平衡。

  • 做市商的报价反映了基于交易方向的条件期望值
  • 价差完全由逆向选择造成
  • 随着交易逐步揭示信息,价格会收敛至真实价值

关键见解:以下情况会导致价差扩大:

  • 知情交易的概率(PIN)较高
  • 信息不对称程度较大
  • 非知情交易量较低
Kyle 的 Lambda(1985)

Kyle 模型包含一名知情交易者、噪声交易者和一名做市商。做市商将价格设定为净订单流的线性函数:

price_change = lambda * net_order_flow

**Lambda(λ)**衡量单位签名交易量带来的永久价格冲击。Lambda 越高,市场流动性越差。可通过对价格变化与签名交易量进行回归来估算 Lambda:

import numpy as np
from numpy.linalg import lstsq

def estimate_kyle_lambda(
    price_changes: np.ndarray,
    signed_volumes: np.ndarray,
) -> float:
    """Estimate Kyle's lambda from trade data.

    Args:
        price_changes: Midprice changes between trades.
        signed_volumes: Trade volume * trade_sign (+1 buy, -1 sell).

    Returns:
        Estimated lambda (price impact per unit volume).
    """
    X = signed_volumes.reshape(-1, 1)
    beta, _, _, _ = lstsq(X, price_changes, rcond=None)
    return float(beta[0])

完整的模型推导以及用于衡量知情交易概率的 PIN 模型,请参阅 references/price_formation.md。


价格冲击模型

暂时性冲击与永久性冲击(Almgren-Chriss)

执行大额订单时:

  • 暂时性冲击 — 订单执行后会回归的价格偏移,由消耗挂单流动性造成。
  • 永久性冲击 — 交易所包含的信息使均衡价格发生变化,且不会回归。
total_impact = permanent_impact + temporary_impact
permanent = gamma * (shares / ADV)
temporary = eta * (shares / time_horizon) ^ alpha

典型的 alpha 值为 0.5-0.7(平方根冲击是稳健的经验发现)。

平方根冲击定律

经验表明,价格冲击与订单规模相对于日交易量的比值的平方根成正比:

def square_root_impact(
    order_size: float,
    daily_volume: float,
    volatility: float,
    impact_coefficient: float = 0.1,
) -> float:
    """Estimate price impact using the square root model.

    Args:
        order_size: Number of units to trade.
        daily_volume: Average daily volume.
        volatility: Daily return volatility (decimal).
        impact_coefficient: Empirical constant (typically 0.05-0.20).

    Returns:
        Expected price impact as a fraction.
    """
    return impact_coefficient * volatility * (order_size / daily_volume) ** 0.5

订单簿失衡

订单簿顶部附近买方与卖方的深度比值可预测短期价格方向:

def order_book_imbalance(
    bid_qty: float,
    ask_qty: float,
) -> float:
    """Compute order book imbalance.

    Returns:
        Imbalance in [-1, 1]. Positive = more bids (bullish).
    """
    total = bid_qty + ask_qty
    if total == 0:
        return 0.0
    return (bid_qty - ask_qty) / total

第 1-5 档的失衡是强有力的短期预测指标(Cont 等人,2014)。更深档位能提高预测能力,但这种能力会迅速衰减。


交易到达过程

泊松过程

最简单的模型:交易以恒定速率 λ 到达。到达间隔时间服从指数分布。该模型可用作基准,但对于真实订单流而言过于简单。

Hawkes 过程

一种自激点过程,每笔交易都会提高后续交易发生的概率,能够捕捉订单流中的聚集现象:

intensity(t) = mu + sum(alpha * exp(-beta * (t - t_i)))
  • mu:基准到达率
  • alpha:激发幅度(每个事件使强度提高多少)
  • beta:衰减率(激发效应消退的速度)
  • alpha/beta < 1:平稳性条件(分支比)

分支比 α/β 表示交易中属于反应而非创新的比例。在加密货币市场中,典型值为 0.5-0.8(反应性较高)。


做市商经济学

做市商从价差中获利,但面临三种风险:

  1. 逆向选择——输给知情交易者
  2. 库存风险——累积的方向性敞口
  3. 竞争——其他做市商缩窄价差
Avellaneda-Stoikov 模型

库存为 q 的做市商的最优买卖报价:

reservation_price = midprice - q * gamma * sigma^2 * T
optimal_spread = gamma * sigma^2 * T + (2/gamma) * ln(1 + gamma/k)

其中:

  • q:当前库存(正数 = 多头)
  • gamma:风险厌恶参数
  • sigma:波动率
  • T:剩余时间
  • k:订单到达率参数

关键洞察:保留价格会向远离库存的方向偏移——多头做市商会降低报价,以鼓励卖出。


执行质量衡量

VWAP 基准

成交量加权平均价格是被动执行的标准基准:

def vwap(prices: list[float], volumes: list[float]) -> float:
    """Compute VWAP from trade prices and volumes."""
    pv_sum = sum(p * v for p, v in zip(prices, volumes))
    v_sum = sum(volumes)
    return pv_sum / v_sum if v_sum > 0 else 0.0

# Execution quality vs VWAP
slippage_vs_vwap = (avg_fill_price - vwap_benchmark) / vwap_benchmark * 10_000
实施缺口

衡量相对于决策价格的执行总成本(Perold,1988):

implementation_shortfall = (execution_price - decision_price) * quantity

分解如下:

  • 延迟成本:决策与首次成交之间的价格漂移
  • 市场冲击:由你的订单造成的价格变动
  • 时机成本:将订单拆分成多个批次所产生的成本
  • 机会成本:未成交部分的价值

完整方法请参见 references/execution_quality.md。


CEX 订单簿与 DEX AMM

维度CEX(LOB)DEX(AMM)
价格发现限价订单表达交易意愿算法曲线(x·y=k)
价差由相互竞争的做市商设定由池深度和费率档位决定
深度可见订单簿根据 TVL 和曲线形状隐含得出
逆向选择做市商根据新信息重新定价LP 承受无常损失
执行价格优先、时间优先按区块收录顺序先到先得
延迟微秒区块时间(Solana 为 400ms,Ethereum 为 12s)
MEV抢先交易更困难(做市商集中部署)三明治攻击屡见不鲜
费用Maker/Taker(通常 Maker 可获得返佣)固定费率档位(例如 5、30、100 bps)

适用 CEX 的场景:大额订单、对延迟敏感的策略、需要较窄价差、BTC/ETH/主流交易对。

适用 DEX 的场景:长尾代币、抗审查、与 DeFi 的可组合性、透明执行。

详细的结构比较请参见 references/cex_vs_dex.md。


Maker/Taker 费率结构

CEX 费率档位会形成激励不对称:

档位Maker 费率Taker 费率盈亏平衡所需净价差
VIP 00.10%0.10%20 bps
VIP 50.02%0.05%7 bps
VIP 9-0.005%0.03%2.5 bps + 返佣收入

在较高档位,Maker 返佣意味着做市商提供流动性还能获得报酬。这从根本上改变了策略的经济性:

def maker_pnl_per_trade(
    spread_captured_bps: float,
    maker_fee_bps: float,
    adverse_selection_bps: float,
) -> float:
    """Compute market maker P&L per round trip.

    Args:
        spread_captured_bps: Half-spread captured on each side.
        maker_fee_bps: Maker fee (negative = rebate).
        adverse_selection_bps: Expected loss to informed flow.

    Returns:
        Net P&L in basis points per round trip.
    """
    gross = 2 * spread_captured_bps  # earn half-spread on each leg
    fees = 2 * maker_fee_bps         # pay/receive fee on each leg
    return gross - fees - adverse_selection_bps

文件

参考资料
  • references/price_formation.md — Glosten-Milgrom、Kyle 模型、PIN 模型、价差分解
  • references/execution_quality.md — VWAP、TWAP、实施缺口、滑点分解
  • references/cex_vs_dex.md — LOB 与 AMM 的结构比较、混合模型、路由决策
脚本
  • scripts/spread_analysis.py — 分析买卖价差,根据交易数据计算有效价差、已实现价差和报价价差(使用合成订单簿的 --demo 模式)
  • scripts/market_maker_sim.py — 带库存管理和 P&L 的做市商模拟(使用合成价格路径的 --demo 模式)

依赖项

uv pip install numpy pandas scipy matplotlib

相关技能

  • market-microstructure — 链上 DEX 微观结构(特定于 AMM)
  • slippage-modeling — 执行成本估算与建模
  • liquidity-analysis — 池和订单簿深度分析
  • order-execution — 实用执行算法
  • mev-analysis — 链上执行中的 MEV 风险

评论

支持 Markdown