シェア:

ビットコインの未来を予想!特別な道具『Laguerre RSI』の使い方

この作戦は、「Laguerre RSI」という特別な道具を使って、ビットコイン(BTC)の値段の勢いを調べる方法です。いつ買うか、いつ売るかのタイミングを見つけます。1時間ごとの値段の動きを参考にして、約4ヶ月間試してみました。

取引数
87
勝率
34.48%
最終リターン
-24.73%
最大DD
27.82%

導入と前提条件

この作戦は、「Laguerre RSI」という特別な道具を使って、ビットコイン(BTC)の値段の勢いを調べる方法です。いつ買うか、いつ売るかのタイミングを見つけます。1時間ごとの値段の動きを参考にして、約4ヶ月間試してみました。

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

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

Laguerre RSI の理論的背景

この作戦の考え方の基本は、「値段の勢いは、上がったり下がったりを繰り返す」というものです。「Laguerreフィルター」という特別な工夫が、勢いのギザギザした動きをなめらかにして、本当の勢いの変化を見つけやすくしてくれます。普通のRSIは「買われすぎ」か「売られすぎ」かを示しますが、この工夫を加えることで、もっと信じられる「買う・売る」のサインを見つけようとします。値段が上がる勢いが強まるとメーターは上がり、下がる勢いが強まるとメーターは下がります。この動き方を見て、取引のタイミングを決めるのです。

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

エントリー条件

  • Laguerre RSIのメーターが、0.2より下から上にグンと抜けたら(買いのサイン)
  • これは、値段がこれから上がる勢いが強まってきた、と考えられるタイミングです。

エグジット条件

  • Laguerre RSIのメーターが、0.8より上から下にストンと抜けたら(売りのサイン)
  • これは、値段がこれから下がる勢いが強まってきた、と考えられるタイミングです。

リスク管理

もし取引で損をしてしまっても、その金額をできるだけ小さくするためのルールです。あらかじめ「ここまで損したらやめる」という金額を決めておきます。また、一度に大きなお金を使わず、少しずつ始めることが大切です。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数87回
勝率34.48%
平均利益0.83%
平均損失-0.92%
期待値-0.32%
プロフィットファクター0.48
最大ドローダウン27.82%
最終リターン-24.73%
シャープレシオ-0.6
HODL(Buy&Hold)16.66%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Laguerre RSI Trading Signal
Laguerreフィルターを適用したRSI
"""
import pandas as pd
import numpy as np


def calculate_laguerre_rsi_signals(df: pd.DataFrame,
                                gamma: float = 0.7) -> pd.DataFrame:
    """
    Laguerre RSI戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    gamma : float
        Laguerreフィルター係数(デフォルト: 0.7)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # Laguerreフィルター
    df['l0'] = 0.0
    df['l1'] = 0.0
    df['l2'] = 0.0
    df['l3'] = 0.0
    
    for i in range(1, len(df)):
        df.loc[df.index[i], 'l0'] = (1 - gamma) * df['close'].iloc[i] + gamma * df['l0'].iloc[i-1]
        df.loc[df.index[i], 'l1'] = -gamma * df['l0'].iloc[i] + df['l0'].iloc[i-1] + gamma * df['l1'].iloc[i-1]
        df.loc[df.index[i], 'l2'] = -gamma * df['l1'].iloc[i] + df['l1'].iloc[i-1] + gamma * df['l2'].iloc[i-1]
        df.loc[df.index[i], 'l3'] = -gamma * df['l2'].iloc[i] + df['l2'].iloc[i-1] + gamma * df['l3'].iloc[i-1]
    
    # RSI計算
    df['cu'] = np.where(df['l0'] > df['l1'], df['l0'] - df['l1'], 0) + \
              np.where(df['l1'] > df['l2'], df['l1'] - df['l2'], 0) + \
              np.where(df['l2'] > df['l3'], df['l2'] - df['l3'], 0)
    
    df['cd'] = np.where(df['l0'] < df['l1'], df['l1'] - df['l0'], 0) + \
              np.where(df['l1'] < df['l2'], df['l2'] - df['l1'], 0) + \
              np.where(df['l2'] < df['l3'], df['l3'] - df['l2'], 0)
    
    df['lrsi'] = np.where(df['cu'] + df['cd'] != 0, df['cu'] / (df['cu'] + df['cd']), 0)
    
    # シグナル初期化
    df['signal'] = 0
    df['is_buy'] = False
    df['is_sell'] = False
    
    position = 0
    
    for i in range(10, len(df)):
        # 買いシグナル
        if position <= 0 and df['lrsi'].iloc[i] > 0.2 and df['lrsi'].iloc[i-1] <= 0.2:
            df.loc[df.index[i], 'is_buy'] = True
            df.loc[df.index[i], 'signal'] = 1
            position = 1
            
        # 売りシグナル
        elif position >= 0 and df['lrsi'].iloc[i] < 0.8 and df['lrsi'].iloc[i-1] >= 0.8:
            df.loc[df.index[i], 'is_sell'] = True
            df.loc[df.index[i], 'signal'] = -1
            position = -1
        else:
            df.loc[df.index[i], 'signal'] = position
    
    df['signal'] = df['signal'].fillna(0)
    
    return df


