Skip to content
cccskills
FreePublished on GitHub

perp-funding-basis

Analyze crypto perpetual futures funding payments and spot–futures price differences to assess carry trades. Compare exchanges, identify crowded positions, and summarize potential returns alongside risks such as funding reversals and liquidation.

OriginalShow the original 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.

Works withBinance

Run score Not tested

See how to install

Good for

  • Compare funding rates across crypto exchanges
  • Estimate annualized spot–futures price differences
  • Assess carry trade returns and risks
  • Study crowded positions using open interest and funding

Files included (1)

  • SKILL.md10.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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 longs

OKX 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% annualized

Units 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)AnnualizedMarket StateSignal
> +0.05%> +54.75%Extreme long crowdingContrarian short / reduce longs
+0.02% to +0.05%+21.9% to +54.75%Elevated long biasCautious, carry trade viable
+0.005% to +0.02%+5.5% to +21.9%Mild long biasNeutral to mild bullish
-0.005% to +0.005%-5.5% to +5.5%BalancedNeutral
-0.02% to -0.005%-21.9% to -5.5%Mild short biasNeutral to mild bearish
< -0.02%< -21.9%Short squeeze territoryContrarian 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 BasisMarket StateSignal
> 30%Extreme contango, euphoric leverageSell basis (cash-carry), top warning
15-30%Elevated contango, bullish leverageCarry trade attractive
5-15%Normal contangoNeutral, mild bullish
0-5%Flat basisLow conviction, wait for direction
< 0% (backwardation)Bearish, forced sellingContrarian 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:

  1. Buy spot BTC-USDT on OKX spot market
  2. Open equal-sized short BTC-USDT-SWAP on OKX perpetual
  3. Net delta = 0 (spot long cancels perp short)
  4. Collect positive funding rate every 8 hours
  5. 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/flip

6. Funding Rate as Directional Indicator

Divergence signals (most powerful):

Price ActionFunding RateInterpretationSignal
Price making new highsFunding decliningLongs not chasing → distributionBearish divergence
Price making new lowsFunding rising (less negative)Shorts not pressing → accumulationBullish divergence
Price consolidatingFunding spiking positiveLeverage building without breakoutSqueeze risk
Price consolidatingFunding deeply negativeShorts paying heavy cost to maintainShort 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-SWAP

Use load_skill("okx-market") for OKX data retrieval patterns.

Key Metrics to Track

MetricSourceFrequencyAlert Threshold
BTC funding rate (8h)OKX / BinanceEvery 8h> +0.05% or < -0.03%
ETH funding rate (8h)OKX / BinanceEvery 8h> +0.05% or < -0.03%
Annualized basis (quarterly)OKXContinuous> 30% or < 0%
BTC open interest changeOKXHourly> ±5% in 24h
Cross-exchange funding spreadMulti-exchangeEvery 8hSpread > 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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

adr-hshare

FreeSummary

Compare a Chinese company's US depositary receipts, Hong Kong shares, and mainland shares after adjusting for exchange rates and share ratios. Analyze pricing gaps, valuation differences, and delisting risks to support research into its different listings.

  • Compare A-share and H-share pricing gaps
  • Measure ADR premiums against Hong Kong shares
  • Review US delisting risks and Hong Kong listing alternatives
HKUDS/Vibe-Trading36.4KUpdated Oct 23, 2026

akshare

FreeSummary

Retrieve stock prices, futures quotes, exchange rates, and economic indicators with the free Python library AKShare. The skill explains market-specific functions, symbol formats, and data preparation for analysis and testing strategies against historical data.

  • Retrieve historical prices for Chinese, US, and Hong Kong stocks
  • Collect Chinese GDP and consumer price data
  • Check futures quotes and foreign exchange rates
HKUDS/Vibe-Trading36.4KUpdated Oct 23, 2026

alpha-zoo

FreeSummary

Explore bundled libraries of investment factors, signals used to compare securities, and inspect individual formulas and metadata. Evaluate a factor or an entire library across a chosen universe and period, producing aggregate performance statistics and an HTML report.

  • Find bundled momentum or reversal factors
  • Inspect a named factor's formula and metadata
  • Compare a factor library across a chosen universe and period
HKUDS/Vibe-Trading36.4KUpdated Oct 23, 2026

Assess whether a Chinese A-share company may receive ST or *ST risk warnings next financial year. Review financial forecasts, dividends, audit opinions, and regulatory penalties, then report risk severity separately from confidence in the prediction.

  • Reviewing a Chinese A-share company's future ST risk
  • Assessing escalation risk for an existing ST or *ST stock
  • Checking revenue, equity, and dividend warning signs
HKUDS/Vibe-Trading36.4KUpdated Oct 23, 2026

asset-allocation

FreeSummary

Plan portfolio allocations across assets using risk, correlations, return forecasts, and trading costs. Compare five optimization methods, produce settings for config.json, and define rebalancing rules that adjust holdings back toward their target weights.

  • Comparing allocations across stocks, bonds, and gold
  • Choosing an optimizer based on return forecasts and correlations
  • Preparing portfolio settings for config.json
HKUDS/Vibe-Trading36.4KUpdated Oct 23, 2026

Diagnose failed or abnormal backtests, which test trading strategies on historical data. Inspect result files, strategy code, and configuration to identify bugs, make targeted repairs, rerun tests, and verify the updated metrics.

  • Investigating backtest execution errors
  • Finding why a strategy produces no trades
  • Checking delayed trades or low capital usage
HKUDS/Vibe-Trading36.4KUpdated Oct 23, 2026

See all skills by HKUDS

Report a problem with this skill