シェア:

値段の勢いが変わるのをねらえ!「RSIリバーサル」作戦

「RSIリバーサル」っていうのは、コインの値段が「上がりすぎ」たり「下がりすぎ」たりしたときに、「そろそろ反対に動くんじゃないかな?」と予想して取引する作戦のことです。今回は、XRP/USDTというコインの組み合わせで、この作戦を試したらどうなったのかを、分かりやすく説明しますね。

取引数
91
勝率
56.04%
最終リターン
+17.66%
最大DD
55.08%

導入と前提条件

「RSIリバーサル」っていうのは、コインの値段が「上がりすぎ」たり「下がりすぎ」たりしたときに、「そろそろ反対に動くんじゃないかな?」と予想して取引する作戦のことです。今回は、XRP/USDTというコインの組み合わせで、この作戦を試したらどうなったのかを、分かりやすく説明しますね。

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

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

RSI Reversal の理論的背景

この作戦の基本的な考え方は、「やりすぎは元に戻る」というものです。値段が急に上がったり下がったりすると、一時的に「買われすぎ」や「売られすぎ」という、ちょっとやりすぎな状態になります。でも、多くの場合、しばらくすると落ち着いて、元のちょうどいい値段のあたりに戻ってきやすいんです。この作戦は、その「やりすぎ」の瞬間を見つけて、値段が元に戻ろうとするタイミングで取引をして、利益をねらう方法です。

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

エントリー条件

  • いつ買うか:RSIメーターが「売られすぎ」の30より下から、30の上に戻ってきたとき。
  • いつ売るか:RSIメーターが「買われすぎ」の70より上から、70の下に戻ってきたとき。

エグジット条件

  • もうかった時:ある程度もうけが出たら、取引を終わらせます。「やった!」と思ったら欲張りすぎずにやめるのがコツです。
  • 損しそうな時:もし予想と反対に値段が動いて損が出始めたら、それ以上損が大きくならないうちに取引を終わらせます。これを「損切り」と言います。

リスク管理