def get_strategy_name() -> str:
    """戦略名を返す"""
    return "Laguerre RSI"


def get_strategy_description() -> str:
    """戦略の説明を返す"""
    return "Laguerreフィルターを適用したRSI戦略"

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

  1. 1勝てた割合(勝率)は、100回中34回くらいと少し低めでした。これは、ちょっとした値段の動きに反応しすぎて、「だましのサイン」に引っかかってしまったからかもしれません。
  2. 21回あたりの平均的なもうけ(期待値)も、最終的なもうけもマイナスでした。これは、勝つ回数が少ない分を、勝ったときの大きな利益で取り返すことができなかったためだと考えられます。
  3. 3持っているお金が一番減ってしまったときの割合(最大DD)が27.82%と大きめでした。これは、負けが続いてしまったか、「ここまで損したらやめよう」と決めるのが少し遅かったからかもしれません。

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

  1. 1勝つ回数が少なくても、トータルでプラスになる作戦はあります。でも今回のテストでは、この作戦で安定して利益を出すのは少し難しい、ということがわかりました。
  2. 2「勢い」を見る道具は、値段が大きく動いているときは役に立ちます。でも、値段があまり動いていないときや、急に反対方向に動き出したときには、間違ったサインを出すこともあると学びました。
  3. 3取引の回数が87回と多いのは、それだけ「買う・売る」のサインがたくさん出たということです。もっとサインの正確さを上げることが、良い結果につながるカギになりそうです。

リスク管理の具体的手法

取引量の決め方

1回の取引で使うお金は、持っているお金全体の1%から2%くらいまでにします。こうすれば、もし負けても、持っているお金が急にガクンと減ってしまうのを防げます。

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

もし、持っているお金が一定の割合(例えば10%)以上減ってしまったら、一度すべての取引をお休みします。そして、作戦やルールがこれでいいのか、もう一度考え直します。

資金管理の方法

取引を始める前に、「今回はこれ以上損したらやめる」という金額を毎回決めます。それをしっかり守ることで、長く安定して取引を続けられるようになります。

改良案の具体的提案

  • メーターが0.2や0.8の線を越えてもすぐに動かず、もう少しだけ値段の様子を見てから売り買いするように、ルールを少し変えてみます。
  • Laguerre RSIだけでなく、他の道具(例えば、値段の動きの大きさを教えてくれる道具)も一緒に使います。そして、もっと確実なサインが出たときだけ動くようにしてみます。
  • もしお金が大きく減ってしまったら、自動的に取引をお休みする仕組みを作って、それ以上損が大きくならないようにするのも良い方法です。

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

  • この作戦は、ビットコインみたいに値段がよく動くもので試すと面白いです。でも、動きが激しすぎると、サインがたくさん出すぎてしまって、うまくいかないこともあります。
  • 設定にある「ガンマ」という数字を変えると、Laguerre RSIの反応の良さを調整できます。0.5にすると動きがなめらかになりますが、他の数字も試してみると、新しい発見があるかもしれません。
  • 実際のお金で始める前に、必ず過去のデータを使って「この作戦で本当にうまくいきそうか?」を自分で試してみる(バックテスト)ことが、とても大切です。

検証の透明性と信頼性

  • データの出所: この説明は、もらったデータや成績の数字をもとに作っています。
  • 検証のやり方: 過去のビットコインの1時間ごとの値段のデータ(2025年4月28日〜8月26日)を使って、この作戦がどんな成績になるかを調べました。
  • コード: この作戦がどうやって動くかのプログラムは、見られるようになっています。
  • 注意事項: この作戦は、昔のデータで試した結果です。未来も同じようにうまくいくとは限りません。お金を使うときは、自分でよく考えて決めてくださいね。

よくある質問

Q.Laguerre RSIって、何がすごいの?

A.Laguerre RSIは、値段が急に動いたときにだまされにくく、本当の値段の大きな流れをつかみやすいように、特別に工夫された道具のことだよ。

Q.勝つ回数が少なくても、もうかることはあるの?

A.うん、あるよ!勝つ回数が少なくても、1回勝ったときにすごく大きな利益を出して、負けたときの損を小さくできれば、全部合わせるとプラスになることもあるんだ。

Q.「期待値」って何?マイナスだとダメなの?

A.「期待値」は、取引を1回やると、平均でどれくらいもうかるか(または損するか)を示す数字のこと。マイナスだと、平均すると損しちゃう可能性が高い、ということになるんだ。

Q.「最大DD」って、一番損したときの金額?

A.おしい!金額じゃなくて「割合」のことだよ。持っていたお金が一番へこんだ時に、元の金額から何パーセント減ったかを示しているんだ。この数字が大きいと、ちょっとドキドキしちゃうよね。

Q.この作戦、どんなときに使うのがいいの?

A.ビットコインみたいに、値段が元気に上がったり下がったりしているときに試すと面白いかもしれないね。でも、嵐みたいに動きが激しすぎると、サインがたくさん出すぎて逆にうまくいかないこともあるから、気をつけてね。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報