perp-funding-basis
Skill3 starsChanged 34 days agoMITView on GitHub
Analyze perpetual futures funding rates and spot-futures basis to identify carry trade opportunities, market positioning extremes, and directional sentiment signals. Funding rates are the single most important microstructure indicator in crypto derivatives — they reveal real-time leverage positioning and crowd sentiment. Perpetual futures have no expiry date. Instead, a funding rate is exchanged between longs and shorts every 8 hours (on most exchanges) to keep the perpetual price anchored to the spot price. OKX funding rate schedule: payments at 00:00,…
In this repository33 other files it gives its agents.
- llms.txtllms.txt
- alpha-zooSkill
- breadth-chart-analystSkill
- canslim-screenerSkill
- factor-mining-pandaaiSkill
- backtesting-bias-avoidanceSkill
- backtest-reviewSkill
- data-quality-auditSkill
- paper-reproSkill
- pine-backtesterSkill
- stats-test-pickerSkill
- vectorbt-backtestSkill
- vectorbt-optimizeSkill
- akquantSkill
- ashare-pre-st-filterSkill
- cninfo-disclosureSkill
- ctp-apiSkill
- ptrade-strategy-writingSkill
- quant-buddySkill
- ssquant-futuresSkill
- tdxquantSkill
- tqsdk-tradingSkill
- wencai-screenerSkill
- defillama-dataSkill
- defillama-flowsSkill
- defillama-yieldsSkill
- pine-debuggerSkill
- pine-developerSkill
- edgar-financialsSkill
- llmquant-equitiesSkill
- llmquant-macroSkill
- llmquant-riskSkill
- openquant-tradingSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 208
Use load_skill("okx-market") for OKX data retrieval patterns.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!--
Imported from: https://github.com/HKUDS/Vibe-Trading
Source Path: agent/src/skills/perp-funding-basis/SKILL.md
Curated for awesome-quant-skills
-->name: perp-funding-basis description: Perpetual futures funding rate analysis and cash-carry basis trading — funding rate regimes, annualized basis signals, carry trade construction, and funding rate arbitrage between exchanges. category: crypto
Perpetual Funding Rate & Basis Trading
Overview
Analyze perpetual futures funding rates and spot-futures basis to identify carry trade opportunities, market positioning extremes, and directional sentiment signals. Funding rates are the single most important microstructure indicator in crypto derivatives — they reveal real-time leverage positioning and crowd sentiment.
Core Concepts
1. Funding Rate Mechanics
Perpetual futures have no expiry date. Instead, a funding rate is exchanged between longs and shorts every 8 hours (on most exchanges) to keep the perpetual price anchored to the spot price.
If perp price > spot price → funding rate positive → longs pay shorts
If perp price < spot price → funding rate negative → shorts pay longsOKX funding rate schedule: payments at 00:00, 08:00, 16:00 UTC
Annualized funding rate:
# Funding rate is a per-8h DECIMAL, exactly as OKX/Binance return it
# (the API sends "0.0001" for 0.01%). 3 funding windows/day → × 3 × 365.
funding_rate_8h = 0.0001 # 0.01% per 8h, as a decimal
annualized = funding_rate_8h * 3 * 365 # 0.1095 → 10.95% annualizedUnits convention (whole skill): all code treats the funding rate as a per-8h decimal (
0.0001= 0.01%), matching the raw OKX/Binance API value. The tables below show the equivalent percentages for readability — divide a table's%by 100 to get the decimal a comparison expects (+0.05%→0.0005).
2. Funding Rate Signal Framework
| Funding Rate (8h) | Annualized | Market State | Signal |
| > +0.05% | > +54.75% | Extreme long crowding | Contrarian short / reduce longs |
| +0.02% to +0.05% | +21.9% to +54.75% | Elevated long bias | Cautious, carry trade viable |
| +0.005% to +0.02% | +5.5% to +21.9% | Mild long bias | Neutral to mild bullish |
| -0.005% to +0.005% | -5.5% to +5.5% | Balanced | Neutral |
| -0.02% to -0.005% | -21.9% to -5.5% | Mild short bias | Neutral to mild bearish |
| < -0.02% | < -21.9% | Short squeeze territory | Contrarian long / reduce shorts |
Funding rate regime detection:
def funding_regime(rates_7d):
"""Classify funding rate regime from 7-day history."""
avg = sum(rates_7d) / len(rates_7d)
consecutive_positive = all(r > 0 for r in rates_7d[-3:])
consecutive_negative = all(r < 0 for r in rates_7d[-3:])
if avg > 0.0003 and consecutive_positive: # > +0.03% per 8h
return "overheated_long" # High risk of long squeeze
elif avg > 0.0001 and consecutive_positive: # > +0.01% per 8h
return "bullish_carry" # Good carry trade environment
elif avg < -0.0002 and consecutive_negative: # < -0.02% per 8h
return "overheated_short" # High risk of short squeeze
elif avg < -0.00005 and consecutive_negative: # < -0.005% per 8h
return "bearish_carry" # Inverse carry trade
else:
return "neutral"3. Spot-Futures Basis Analysis
Basis = Futures price - Spot price
For dated futures (quarterly), basis reflects cost-of-carry expectations:
# Annualized basis
def annualized_basis(futures_price, spot_price, days_to_expiry):
basis_pct = (futures_price - spot_price) / spot_price
annualized = basis_pct * (365 / days_to_expiry)
return annualized
# Example: BTC spot $65,000, quarterly future $66,500, 45 days to expiry
# Basis: 2.31%, Annualized: 18.7%Basis signal interpretation:
| Annualized Basis | Market State | Signal |
| > 30% | Extreme contango, euphoric leverage | Sell basis (cash-carry), top warning |
| 15-30% | Elevated contango, bullish leverage | Carry trade attractive |
| 5-15% | Normal contango | Neutral, mild bullish |
| 0-5% | Flat basis | Low conviction, wait for direction |
| < 0% (backwardation) | Bearish, forced selling | Contrarian long, extreme pessimism |
4. Cash-Carry Arbitrage (Delta-Neutral)
Strategy: buy spot + sell perpetual futures → collect funding rate
# Cash-carry trade P&L
def carry_trade_pnl(spot_entry, funding_rates, position_size):
"""
Delta-neutral carry: long spot + short perp
P&L comes purely from funding rate collection.
"""
total_funding_collected = 0
for rate in funding_rates:
if rate > 0: # Longs pay shorts → we collect as short
total_funding_collected += rate * position_size
else: # Shorts pay longs → we pay as short
total_funding_collected += rate * position_size # This is negative
return total_funding_collected
# Example: $100,000 position, avg funding +0.015% (0.00015 decimal) per 8h, 30 days
# Revenue: 0.00015 × 3 × 30 × $100,000 = $1,350 (16.4% annualized)Carry trade execution on OKX:
- Buy spot BTC-USDT on OKX spot market
- Open equal-sized short BTC-USDT-SWAP on OKX perpetual
- Net delta = 0 (spot long cancels perp short)
- Collect positive funding rate every 8 hours
- Close both legs when funding rate turns negative or basis compresses
Risk factors:
- Funding rate can flip negative → carry becomes a cost
- Liquidation risk on short perp if insufficient margin (use 3-5x max leverage)
- Exchange counterparty risk (keep position across 2-3 exchanges)
- Basis can widen further before mean-reverting → mark-to-market loss on short leg
5. Cross-Exchange Funding Arbitrage
Different exchanges have different funding rates for the same asset. Arbitrage the spread:
# Example: BTC-USDT perpetual funding rates
exchange_rates = { # per-8h decimals (API-native)
"OKX": 0.00015, # +0.015% per 8h
"Binance": 0.00020, # +0.020% per 8h
"Bybit": 0.00025, # +0.025% per 8h
}
# Strategy: short on highest funding (Bybit) + long on lowest funding (OKX)
# Net carry = 0.00025 - 0.00015 = 0.00010 per 8h (0.010%)
# Annualized: 0.00010 × 3 × 365 = 0.1095 → 10.95%
# Risk: execution cost + potential for rates to converge/flip6. Funding Rate as Directional Indicator
Divergence signals (most powerful):
| Price Action | Funding Rate | Interpretation | Signal |
| Price making new highs | Funding declining | Longs not chasing → distribution | Bearish divergence |
| Price making new lows | Funding rising (less negative) | Shorts not pressing → accumulation | Bullish divergence |
| Price consolidating | Funding spiking positive | Leverage building without breakout | Squeeze risk |
| Price consolidating | Funding deeply negative | Shorts paying heavy cost to maintain | Short squeeze imminent |
Historical pattern statistics (BTC):
- Funding > +0.05% for 3+ consecutive periods → 70% probability of a 5-10% correction within 7 days
- Funding < -0.03% for 3+ consecutive periods → 65% probability of a 5-15% bounce within 7 days
- These are contrarian signals; funding rate extremes indicate crowded positioning
7. Open Interest × Funding Rate Matrix
# Combined OI + Funding signal
def oi_funding_matrix(oi_change_24h_pct, funding_rate):
if oi_change_24h_pct > 5 and funding_rate > 0.0003: # funding > +0.03%
return "leveraged_long_buildup" # High risk, squeeze potential
elif oi_change_24h_pct > 5 and funding_rate < -0.0001: # funding < -0.01%
return "leveraged_short_buildup" # Short squeeze potential
elif oi_change_24h_pct < -5 and funding_rate > 0:
return "long_liquidation" # Forced long closing
elif oi_change_24h_pct < -5 and funding_rate < 0:
return "short_liquidation" # Forced short closing
elif abs(oi_change_24h_pct) < 2 and abs(funding_rate) < 0.00005: # |funding| < 0.005%
return "quiet_market" # Low conviction, wait
else:
return "mixed"Data Access
Via OKX API
# Funding rate history
# GET /api/v5/public/funding-rate-history?instId=BTC-USDT-SWAP
# Current funding rate
# GET /api/v5/public/funding-rate?instId=BTC-USDT-SWAP
# Open interest
# GET /api/v5/public/open-interest?instType=SWAP&instId=BTC-USDT-SWAPUse load_skill("okx-market") for OKX data retrieval patterns.
Key Metrics to Track
| Metric | Source | Frequency | Alert Threshold |
| BTC funding rate (8h) | OKX / Binance | Every 8h | > +0.05% or < -0.03% |
| ETH funding rate (8h) | OKX / Binance | Every 8h | > +0.05% or < -0.03% |
| Annualized basis (quarterly) | OKX | Continuous | > 30% or < 0% |
| BTC open interest change | OKX | Hourly | > ±5% in 24h |
| Cross-exchange funding spread | Multi-exchange | Every 8h | Spread > 0.02% |
Output Format
## Funding Rate & Basis Analysis — [Asset]
### Current Funding Rates
| Exchange | 8h Rate | Annualized | Regime |
|----------|---------|------------|--------|
| OKX | +0.015% | +16.4% | bullish_carry |
| Binance | +0.020% | +21.9% | bullish_carry |
### Basis Structure
- **Spot price**: $XX,XXX
- **Perp price**: $XX,XXX (premium: X.XX%)
- **Quarterly futures**: $XX,XXX (annualized basis: X.X%)
- **Basis regime**: [contango / flat / backwardation]
### Funding History (7-day)
- **Average**: +X.XXX%
- **Trend**: [rising / stable / declining]
- **Consecutive direction**: [X periods positive/negative]
### Open Interest
- **Current OI**: $X.XB
- **24h change**: [+/-X%]
- **OI × Funding signal**: [leveraged_long_buildup / quiet / etc.]
### Carry Trade Opportunity
- **Best carry**: [short on Exchange X, long spot]
- **Expected annualized yield**: X.X%
- **Risk**: [funding flip probability, liquidation distance]
### Directional Signal
- **Funding regime**: [overheated / bullish / neutral / bearish / oversold]
- **Divergence**: [none / bullish / bearish]
- **Confidence**: [high / medium / low]Notes
- Funding rates are exchange-specific; always compare across OKX, Binance, and Bybit for the full picture
- Extremely high funding rates are a cost for longs, not a bullish signal — they indicate overcrowded positioning
- Cash-carry trades have execution risk: slippage on entry/exit, funding rate flipping, and exchange downtime during volatility
- Basis and funding rate signals work best when combined with on-chain data (MVRV, exchange flows)
- This framework is for research purposes only and does not constitute investment advice
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

