Agent Skills by ALSEL
Anthropic Claudeデータ・分析⭐ リポ 20品質スコア 73/100

mean-reversion

平均回帰戦略ツール。ハースト指数、半減期推定、Zスコアシグナル、ADF検定、オーンシュタイン・ウーレンベック過程モデリングを含み、資産価格の反転パターンを分析して取引シグナルを生成します。

description の原文を見る

Mean-reversion strategy tools including Hurst exponent, half-life estimation, z-score signals, ADF testing, and Ornstein-Uhlenbeck modeling

SKILL.md 本文

平均回帰

平均回帰とは、価格、スプレッド、またはその他の金融変数が平均値から乖離した後、長期的な平均値に戻る傾向を示す統計的性質です。平均回帰する系列は平均値を超過した後、修正により戻ります。これにより予測可能な振動が生じ、トレード可能になります。

平均回帰が機能する場面

  • レンジ相場: 明確なサポート/レジスタンスを伴う横ばい値動き
  • ペアスプレッド: 共和分関係にある資産間のスプレッドが均衡に回帰する
  • 過売却/過買状態: 定常系列におけるRSI、ボリンジャーバンド、またはz-スコアの極値
  • ファンディングレートアービトラージ: パーペチュアルファンディングレートがベースラインに回帰する
  • ステーブコイン価格乖離: 古典的な平均回帰機会(ペッグ=既知の平均)
  • ダンプ後の回復: PumpFun初期ダンプ後の短期平均回帰ウィンドウ

平均回帰が機能しない場面

  • 強いトレンド相場(ほとんどの場合、暗号資産の大半)
  • レジーム変化: 定常的だったものが非定常になる
  • 構造的ブレーク: トークンマイグレーション、プロトコルアップグレード、上場廃止
  • 流動性不足: ワイドなスプレッドが平均回帰利益を食い潰す

平均回帰のテスト

平均回帰をトレードする前に、統計的に系列が平均回帰することを確認する必要があります。3つの補完的なテストを紹介します。

1. 拡張ディッキー・フラー(ADF)検定

系列が単位根を持つ(非定常である)という帰無仮説をテストします。

from scipy import stats
import numpy as np

def adf_test(series: np.ndarray, max_lag: int = 0) -> dict:
    """Run ADF test. Reject null (p < 0.05) → stationary → mean-reverting."""
    # See references/statistical_tests.md for full implementation
    # Use statsmodels.tsa.stattools.adfuller for production
    pass
  • p < 0.01: 定常性の強力な証拠
  • p < 0.05: 定常性の証拠
  • p > 0.10: 単位根を棄却できない -- おそらく非定常

2. ハースト指数

時系列の長期従属性を測定します。

ハースト値解釈トレード含意
H < 0.5平均回帰的平均回帰をトレード
H = 0.5ランダムウォークエッジなし
H > 0.5トレンド的モメンタムをトレード
def hurst_exponent(series: np.ndarray) -> float:
    """Compute Hurst exponent via R/S method. H < 0.5 → mean-reverting."""
    # See references/statistical_tests.md for full R/S algorithm
    pass

3. バリアンス比テスト

複数期間リターンの分散と単一期間の分散を比較します。

  • VR < 1: 負の自己相関(平均回帰的)
  • VR = 1: ランダムウォーク
  • VR > 1: 正の自己相関(トレンド的)
def variance_ratio(series: np.ndarray, q: int = 5) -> float:
    """Compute variance ratio at horizon q. VR < 1 → mean-reverting."""
    returns = np.diff(np.log(series))
    var_1 = np.var(returns)
    returns_q = np.diff(np.log(series[::q]))
    var_q = np.var(returns_q)
    return var_q / (q * var_1)

詳細な実装と解釈ガイドは references/statistical_tests.md を参照してください。


ハーフライフ推定

ハーフライフは、乖離が元の大きさの半分に減衰するまでにかかる期間数を示します。これは平均回帰トレードで最も重要なパラメータです。

AR(1)回帰法

自己回帰モデルを適合: delta_X_t = alpha + beta * X_{t-1} + epsilon

def half_life(series: np.ndarray) -> float:
    """Estimate mean-reversion half-life from AR(1) regression.

    Returns:
        Half-life in periods. Negative means non-mean-reverting.
    """
    y = np.diff(series)
    x = series[:-1]
    x = np.column_stack([np.ones(len(x)), x])
    beta = np.linalg.lstsq(x, y, rcond=None)[0][1]
    if beta >= 0:
        return -1.0  # Not mean-reverting
    return -np.log(2) / np.log(1 + beta)

ハーフライフの使用方法

パラメータ経験則
ルックバック期間ハーフライフ×2
ポジション保有期間ハーフライフ×1
最大保有期間ハーフライフ×3(ストップ)
シグナル再計算ハーフライフ×0.5

Z-スコアシグナルフレームワーク

z-スコアは平均値からの乖離を正規化し、標準化されたエントリー/エグジットシグナルを提供します。

z = (price - rolling_mean) / rolling_std

シグナルルール

条件シグナルアクション
z < -2.0買いロング エントリー(価格は平均値以下)
z > +2.0売りショート エントリー(価格は平均値以上)
z がゼロをクロスエグジットポジション決済(平均値に回帰)
abs(z) > 3.0ストップポジション決済(回帰失敗)

ルックバック期間

ローリングウィンドウを約ハーフライフ×2に設定します:

def z_score_signals(
    prices: np.ndarray,
    lookback: int,
    entry_z: float = 2.0,
    exit_z: float = 0.0,
    stop_z: float = 3.0,
) -> np.ndarray:
    """Generate z-score-based mean-reversion signals.

    Returns:
        Array of signals: 1 (long), -1 (short), 0 (flat).
    """
    rolling_mean = pd.Series(prices).rolling(lookback).mean().values
    rolling_std = pd.Series(prices).rolling(lookback).std().values
    z = (prices - rolling_mean) / rolling_std
    # See scripts/mean_reversion_test.py for full signal generation
    ...

