execution-model
The execution-model skill simulates realistic trade execution costs for backtesting by incorporating slippage models (fixed, linear, and square-root impact formulas) and execution algorithms like VWAP and TWAP. Use this skill when backtesting trading strategies to replace idealized zero-cost assumptions with market-realistic execution costs including bid-ask spreads, market impact from large orders, and latency delays, enabling more accurate performance estimates before live trading.
git clone --depth 1 https://github.com/HKUDS/Vibe-Trading /tmp/execution-model && cp -r /tmp/execution-model/agent/src/skills/execution-model ~/.claude/skills/execution-modelSKILL.md
# Trade Execution Modeling
## Overview
Provide more realistic execution assumptions for backtests, including slippage models, market-impact estimation, and execution-algorithm principles. This skill is for backtest simulation only and does not involve live order execution.
## Slippage Models
### Why Slippage Models Are Needed
```
Idealized backtest: filled at the close, zero slippage
Real world:
1. The order book has a bid-ask spread
2. Large orders push prices (market impact)
3. Execution is delayed (there is latency from signal to fill)
No slippage model -> overly optimistic backtest -> losses in live trading
```
### 1. Fixed Slippage Model
```python
def fixed_slippage(price: float, direction: int, bps: float = 5.0) -> float:
"""
Args:
price: Original price
direction: 1=buy, -1=sell
bps: Slippage in basis points (1bp = 0.01%), default 5bp
Returns:
Execution price after slippage
"""
slippage = price * bps / 10000
return price + direction * slippage
```
**Reference fixed-slippage assumptions by market:**
| Market | Instrument | Suggested Slippage (bps) | Notes |
|------|------|-------------|------|
| China A-share large cap | CSI 300 constituents | 3-5 | Good liquidity |
| China A-share small cap | CSI 1000 constituents | 5-10 | Average liquidity |
| China micro-cap | market cap < 5 billion RMB | 10-30 | Poor liquidity |
| US large cap | AAPL / MSFT | 1-3 | Excellent liquidity |
| Hong Kong stocks | Hang Seng constituents | 5-10 | Less liquid than A / US |
| BTC spot | BTC-USDT | 2-5 | Good OKX liquidity |
| ETH spot | ETH-USDT | 3-8 | Slightly worse than BTC |
| Small altcoins | other `-USDT` pairs | 10-50 | Liquidity varies widely |
### 2. Linear Impact Model
```python
def linear_impact(price: float, direction: int,
volume_traded: float, adv: float,
impact_coeff: float = 0.1) -> float:
"""
Linear market impact: impact ∝ traded volume / ADV
Args:
price: Original price
direction: 1=buy, -1=sell
volume_traded: Trade size (shares or notional)
adv: Average Daily Volume
impact_coeff: Impact coefficient, usually 0.05-0.2
Returns:
Execution price after impact
"""
participation_rate = volume_traded / adv
impact = impact_coeff * participation_rate
return price * (1 + direction * impact)
```
**Reference impact coefficients:**
| Market | impact_coeff | Notes |
|------|-------------|------|
| China A-share large cap | 0.05-0.10 | 10% daily price-limit system |
| China A-share small cap | 0.10-0.20 | Liquidity premium |
| US equities | 0.03-0.08 | Market-maker buffering |
| Crypto | 0.05-0.15 | 24h trading is dispersed |
### 3. Square-Root Impact Model (Almgren-Chriss)
```python
import numpy as np
def sqrt_impact(price: float, direction: int,
volume_traded: float, adv: float,
volatility: float, eta: float = 0.5) -> float:
"""
Square-root market impact (more accepted in academia):
impact = η × σ × sqrt(V/ADV)
Args:
price: Original price
direction: 1=buy, -1=sell
volume_traded: Trade size
adv: Average daily volume
volatility: Daily volatility (standard deviation)
eta: Impact elasticity coefficient, usually 0.3-0.8
Returns:
Execution price after impact
"""
participation = volume_traded / adv
impact = eta * volatility * np.sqrt(participation)
return price * (1 + direction * impact)
```
**Advantages of the square-root model**:
- Strongest empirical support (standard in financial literature)
- Marginal impact declines for larger orders (intuitive)
- Parameters can be estimated from historical data
### Slippage Model Selection Decision Tree
```
Backtest capital vs instrument ADV:
├── Capital < 0.5% of ADV -> fixed slippage (5bps) is enough
├── Capital 0.5-5% -> linear impact model
└── Capital > 5% -> square-root impact model (required)
```
## Execution Algorithm Principles
### VWAP (Volume Weighted Average Price)
```
Goal: execute at the day's volume-weighted average price
VWAP = Σ(Price_i × Volume_i) / Σ(Volume_i)
Execution logic:
1. Forecast the intraday volume profile (typically U-shaped)
2. Split the order according to the predicted profile
3. Execute proportionally in each time slice
Typical China A-share VWAP volume profile (U-shaped):
09:30-10:00 15% (active open)
10:00-11:30 25% (normal morning session)
13:00-14:00 15% (weak afternoon session)
14:00-14:30 15% (afternoon recovery)
14:30-15:00 30% (active close)
VWAP in backtests:
- Daily backtest: use the VWAP field directly as the fill price
- Minute backtest: simulate VWAP order slicing
```
### TWAP (Time Weighted Average Price)
```
Goal: execute evenly over a specified time window
TWAP = simple time-sliced execution
Execution logic:
1. Define an execution window (for example 09:30-11:30)
2. Divide it into N time buckets
3. Execute total_size / N in each bucket
Pros and cons:
+ Simple, no need to forecast volume
- Easier to cause impact during low-volume periods
- Less adaptive than VWAP
```
### Simulating Execution Delay in Backtests
```python
def delayed_execution(signal_series: pd.Series, delay_bars: int = 1) -> pd.Series:
"""
Simulate the delay from signal generation to execution
Args:
signal_series: Original signal
delay_bars: Number of bars to delay, default 1 (T+1 execution)
Returns:
Delayed signal
China A-shares: delay_bars=1 (T+1 rule)
Crypto: delay_bars=0 or 1
"""
return signal_series.shift(delay_bars)
```
## Integrated Transaction-Cost Model
### Total Cost Breakdown
```
Total trading cost = explicit cost + implicit cost
Explicit cost:
- Commission: China A-shares 2-3 bps, crypto 0.02-0.1%
- Stamp duty (China A-share sell side): 0.05% (sell orders only)
- Transfer fee: negligible
Implicit cost:
- Bid-ask spread: 0.5-5bps
- Market impact: dProfessional finance research toolkit — backtesting (7 engines + benchmark comparison panel), factor analysis, Alpha Zoo (452 pre-built alphas across qlib158/alpha101/gtja191/academic), options pricing, 77 finance skills, 29 multi-agent swarm teams, Trade Journal analyzer, and Shadow Account (extract → backtest → render) across 7 data sources (tushare, yfinance, okx, akshare, mootdx, ccxt, futu).
ADR/H-share/A-share cross-listing premium analysis — track pricing gaps between US-listed ADRs, HK-listed H-shares, and A-shares for arbitrage signals, dual-listing valuation, and delisting risk assessment.
AKShare financial data aggregator (18k+ stars). Free, no API key. Covers A-shares, US, HK, futures, macro, forex. Primary fallback for tushare and yfinance.
Browse and bench the bundled alpha zoos — prebuilt cross-sectional factor libraries (Kakushadze 101, GTJA 191, Qlib 158, Fama-French / Carhart). Use when the user asks "which alphas exist", wants metadata on a named alpha, or wants to run IC/IR on a whole zoo over a universe.
A 股 ST/*ST 风险预测框架 — 基于最新中报/三季报或业绩预告/快报,预测下一财年是否会因营收、利润、净资产、分红不达标而被风险警示,并将新浪监管处罚记录作为独立证据面纳入风险等级。仅适用于 A 股,不预测财务造假。
Asset allocation theory and optimizer usage — MPT / Black-Litterman / risk budgeting / all-weather strategy, including guides for 4 optimizers and rebalancing rules.
Diagnose failed or underperforming backtests, locate the root cause, and fix the issue
Behavioral finance applications: theories of overreaction and underreaction, behavioral explanations for momentum and reversal, investor sentiment cycles, cognitive-bias checklists, and debiasing quantitative strategies.