シェア:

暗号資産「ADA/USDT」で、「スイングインデックス」を使って値段のパワーを調べてみました!

この作戦は、「ADA/USDT」という暗号資産のセットで使います。1時間ごとの値段の動きを調べて、「スイングインデックス」という方法で、いつ買ったり売ったりしたら良いかを見つけようとするものです。昔のデータを使って、このやり方がうまくいったかどうかを試してみました。一緒に結果を見てみましょう!

取引数
535
勝率
24.49%
最終リターン
-81.45%
最大DD
87.05%

導入と前提条件

この作戦は、「ADA/USDT」という暗号資産のセットで使います。1時間ごとの値段の動きを調べて、「スイングインデックス」という方法で、いつ買ったり売ったりしたら良いかを見つけようとするものです。昔のデータを使って、このやり方がうまくいったかどうかを試してみました。一緒に結果を見てみましょう!

【検証】戦略のバックテスト概要

  • 戦略名: Swing Index を使用したトレンド追従戦略
  • 対象銘柄: ADA/USDT
  • 時間足: 1h
  • 期間: 2024-09-02〜2025-08-25(356日間)
  • 初期資金: $10,000
  • 手数料・スリッページ: 0.1% / 0.1%
  • 取引所: kucoin

Swing Index の理論的背景

この作戦の基本的な考え方は、値段が動く「パワー」をはかることです。具体的には、1時間の中での「終わりの値段」「始まりの値段」「一番高かった値段」「一番安かった値段」といった情報から、「スイングインデックス」という数字を出します。この数字がプラスになったら「買いたい!」というパワーが強くなっている、マイナスになったら「売りたい!」というパワーが強くなっている、と考えます。さらに、この数字を平均したものと比べることで、値段がどっちに向かっているか、大きな流れをつかもうとします。

具体的な売買ルール(今回の検証)

エントリー条件

  • 「スイングインデックス」の数字が、前の時間の数字よりも大きくなって、さらにパワーの変化を見るための「ASIトレンド」というものがマイナスからプラスに変わったときです。これは「買うタイミングかもしれない!」という合図です。
  • 「ASIトレンド」がプラスになったのを確認したら、次の1時間で買う準備をします。

エグジット条件

  • 「ASIトレンド」が、プラスからマイナスに変わったときです。これは、儲けを自分のものにしたり、損がふくらむのを止めたりするタイミングです。
  • 暗号資産を買っている状態で、「ASIトレンド」のパワーがなくなってきたと感じたら、売ることを考えます。

リスク管理

この作戦では、たくさん売り買いをしましたが、残念ながら儲けよりも損のほうが大きくなってしまいました。勝てる確率も低くて、一回でガクンと大きく損をしてしまうこともありました。なので、もしこのやり方を使うなら、一回にたくさんのお金を使いすぎないように注意することがとても大切です。