Z-スコアを使用したポジションサイジング

リスク調整済みリターンの向上のため、z-スコアの大きさに応じてポジションサイズを調整します:

size = base_size * min(abs(z) / entry_threshold, max_scale)

完全なエントリー/エグジットフレームワークとサイジングについては references/strategy_design.md を参照してください。


オルンシュタイン・ウーレンベック(OU)過程

OU過程は平均回帰の連続時間モデルです:

dX = theta * (mu - X) * dt + sigma * dW
パラメータ意味推定方法
theta平均回帰の速度AR(1)ベータから: theta = -ln(1+beta)/dt
mu長期平均AR(1)切片から: mu = -alpha/beta
sigmaイノベーションのボラティリティAR(1)からの残差標準偏差

パラメータ推定

def estimate_ou_params(series: np.ndarray, dt: float = 1.0) -> dict:
    """Estimate OU process parameters from observed series.

    Returns:
        Dict with keys: theta, mu, sigma, half_life.
    """
    y = np.diff(series)
    x = series[:-1]
    x_with_const = np.column_stack([np.ones(len(x)), x])
    params = np.linalg.lstsq(x_with_const, y, rcond=None)[0]
    alpha, beta = params[0], params[1]

    theta = -np.log(1 + beta) / dt
    mu = -alpha / beta if beta != 0 else np.mean(series)
    residuals = y - (alpha + beta * x)
    sigma = np.std(residuals) * np.sqrt(2 * theta / (1 - np.exp(-2 * theta * dt)))

    return {
        "theta": theta,
        "mu": mu,
        "sigma": sigma,
        "half_life": np.log(2) / theta if theta > 0 else -1,
    }

ストラテジーの種類

単一資産平均回帰

z-スコアフレームワークをトークン価格系列に直接適用します。以下で最も効果的です:

  • ステーブコイン(USDC/USDTスプレッド)
  • 確立されたレンジ内のトークン
  • ADF検定で定常性を確認した後

ペアトレーディング

共和分関係にある2つの資産間のスプレッドをトレードします:

  1. 共和分を確認(cointegration-analysis スキルを参照)
  2. スプレッドを計算: S = Y - beta * X
  3. スプレッドにz-スコアフレームワークを適用
  4. z < -2 のときスプレッドロング(Y買い、X売り)
  5. z > +2 のときスプレッドショート(Y売り、X買い)

統計的アービトラージ

ペアトレーディングの複数資産拡張:

  • 相関資産のPCAからの固有ポートフォリオ
  • 最小の固有値ポートフォリオ(最も平均回帰的)をトレード
  • より大規模なユニバース(10資産以上)が必要

暗号資産固有の考慮事項

  1. ほとんどの暗号資産はトレンド的: BTC、ETH、SOLのハースト指数は通常0.55~0.70。生の価格の平均回帰は稀です。
  2. 平均回帰が見つかる場所:
    • ペアスプレッド(SOL/ETH比率、BTC優位性)
    • パーペチュアルのファンディングレート
    • 現物先物ベーシス
    • ステーブコイン価格乖離
    • DEX取引手数料層スプレッド
  3. 短いルックバック: 暗号資産の平均回帰は短いハーフライフ(数時間~数日、数週間ではない)
  4. 取引コスト: DEX スワップ手数料(0.25~1%)が平均回帰利益を食い潰す可能性があります。スリッページを考慮してください。
  5. レジーム認識: regime-detection スキルを使用してレンジ相場でのみ平均回帰をトレードしてください。

他のスキルとの統合

スキル統合方法
cointegration-analysisペアトレーディング用の共和分ペアを発見
pandas-ta平均回帰指標としてRSI、ボリンジャーバンドを使用
regime-detectionフィルター: レンジ相場でのみMRをトレード
vectorbt平均回帰ストラテジーのバックテスト
volatility-modelingOUモデルのシグマを推定
slippage-modelingP&L推定に実行コストを組み込む
position-sizingケリー+z-スコアスケーリングを使用したポジションサイジング

ファイル

リファレンス

  • references/statistical_tests.md -- ADF、ハースト指数、バリアンス比、ハーフライフ推定の完全な実装と解釈
  • references/strategy_design.md -- z-スコアフレームワーク、ポジションサイジング、ペアトレーディングセットアップ、リスク管理、バックテスト考慮事項

スクリプト

  • scripts/mean_reversion_test.py -- 包括的な平均回帰分析: ADF、ハースト、バリアンス比、ハーフライフ、OU推定、z-スコアシグナル
  • scripts/pairs_scanner.py -- 複数資産から平均回帰ペアをスキャン: 相関、共和分、スプレッド分析、ランキング

クイックスタート

# Run mean-reversion analysis on synthetic data
python scripts/mean_reversion_test.py --demo

# Scan for mean-reverting pairs
python scripts/pairs_scanner.py --demo

# Analyze a specific token (requires BIRDEYE_API_KEY)
BIRDEYE_API_KEY=your_key TOKEN_MINT=So11...1 python scripts/mean_reversion_test.py

このスキルは分析ツールと情報のみを提供します。財務アドバイスまたはトレード推奨ではありません。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
agiprolabs
リポジトリ
agiprolabs/claude-trading-skills
ライセンス
MIT
最終更新
2026/3/11

Source: https://github.com/agiprolabs/claude-trading-skills / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: agiprolabs · agiprolabs/claude-trading-skills · ライセンス: MIT