custom-indicators
暗号資産市場におけるNVTレシオ、取引所の資金フロー、資金調達率、保有者の動向、スマートマネーの動きなど、専門的な指標を活用して投資判断をサポートするSkill。
📜 元の英語説明(参考)
Crypto-native indicators including NVT ratio, exchange flow, funding rate signals, holder momentum, and smart money flow
🇯🇵 日本人クリエイター向け解説
暗号資産市場におけるNVTレシオ、取引所の資金フロー、資金調達率、保有者の動向、スマートマネーの動きなど、専門的な指標を活用して投資判断をサポートするSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o custom-indicators.zip https://jpskill.com/download/10404.zip && unzip -o custom-indicators.zip && rm custom-indicators.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10404.zip -OutFile "$d\custom-indicators.zip"; Expand-Archive "$d\custom-indicators.zip" -DestinationPath $d -Force; ri "$d\custom-indicators.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
custom-indicators.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
custom-indicatorsフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
カスタム暗号資産指標
暗号資産において標準的なテクニカル分析が不十分な理由
従来のテクニカル分析は、株式や外国為替、つまり固定供給、規制された取引所、機関投資家主導の注文フローを持つ市場向けに構築されました。 暗号資産市場は、専用の指標を必要とする独自の特徴を持っています。
- オンチェーンの透明性: すべてのトランザクションが公開されています。単一の取引所における価格と出来高だけでなく、実際の経済活動を測定できます。
- 供給メカニズム: 固定またはプログラムされた供給スケジュールにより、供給側の分析(速度、保有者分布)が意味を持ちます。
- デリバティブの優位性: 永久先物のファンディングレートと未決済建玉は、しばしば現物価格を左右し、その逆ではありません。
- クジラの集中: 少数のウォレットが過大な供給を保持しています。彼らの行動を追跡することで、株式市場のテクニカル分析では得られないアルファが得られます。
- 取引所のフロー: 中央集権型取引所へのオンチェーンの入金/出金は、売却または蓄積の意図を示します。
このスキルでは、9つの暗号資産ネイティブ指標について説明します。各セクションには、数式、解釈ガイド、データソース、および動作するコードスニペットが含まれています。
ファイル
| ファイル | 説明 |
|---|---|
references/indicator_formulas.md |
9つの指標すべての完全な数式、パラメータテーブル、シグナル範囲 |
references/signal_interpretation.md |
複合スコアリング、ダイバージェンス検出、誤ったシグナルのフィルタリング |
scripts/compute_crypto_indicators.py |
無料の API またはデモデータから9つの指標すべてを計算します |
scripts/holder_momentum.py |
モメンタムシグナルによるホルダー数追跡 |
指標 1: NVT 比率
Network Value to Transactions — 暗号資産における P/E 比率に相当します。
NVT = 時価総額 / 1日のオンチェーン取引量 (USD)
- 高い NVT (> 65): ネットワークは経済的なスループットに比べて過大評価されています。弱気シグナル。
- 低い NVT (< 25): ネットワークは過小評価されているか、実際の利用が活発です。強気シグナル。
- データソース: CoinGecko (時価総額)、ブロックチェーンエクスプローラーまたは DeFiLlama (取引量)。
def nvt_ratio(market_cap: float, daily_tx_volume_usd: float) -> float:
"""NVT 比率を計算します。
Args:
market_cap: 現在の時価総額 (USD)。
daily_tx_volume_usd: 24時間のオンチェーン取引量 (USD)。
Returns:
NVT 比率の値。
"""
if daily_tx_volume_usd <= 0:
return float("inf")
return market_cap / daily_tx_volume_usd
平滑化: 14日間または28日間の移動平均を NVT (NVT シグナルと呼ばれる) に適用して、日々の出来高の急増によるノイズを軽減します。
指標 2: MVRV 比率
Market Value to Realized Value — 現在の時価総額とすべての保有者の総取得原価を比較します。
MVRV = 時価総額 / 実現時価総額
実現時価総額 = Sum of (各 UTXO * 最後に移動したときの価格)
- MVRV > 3.5: ほとんどの保有者は大きな利益を得ています。分配の可能性が高いです。
- MVRV < 1.0: ほとんどの保有者は損失を抱えています。歴史的に底値を示します。
- データソース: Glassnode, CryptoQuant (Bitcoin/Ethereum)。Solana トークンの場合、上位保有者の平均取得価格から概算します。
def mvrv_ratio(market_cap: float, realized_cap: float) -> float:
"""MVRV 比率を計算します。
Args:
market_cap: 現在の時価総額 (USD)。
realized_cap: 実現時価総額 (総取得原価)。
Returns:
MVRV 比率の値。
"""
if realized_cap <= 0:
return float("inf")
return market_cap / realized_cap
UTXO ベースの実現時価総額を持たないトークンの場合は、DEX の取引履歴からの平均購入価格に流通供給量を掛けて推定します。
指標 3: 取引所のフロー
純取引所預金から引き出しを引いたもの — 売却または蓄積の意図を示します。
取引所ネットフロー = 取引所への預金 - 取引所からの引き出し
- 正のネットフロー (大量の預金): 保有者はトークンを取引所に移動させており、売却する可能性が高いです。弱気。
- 負のネットフロー (引き出し): トークンが取引所からコールドストレージに移動しています。強気の蓄積シグナル。
- データソース: CryptoQuant, Glassnode。Solana SPL トークンの場合、Helius または Solana RPC を介して既知の取引所ウォレットへの転送を追跡します。
def exchange_netflow(
deposits_usd: float, withdrawals_usd: float
) -> tuple[float, str]:
"""取引所のネットフローを計算して解釈します。
Returns:
(netflow_value, signal_label) のタプル。
"""
netflow = deposits_usd - withdrawals_usd
if netflow > 0:
signal = "bearish"
elif netflow < 0:
signal = "bullish"
else:
signal = "neutral"
return netflow, signal
トークン間の比較のために時価総額で正規化します:
Netflow Ratio = Netflow / Market Cap。
指標 4: ファンディングレートシグナル
永久先物契約は、ファンディングレートを使用して価格を現物に固定します。
ファンディングレート = (Perp マーク価格 - 現物価格) / 現物価格
(ほとんどの取引所で8時間ごとに支払われます)
- 非常に高い ( > 0.05%): ロングがショートに支払います。市場は過剰にロングにレバレッジをかけています。逆張りの弱気。
- 非常に低い ( < -0.05%): ショートがロングに支払います。過剰にショートにレバレッジをかけています。逆張りの強気。
- データソース: Binance, Bybit, dYdX APIs。取引所間で集計して、出来高加重平均を求めます。
def funding_rate_signal(
rates: list[float], weights: list[float] | None = None
) -> tuple[float, str]:
"""シグナル付きの出来高加重平均ファンディングレート。
Args:
rates: 複数の取引所からのファンディングレート。
weights: 取引所ごとのオプションの出来高ウェイト。
"""
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:
signal = "neutral"
return vw_rate, signal
指標 5: 未決済建玉モメンタム
デリバティブ取引所全体の総未決済建玉の変化率を追跡します。
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Custom Crypto Indicators
Why Standard TA Falls Short for Crypto
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:
- On-chain transparency: Every transaction is public. We can measure real economic activity, not just price and volume on a single exchange.
- Supply mechanics: Fixed or programmatic supply schedules make supply-side analysis (velocity, holder distribution) meaningful.
- Derivatives dominance: Perpetual futures funding rates and open interest often drive spot price, not the other way around.
- Whale concentration: A small number of wallets hold outsized supply. Tracking their behavior provides alpha that equity-market TA cannot.
- Exchange flows: On-chain deposit/withdrawal to centralized exchanges 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.
Files
| 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 |
Indicator 1: NVT Ratio
Network Value to Transactions — the crypto equivalent of a P/E ratio.
NVT = Market Cap / Daily On-Chain Transaction Volume (USD)
- High NVT (> 65): Network is overvalued relative to its economic throughput. Bearish signal.
- Low NVT (< 25): Network is undervalued or seeing heavy real usage. Bullish signal.
- Data sources: CoinGecko (market cap), blockchain explorers or 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.
Indicator 2: MVRV Ratio
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)
- MVRV > 3.5: Most holders are in deep profit. Distribution likely.
- MVRV < 1.0: Most holders are underwater. Historically marks bottoms.
- Data sources: Glassnode, CryptoQuant (Bitcoin/Ethereum). For Solana 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_cap
For tokens without UTXO-based realized cap, estimate using average purchase price from DEX trade history multiplied by circulating supply.
Indicator 3: Exchange Flow
Net exchange deposits minus withdrawals — signals selling or accumulation intent.
Exchange Netflow = Deposits to Exchanges - Withdrawals from Exchanges
- Positive netflow (large deposits): Holders moving tokens to exchanges, likely to sell. Bearish.
- Negative netflow (withdrawals): Tokens leaving exchanges to cold storage. Bullish accumulation signal.
- Data sources: CryptoQuant, Glassnode. For Solana SPL tokens, track 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, signal
Normalize by market cap for cross-token comparison:
Netflow Ratio = Netflow / Market Cap.
Indicator 4: Funding Rate Signal
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)
- Highly positive (> 0.05%): Longs pay shorts. Market is overleveraged long. Contrarian bearish.
- Highly negative (< -0.05%): Shorts pay longs. Overleveraged short. Contrarian bullish.
- Data sources: Binance, Bybit, dYdX APIs. Aggregate across exchanges 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:
signal = "neutral"
return vw_rate, signal
Indicator 5: Open Interest Momentum
Tracks the rate of change in total open interest across derivatives exchanges.
OI Momentum = (OI_today - OI_n_days_ago) / OI_n_days_ago * 100
- Rising OI + Rising Price: New money entering longs. Trend confirmation.
- Rising OI + Falling Price: New shorts opening. Bearish pressure.
- Falling OI + Rising Price: Short squeeze / closing shorts.
- Falling OI + Falling Price: Long liquidation.
- Data sources: CoinGlass, Binance, Bybit open interest endpoints.
def oi_momentum(
oi_series: list[float], lookback: int = 7
) -> float:
"""Compute open interest momentum as percentage change.
Args:
oi_series: Daily open interest values (newest last).
lookback: Number of days for momentum calculation.
"""
if len(oi_series) < lookback + 1:
return 0.0
old = oi_series[-(lookback + 1)]
new = oi_series[-1]
if old <= 0:
return 0.0
return (new - old) / old * 100.0
Indicator 6: Holder Momentum
Tracks the net change in unique token holders over time.
Holder Momentum = (Holders_today - Holders_n_days_ago) / Holders_n_days_ago
Holder Acceleration = Holder Momentum_today - Holder Momentum_yesterday
- Accelerating growth: Viral adoption phase. Bullish.
- Decelerating growth: Adoption slowing. Watch for reversal.
- Negative momentum: Holders leaving. Bearish.
- Data sources: Helius DAS API (Solana), Etherscan token holder count, Birdeye holder stats.
def holder_momentum(
holder_counts: list[int], lookback: int = 7
) -> tuple[float, float]:
"""Compute holder momentum and acceleration.
Returns:
Tuple of (momentum_pct, acceleration).
"""
if len(holder_counts) < lookback + 2:
return 0.0, 0.0
old = holder_counts[-(lookback + 1)]
new = holder_counts[-1]
prev_old = holder_counts[-(lookback + 2)]
prev_new = holder_counts[-2]
mom = (new - old) / old if old > 0 else 0.0
prev_mom = (prev_new - prev_old) / prev_old if prev_old > 0 else 0.0
accel = mom - prev_mom
return mom, accel
See scripts/holder_momentum.py for a full tracking implementation.
Indicator 7: Liquidity Score
A composite metric combining order book depth, bid-ask spread, and DEX pool depth to estimate how easily a position can be entered/exited.
Liquidity Score = w1 * Depth Score + w2 * Spread Score + w3 * Pool Score
Where:
- Depth Score =
min(1, total_bids_within_2pct / target_position_size) - Spread Score =
max(0, 1 - spread_bps / 100) - Pool Score =
min(1, pool_tvl / (target_position_size * 10)) - Default weights:
w1=0.4, w2=0.3, w3=0.3
def liquidity_score(
depth_usd: float,
spread_bps: float,
pool_tvl: float,
position_size: float,
weights: tuple[float, float, float] = (0.4, 0.3, 0.3),
) -> float:
"""Composite liquidity score from 0 (illiquid) to 1 (highly liquid)."""
depth_s = min(1.0, depth_usd / position_size) if position_size > 0 else 0
spread_s = max(0.0, 1.0 - spread_bps / 100.0)
pool_s = min(1.0, pool_tvl / (position_size * 10)) if position_size > 0 else 0
return weights[0] * depth_s + weights[1] * spread_s + weights[2] * pool_s
Indicator 8: Smart Money Flow
Net buying pressure from wallets identified as "smart money" (historically profitable, large balances, early entry patterns).
Smart Money Flow = Sum(smart_wallet_buys_usd) - Sum(smart_wallet_sells_usd)
SMF Ratio = Smart Money Flow / Total Volume
- SMF Ratio > 0.1: Smart money is net accumulating. Bullish.
- SMF Ratio < -0.1: Smart money is distributing. Bearish.
- Data sources: Helius transaction parsing + wallet labeling, Birdeye wallet analytics, Nansen (Ethereum).
def smart_money_flow(
smart_buys_usd: float,
smart_sells_usd: float,
total_volume_usd: float,
) -> tuple[float, float, str]:
"""Compute smart money flow and ratio.
Returns:
Tuple of (net_flow, smf_ratio, signal).
"""
net = smart_buys_usd - smart_sells_usd
ratio = net / total_volume_usd if total_volume_usd > 0 else 0.0
if ratio > 0.1:
signal = "bullish"
elif ratio < -0.1:
signal = "bearish"
else:
signal = "neutral"
return net, ratio, signal
Indicator 9: Token Velocity
Measures how frequently a token changes hands relative to its supply.
Token Velocity = Daily Trading Volume (tokens) / Circulating Supply
- High velocity (> 0.3): Speculative trading dominates. Token is being flipped, not held. Can precede dumps.
- Low velocity (< 0.05): Holders are sitting tight. Strong hands.
- Data sources: CoinGecko (volume, supply), DEX aggregator volumes.
def token_velocity(
daily_volume_tokens: float, circulating_supply: float
) -> tuple[float, str]:
"""Compute token velocity.
Returns:
Tuple of (velocity, interpretation).
"""
if circulating_supply <= 0:
return 0.0, "unknown"
vel = daily_volume_tokens / circulating_supply
if vel > 0.3:
interp = "high_speculation"
elif vel > 0.1:
interp = "moderate"
elif vel > 0.05:
interp = "low"
else:
interp = "very_low_strong_holders"
return vel, interp
Combining Indicators
No single indicator is reliable in isolation. See
references/signal_interpretation.md for guidance on:
- Building composite scores from multiple indicators
- Detecting divergences (e.g., price rising but NVT expanding)
- Adjusting interpretation by market regime
- Filtering false signals
Dependencies
uv pip install httpx pandas numpy
Disclaimer
All indicators and analysis provided by this skill are for informational and educational purposes only. They do not constitute financial advice. Always conduct your own research before making any investment decisions.