再現手順(HowTo)

  1. Python/依存(ccxt, pandas, ta)をインストール
  2. ccxtでADA/USDTのOHLCVを取得して前処理
  3. 『Swing Index』に必要な指標を算出(ta 等)
  4. 閾値・クロス条件から売買シグナルを生成
  5. 手数料・スリッページを加味して検証・評価

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数535回
勝率24.49%
平均利益3.81%
平均損失-1.57%
期待値-0.25%
プロフィットファクター0.79
最大ドローダウン87.05%
最終リターン-81.45%
シャープレシオ-0.32
HODL(Buy&Hold)174.03%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Swing Index Trading Signal Generator
Wilder's Swing Indexを使用した短期トレンド検出
"""
import pandas as pd
import numpy as np


def calculate_swing_index_signals(df: pd.DataFrame,
                                 limit_move: float = 3.0) -> pd.DataFrame:
    """
    Swing Index戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    limit_move : float
        リミットムーブ値(デフォルト: 3.0)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # 前日データ
    df['close_prev'] = df['close'].shift(1)
    df['open_prev'] = df['open'].shift(1)
    df['high_prev'] = df['high'].shift(1)
    df['low_prev'] = df['low'].shift(1)
    
    # 価格差分計算
    df['c_cp'] = df['close'] - df['close_prev']
    df['c_o'] = df['close'] - df['open']
    df['cp_op'] = df['close_prev'] - df['open_prev']
    
    # K値計算
    df['h_cp'] = np.abs(df['high'] - df['close_prev'])
    df['l_cp'] = np.abs(df['low'] - df['close_prev'])
    df['k'] = df[['h_cp', 'l_cp']].max(axis=1)
    
    # R値計算
    df['h_l'] = df['high'] - df['low']
    df['r1'] = df['h_l']
    df['r2'] = np.abs(df['high'] - df['close_prev'])
    df['r3'] = np.abs(df['low'] - df['close_prev'])
    df['r'] = df[['r1', 'r2', 'r3']].max(axis=1)
    
    # Swing Index計算
    df['si'] = 50 * (df['c_cp'] + 0.5 * df['c_o'] + 0.25 * df['cp_op']) * (df['k'] / (limit_move * 100)) / (df['r'] + 0.0001)
    
    # Accumulative Swing Index
    df['asi'] = df['si'].cumsum()
    
    # ASIのトレンド
    df['asi_ma'] = df['asi'].rolling(window=14).mean()
    df['asi_trend'] = df['asi'] - df['asi_ma']
    
    # シグナル生成
    df['asi_trend_prev'] = df['asi_trend'].shift(1)
    df['is_buy'] = (df['asi_trend'] > 0) & (df['asi_trend_prev'] <= 0) & df['asi_trend'].notna()
    df['is_sell'] = (df['asi_trend'] < 0) & (df['asi_trend_prev'] >= 0) & df['asi_trend'].notna()
    
    # 不要カラム削除
    drop_cols = ['close_prev', 'open_prev', 'high_prev', 'low_prev', 'c_cp', 'c_o', 'cp_op',
                 'h_cp', 'l_cp', 'k', 'h_l', 'r1', 'r2', 'r3', 'r', 'asi_trend_prev']
    df.drop(drop_cols, axis=1, inplace=True, errors='ignore')
    
    return df

なぜこの結果になったのか(3つの理由)

  1. 1勝てた回数が少なかったのは、短い時間の値段の動きに、つい乗ってしまったからかもしれません。値段が「上がるぞ!」と見せかけて実は下がるような「ウソの動き」に、だまされてしまった回数が多かったと考えられます。
  2. 2成績が良くなかったのは、1回あたりの取引で見ると、平均して儲けよりも損のほうが大きかったからです。
  3. 3一度にすごく大きな損をしてしまった時期があった、ということも分かりました。これは、「もしも」の時の準備が、ちょっと足りなかったのかもしれない、ということを教えてくれています。

この結果から学べる3つの教訓

  1. 1短い時間の動きだけを見て売り買いのタイミングを決めるのは、とても難しいことだと分かりました。
  2. 2勝つ回数だけじゃなくて、一回ごとの儲けを大きくしたり、損を小さくしたりすることが大事だということを学びました。
  3. 3どんなに良さそうな作戦でも、「もしも」の時の準備をちゃんとしておかないと、大きな損につながる可能性があることを、あらためて感じました。

リスク管理の具体的手法

取引量の決め方

一回の取引で使うお金は、自分が持っているお金のほんのちょっとだけ(例えば1%〜2%くらい)にしましょう。そうすれば、もし負けても、持っているお金が全部なくなるような大きな失敗を防げます。

損失が大きくなったときの対処法

もし損が続いてしまったら、無理に続けようとしないで、いったんお休みすることが大事です。そして、なんでうまくいかないのか理由を考えて、やり方を見直しましょう。しばらく取引をお休みするのも、良い方法です。

資金管理の方法

勝ったときも負けたときも、「悔しい!」とか「もっといける!」という気持ちに流されないで、最初に決めた約束を守ってお金を管理することが重要です。一回で大儲けを狙うんじゃなくて、コツコツと長く続けていく気持ちが大切です。

