custom-indicators について
暗号資産市場を分析するためのスキルです。オンチェーンとデリバティブの9種類の指標について、数式、解釈ガイド、Pythonスクリプトを提供し、取引シグナルを調べる分析者向けです。
主な機能
- 01暗号資産特有の9指標を計算
- 02数式とシグナル解釈ガイド
- 03複合スコアリングとダイバージェンス検出
- 04無料APIまたはデモデータで計算
活用シーン
- 01オンチェーン活動と市場評価の分析
- 02取引所フローとデリバティブポジションの分析
- 03保有者の増加とトークン流動性の追跡
- 04複数指標を組み合わせた取引シグナル評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill custom-indicatorsインストール後、Claude Code で/custom-indicatorsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/indicator_formulas.mdsignal_interpretation.mdscripts/compute_crypto_indicators.pyholder_momentum.py詳細
暗号資産向けカスタム指標
標準的なテクニカル分析では暗号資産に不十分な理由
従来のテクニカル分析は、供給量が固定され、取引所が規制され、注文フローが機関投資家主導の市場である株式や外国為替を対象に構築されました。 暗号資産市場には独自の特性があり、それらに特化した指標が必要です。
- オンチェーンの透明性:すべての取引が公開されています。単一の取引所の価格や出来高だけでなく、実際の経済活動を測定できます。
- 供給の仕組み:供給スケジュールが固定またはプログラムで定められているため、供給側の分析(流通速度、保有者の分布)が有意義になります。
- デリバティブの優位性:無期限先物のファンディングレートや建玉が、現物価格を動かすことがよくあります。その逆ではありません。
- クジラへの集中:少数のウォレットが供給量の大部分を保有しています。彼らの動向を追跡することで、株式市場のテクニカル分析では得られないアルファを得られます。
- 取引所フロー:中央集権型取引所へのオンチェーン入金・出金は、売却または蓄積の意図を示します。
このスキルでは、暗号資産に特化した9つの指標を扱います。各セクションには、計算式、解釈ガイド、データソース、動作するコードスニペットが含まれています。
ファイル
| ファイル | 説明 |
|---|---|
references/indicator_formulas.md | 9つすべての指標の計算式、パラメーター表、シグナル範囲の全容 |
references/signal_interpretation.md | 複合スコアリング、ダイバージェンスの検出、誤シグナルのフィルタリング |
scripts/compute_crypto_indicators.py | 無料 API またはデモデータから9つすべての指標を計算します |
scripts/holder_momentum.py | モメンタムシグナル付きの保有者数追跡 |
指標1:NVT レシオ
ネットワーク価値対取引高 — 暗号資産における P/E レシオに相当します。
NVT = Market Cap / Daily On-Chain Transaction Volume (USD)
- NVT が高い(> 65):ネットワークの経済的な処理量に対して、割高です。弱気シグナルです。
- NVT が低い(< 25):ネットワークが割安、または実利用が活発です。強気シグナルです。
- データソース:CoinGecko(時価総額)、ブロックチェーンエクスプローラーまたは DeFiLlama(取引量)。
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
平滑化:NVT に14日または28日の移動平均を適用し(NVT シグナルと呼ばれます)、日次の出来高急増によるノイズを軽減します。
指標2:MVRV レシオ
時価総額対実現時価総額 — 現在の時価総額を、すべての保有者の取得原価の合計と比較します。
MVRV = Market Cap / Realized Cap
Realized Cap = Sum of (each UTXO * price when it last moved)
- MVRV > 3.5:ほとんどの保有者が大きな含み益を得ています。分配が起きる可能性があります。
- MVRV < 1.0:ほとんどの保有者が含み損を抱えています。歴史的には底値を示します。
- データソース:Glassnode、CryptoQuant(Bitcoin/Ethereum)。Solana トークンの場合は、大口保有者の平均取得価格から概算します。
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
UTXO ベースの実現時価総額がないトークンについては、DEX の取引履歴から求めた平均購入価格に流通供給量を乗じて推定します。
指標3:取引所フロー
取引所への純入金から出金を差し引いた値 — 売却または蓄積の意図を示します。
Exchange Netflow = Deposits to Exchanges - Withdrawals from Exchanges
- 純流入がプラス(大量入金):保有者がトークンを取引所に移動しており、売却する可能性があります。弱気です。
- 純流入がマイナス(出金):トークンが取引所からコールドストレージに移動しています。強気の蓄積シグナルです。
- データソース:CryptoQuant、Glassnode。Solana SPL トークンの場合は、Helius または 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
トークン間で比較できるよう、時価総額で正規化します。
Netflow Ratio = Netflow / Market Cap。
指標4:ファンディングレートシグナル
無期限先物契約では、ファンディングレートを使って価格を現物価格に連動させます。
Funding Rate = (Perp Mark Price - Spot Price) / Spot Price
(paid every 8 hours on most exchanges)
- 大幅なプラス(> 0.05%):ロングがショートに支払います。市場ではロングのレバレッジが過剰です。逆張りの弱気シグナルです。
- 大幅なマイナス(< -0.05%):ショートがロングに支払います。ショートのレバレッジが過剰です。逆張りの強気シグナルです。
- データソース:Binance、Bybit、dYdX API。取引量加重平均を求めるため、複数の取引所のデータを集約します。
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
インジケーター 5:未決済建玉のモメンタム
デリバティブ取引所全体の未決済建玉総額の変化率を追跡します。
OI Momentum = (OI_today - OI_n_days_ago) / OI_n_days_ago * 100
- 未決済建玉の増加 + 価格の上昇:新たな資金がロングに流入しています。トレンドの確認。
- 未決済建玉の増加 + 価格の下落:新たなショートが建てられています。弱気圧力。
- 未決済建玉の減少 + 価格の上昇:ショートスクイーズ/ショートの決済。
- 未決済建玉の減少 + 価格の下落:ロングの清算。
- データソース:CoinGlass、Binance、Bybitの未決済建玉エンドポイント。
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
インジケーター 6:保有者のモメンタム
時間の経過に伴う、トークン保有者数の純変化を追跡します。
Holder Momentum = (Holders_today - Holders_n_days_ago) / Holders_n_days_ago
Holder Acceleration = Holder Momentum_today - Holder Momentum_yesterday
- 成長の加速:バイラルな普及段階です。強気。
- 成長の減速:普及が鈍化しています。反転に注意してください。
- マイナスのモメンタム:保有者が離れています。弱気。
- データソース:Helius DAS API(Solana)、Etherscanのトークン保有者数、Birdeyeの保有者統計。
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
完全な追跡実装については、scripts/holder_momentum.pyを参照してください。
インジケーター 7:流動性スコア
オーダーブックの厚み、ビッド・アスクスプレッド、DEXプールの深さを組み合わせた複合指標で、ポジションのエントリー/決済のしやすさを推定します。
Liquidity Score = w1 * Depth Score + w2 * Spread Score + w3 * Pool Score
内訳:
- 深度スコア =
min(1, total_bids_within_2pct / target_position_size) - スプレッドスコア =
max(0, 1 - spread_bps / 100) - プールスコア =
min(1, pool_tvl / (target_position_size * 10)) - デフォルトの重み:
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
インジケーター 8:スマートマネーの資金フロー
「スマートマネー」と特定されたウォレット(過去の収益性、大きな残高、早期参入のパターンを持つウォレット)からの純買い圧力です。
Smart Money Flow = Sum(smart_wallet_buys_usd) - Sum(smart_wallet_sells_usd)
SMF Ratio = Smart Money Flow / Total Volume
- SMF比率 > 0.1:スマートマネーが純買い越しです。強気。
- SMF比率 < -0.1:スマートマネーが分配しています。弱気。
- データソース:Heliusによるトランザクション解析とウォレットのラベリング、Birdeyeのウォレット分析、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
インジケーター 9:トークンの流通速度
供給量に対するトークンの移転頻度を測定します。
Token Velocity = Daily Trading Volume (tokens) / Circulating Supply
- 高い流通速度(> 0.3):投機的な取引が優勢です。トークンは保有されず、頻繁に売買されています。下落に先行する場合があります。
- 低い流通速度(< 0.05):保有者は保有を続けています。強い保有者が多い状態です。
- データソース:CoinGecko(取引量、供給量)、DEXアグリゲーターの取引量。
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
インジケーターの組み合わせ
単独で信頼できるインジケーターはありません。以下のガイダンスについては、references/signal_interpretation.mdを参照してください。
- 複数のインジケーターから複合スコアを作成する
- ダイバージェンスを検出する(例:価格が上昇している一方でNVTが拡大している)
- 市場のレジームに応じて解釈を調整する
- 偽のシグナルを除外する
依存関係
uv pip install httpx pandas numpy
免責事項
このスキルが提供するすべてのインジケーターと分析は、情報提供および教育のみを目的としています。これらは財務上の助言を構成するものではありません。投資判断を行う前に、必ずご自身で調査してください。