backtrader
Event-driven backtesting with bar-by-bar execution, complex order types, multiple analyzers,…
Crypto-native indicators including NVT ratio, exchange flow, funding rate signals, holder momentum, and smart money flow
$ npx -y skills add agiprolabs/claude-trading-skills --skill custom-indicators --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/custom-indicatorsContext preview
The summary Claude sees to decide when to auto-load this skill.
Crypto-native indicators including NVT ratio, exchange flow, funding rate signals, holder momentum, and smart money flow
name: custom-indicators description: Crypto-native indicators including NVT ratio, exchange flow, funding rate signals, holder momentum, and smart money flow
Traditional technical analysis was built for equities and forex — markets with fixed supply, regulated exchanges, and institutional-dominated order flow. Crypto markets have unique properties that demand purpose-built indicators:
economic activity, not just price and volume on a single exchange.
supply-side analysis (velocity, holder distribution) meaningful.
often drive spot price, not the other way around.
Tracking their behavior provides alpha that equity-market TA cannot.
signals intent to sell or accumulate.
This skill covers nine crypto-native indicators. Each section includes the formula, interpretation guide, data sources, and a working code snippet.
| File | Description | |------|-------------| | `references/indicator_formulas.md` | Full formulas, parameter tables, signal ranges for all 9 indicators | | `references/signal_interpretation.md` | Composite scoring, divergence detection, false signal filtering | | `scripts/compute_crypto_indicators.py` | Computes all 9 indicators from free APIs or demo data | | `scripts/holder_momentum.py` | Holder count tracking with momentum signals |
---
**Network Value to Transactions** — the crypto equivalent of a P/E ratio.
NVT = Market Cap / Daily On-Chain Transaction Volume (USD)
throughput. Bearish signal.
Bullish signal.
DeFiLlama (transaction volume).
def nvt_ratio(market_cap: float, daily_tx_volume_usd: float) -> float:
"""Compute NVT ratio.
Args:
market_cap: Current market capitalization in USD.
daily_tx_volume_usd: 24h on-chain transaction volume in USD.
Returns:
NVT ratio value.
"""
if daily_tx_volume_usd <= 0:
return float("inf")
return market_cap / daily_tx_volume_usd**Smoothing**: Apply a 14-day or 28-day moving average to NVT (called NVT Signal) to reduce noise from daily volume spikes.
---
**Market Value to Realized Value** — compares the current market cap to the aggregate cost basis of all holders.
MVRV = Market Cap / Realized Cap Realized Cap = Sum of (each UTXO * price when it last moved)
tokens, approximate via average entry price of top holders.
def mvrv_ratio(market_cap: float, realized_cap: float) -> float:
"""Compute MVRV ratio.
Args:
market_cap: Current market capitalization in USD.
realized_cap: Realized capitalization (aggregate cost basis).
Returns:
MVRV ratio value.
"""
if realized_cap <= 0:
return float("inf")
return market_cap / realized_capFor tokens without UTXO-based realized cap, estimate using average purchase price from DEX trade history multiplied by circulating supply.
---
**Net exchange deposits minus withdrawals** — signals selling or accumulation intent.
Exchange Netflow = Deposits to Exchanges - Withdrawals from Exchanges
likely to sell. Bearish.
storage. Bullish accumulation signal.
transfers to known exchange wallets via Helius or Solana RPC.
def exchange_netflow(
deposits_usd: float, withdrawals_usd: float
) -> tuple[float, str]:
"""Compute exchange netflow and interpret.
Returns:
Tuple of (netflow_value, signal_label).
"""
netflow = deposits_usd - withdrawals_usd
if netflow > 0:
signal = "bearish"
elif netflow < 0:
signal = "bullish"
else:
signal = "neutral"
return netflow, signalNormalize by market cap for cross-token comparison: `Netflow Ratio = Netflow / Market Cap`.
---
Perpetual futures contracts use funding rates to anchor price to spot.
Funding Rate = (Perp Mark Price - Spot Price) / Spot Price
(paid every 8 hours on most exchanges)long. Contrarian bearish.
Contrarian bullish.
for a volume-weighted average.
def funding_rate_signal(
rates: list[float], weights: list[float] | None = None
) -> tuple[float, str]:
"""Volume-weighted average funding rate with signal.
Args:
rates: Funding rates from multiple exchanges.
weights: Optional volume weights per exchange.
"""
import numpy as np
if weights is None:
weights = [1.0 / len(rates)] * len(rates)
vw_rate = float(np.average(rates, weights=weights))
if vw_rate > 0.0005:
signal = "bearish"
elif vw_rate < -0.0005:
signal = "bullish"
else:A comprehensive collection of 68 ready-to-use trading, DeFi, and quantitative finance Agent Skills. Works with Claude Code, Cursor, Codex, Gemini CLI, and 30+ other tools.
Repo: agiprolabs/claude-trading-skills
Event-driven backtesting with bar-by-bar execution, complex order types, multiple analyzers,…
Solana token market data via Birdeye — prices, OHLCV, trades, token metadata, security…
Broad crypto market data from CoinGecko covering 13,000+ tokens. Global market stats,…
Cointegration testing for pairs trading using Engle-Granger, Johansen, and rolling stability…
Wallet evaluation, monitoring, and copy-trade strategy design for Solana DEX trading
Cross-asset correlation analysis including rolling correlation, hierarchical clustering, tail…