改良案の具体的提案

  • 別の道具(例えば、値段の平均を見る線や、買われすぎ・売られすぎを見る道具など)と組み合わせることで、もっと「当たりやすい」売り買いの合図を見つけられるかもしれません。
  • 作戦で使う数字の設定を変えてみたり、1時間ごとじゃなくて4時間ごとや1日ごとのデータで試してみたりすると、結果が良くなる可能性があります。
  • 「ここまで損したら絶対に売る」というルールをしっかり決めておけば、大きな損をしないようにできるでしょう。

実用性の向上(運用上の注意)

  • この作戦は短い時間の動きを見るので、値段のグラフをこまめにチェックする必要があります。
  • 実際に自分のお金を使う前に、必ず昔のデータでたくさん練習試合(バックテスト)をして、自分に合った設定を見つけることが大切です。
  • 値段の動きはいつも同じじゃないので、一度うまくいったやり方でも、定期的に成績をチェックして、必要ならやり方を変えていきましょう。

検証の透明性と信頼性

  • データの出所: このデータは、昔の「ADA/USDT」の値段の動きを記録したデータをもとにしています。
  • 検証のやり方: 「もし、このやり方で昔から取引してたらどうなってたかな?」というのを、コンピューターで試してみて(バックテスト)、結果を確かめました。
  • コード: この計算をするためのコンピューターへの命令文(プログラムコード)は、誰でも見られるようになっています。
  • 注意事項: この結果は、あくまで昔のデータにもとづくものです。これから先も同じようにうまくいくというお約束はできません。お金を使うかどうかは、自分でよく考えて決めてくださいね。

よくある質問

Q.「スイングインデックス」って、野球のスイングと関係あるの?

A.いいえ、これは投資の世界で使う言葉です。野球のバットみたいに値段が「振られる」勢い、つまり値段が動くパワーをはかる道具みたいなものです。

Q.「ADA/USDT」って、どういう意味?

A.ADAは「エイダ」、USDTは「テザー」という暗号資産(ビットコインの仲間)の名前です。この2つを交換するときの値段を見て、取引をしています。

Q.「1時間足」って、どういうこと?

A.値段のグラフは、よく「ローソク」みたいな形で表されます。そのローソク1本が、1時間分の値段の動きを表している、ということです。だから、この作戦では1時間ごとに値段をチェックしています。

Q.PFが0.79って、良いの?悪いの?

A.PFは成績表みたいなもので、1より大きいと全体で儲かっている、1より小さいと損しているという意味です。0.79は1より小さいので、残念ながら、平均すると少しずつ損をしていた、ということになります。

Q.HODLって何? なんでこんなにプラスなの?

A.HODL(ホドル)は、買った暗号資産を売らないで「ずーっと持っておく」というやり方のことです。今回テストした期間は、たまたまADAの値段が全体的にすごく上がった時期でした。だから、難しい作戦を使わなくても、ただ持っているだけで174%もお金が増えたんです。つまり、今回の作戦よりも、ただ持っているだけの方が結果が良かったということですね。

Q.検証に使用した期間と時間足は?

A.1h足で検証しました。期間は記事内の概要をご確認ください。

Q.最終リターンと最大ドローダウンは?

A.最終リターンは-81.45%、最大DDは87.05%です。

Q.勝率やPFはどの程度?

A.勝率は24.49%、プロフィットファクターは0.79です。

Q.HODLとの比較結果は?

A.HODLは174.03%でした。記事内の比較表をご覧ください。

Q.手数料やスリッページは考慮済み?

A.はい。バックテスト設定の手数料・スリッページを損益に反映しています。

Q.市場環境はトレンド/レンジどちらに近かった?

A.期間中はトレンド優勢と推測されます。

Q.この戦略は初心者でも扱える?

A.基礎的な指標と検証環境の知識があれば扱えます。まずは少額・デモから。

Q.推奨のリスク管理は?

A.最大DDを踏まえた損切り・ポジションサイジングと、システム停止基準の設定を推奨します。

Q.将来の結果は期待できる?

A.過去の結果は将来を保証しません。市場環境やパラメータ適合性に大きく依存します。

Q.改良の方向性は?

A.トレンド・ボラティリティのフィルター併用、パラメータの再最適化、取引頻度の制御を検討してください。

著者情報