一度にたくさんのお金を使わないことが大切です。持っているお金のほんの一部だけを使って取引します。もし予想がはずれても、傷が浅いうちに「損切り」をして、大きな失敗を防ぎます。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数91回
勝率56.04%
平均利益3.26%
平均損失-3.51%
期待値0.29%
プロフィットファクター1.1
最大ドローダウン55.08%
最終リターン17.66%
シャープレシオ0.1
HODL(Buy&Hold)400.08%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
RSI Reversal Trading Signal Generator
RSI(相対力指数)を使用した逆張り戦略
"""
import pandas as pd
import numpy as np


def calculate_rsi(df: pd.DataFrame, period: int = 14) -> pd.Series:
    """
    RSI(相対力指数)を計算
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    period : int
        RSI計算期間
    
    Returns:
    --------
    pd.Series
        RSI値
    """
    close = df['close']
    delta = close.diff()
    
    gain = delta.where(delta > 0, 0)
    loss = -delta.where(delta < 0, 0)
    
    avg_gain = gain.rolling(window=period, min_periods=period).mean()
    avg_loss = loss.rolling(window=period, min_periods=period).mean()
    
    rs = avg_gain / avg_loss
    rsi = 100 - (100 / (1 + rs))
    
    return rsi


def calculate_rsi_signals(df: pd.DataFrame, 
                         rsi_period: int = 14,
                         oversold_level: int = 30,
                         overbought_level: int = 70) -> pd.DataFrame:
    """
    RSI逆張り戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ(最低限 'close' カラムが必要)
    rsi_period : int
        RSI計算期間(デフォルト: 14)
    oversold_level : int
        売られすぎレベル(デフォルト: 30)
    overbought_level : int
        買われすぎレベル(デフォルト: 70)
    
    Returns:
    --------
    pd.DataFrame
        以下のカラムが追加されたDataFrame:
        - rsi: RSI値
        - is_buy: 買いシグナル (bool)
        - is_sell: 売りシグナル (bool)
    """
    df = df.copy()
    
    # RSI計算
    df['rsi'] = calculate_rsi(df, period=rsi_period)
    
    # 前日のRSI
    df['rsi_prev'] = df['rsi'].shift(1)
    
    # 買いシグナル: RSIが売られすぎレベルを下から上にクロス
    df['is_buy'] = (
        (df['rsi'] > oversold_level) & 
        (df['rsi_prev'] <= oversold_level) &
        df['rsi'].notna()
    )
    
    # 売りシグナル: RSIが買われすぎレベルを上から下にクロス
    df['is_sell'] = (
        (df['rsi'] < overbought_level) & 
        (df['rsi_prev'] >= overbought_level) &
        df['rsi'].notna()
    )
    
    # 不要な中間カラムを削除
    df.drop(['rsi_prev'], axis=1, inplace=True)
    
    return df

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

  1. 1昔のデータを見ると、RSIが30より下がった後、元気を取り戻して70より上に上がることがよくあったからです。
  2. 2同じように、RSIが70より上がった後、勢いがなくなって30より下に下がることがよくあったからです。
  3. 31時間ごとの値動きを見るという、短い時間での変化を見つけやすいやり方で調べたからです。

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

  1. 1値段の勢いが強すぎたり弱すぎたりすると、その反対の動きが起こりやすい、ということが分かります。
  2. 2RSIのような道具を使うと、自分の勘だけでなく、データを見て「買う」「売る」のタイミングを決められるようになります。
  3. 3「やりすぎ」をねらう作戦は、うまくいくと利益が出やすいですが、反対に大きな損をしてしまう危険もある、ということが学べます。

リスク管理の具体的手法

取引量の決め方

一回の取引で使うお金は、持っているお小遣い全部ではなく、例えば2%だけ、というように前もって決めておきます。そうすれば、もし負けても、次またチャレンジできます。

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

もし「やばい、思ってたのと違う動きだ!」と損が大きくなってきたら、すぐに取引をやめます。これが「損切り」です。これ以上損がふくらむのを防ぐ、とても大事なルールです。

資金管理の方法

取引でうまくお金が増えたら、そのお金の管理も大切です。全部を次の取引に使わずに、一部はちゃんと貯金するなど、自分のお金全体を上手にコントロールすることを目指しましょう。

改良案の具体的提案

  • RSIだけでなく、他の道具(例えば「移動平均線」など)も一緒に使って、もっと確実なタイミングを探してみる。
  • 「いくらもうかったらやめるか」「いくら損したらやめるか」のルールを、もっとはっきり決めて、成績アップをねらう。
  • 他のコインや、見る時間を変えてみて、この作戦が別の場面でもうまくいくか試してみる。

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

  • RSIのメーターが30や70の線をちょっとだけ超えたくらいで焦ってはいけません。しっかり線を突き抜けて戻ってきたのを確認してから、取引を考えるのがおすすめです。
  • この作戦のサインだけに頼らず、世の中のニュースや、グラフ全体の大きな流れも見ておくと、もっと上手に判断できるかもしれません。
  • いきなり自分のお金で試すのではなく、まずは昔のデータを使って「この作戦、本当にうまくいったのかな?」とお試し(バックテスト)をしてみることが、とっても大切です。

検証の透明性と信頼性

  • データの出所: この分析で使ったのは、XRP/USDTという仮想通貨の、過去の実際の値段のデータです。
  • 検証のやり方: 昔の値段のデータを使って、この作戦通りに取引していたら「いくらもうかったか」「いくら損したか」をまじめに計算して、成績を調べました。
  • コード: この計算をするために使ったコンピュータのプログラムは、誰でも見られるように公開されています。
  • 注意事項: これは「こうすれば絶対もうかるよ!」というお話ではありません。投資は、自分のお金が減ってしまうこともある、ということを忘れないでください。最後は、自分でよーく考えて決めてくださいね。

よくある質問

Q.RSIって何ですか?

A.値段の「元気度メーター」みたいなものです。0から100までの数字で、今の勢いがどれくらいかを表します。70を超えると「元気すぎ(買われすぎ)」、30を下回ると「元気なさすぎ(売られすぎ)」のサインと考えます。

Q.「クロス」ってどういう意味ですか?

A.グラフの線が、別の線を突き抜けることです。この作戦では、RSIの線が70や30の基準線を突き抜けて戻ってくることが、取引を始める合図になります。

Q.「HODL(ホドル)」って何ですか?

A.買ったコインを売らずに、ずーっと長く持っておく作戦のことです。「ガチでホールドする」を略して「ガチホ」とも言います。今回の結果と比べると、ただ持っているだけの方が、結果的にお金は増えていたようです。

Q.最大DD(ドローダウン)55.08%って、そんなに損することがあるんですか?

A.はい、その通りです。これは、一番お金が増えていた時から、一番お金が減ってしまった時までに、持っていたお金が最大で半分以下(55.08%)になってしまった瞬間があった、という意味です。かなりドキドキする、大きな損を経験した可能性があるということです。

Q.この作戦は、仮想通貨じゃないと使えませんか?

A.いいえ、そんなことはありません。RSIという道具は、会社の株や、外国のお金(為替)の取引でもよく使われるものなので、他のものでも試せる可能性があります。ただし、何で取引するかによって、うまくいくかどうかは変わってきます。

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

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

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

A.最終リターンは17.66%、最大DDは55.08%です。

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報