ビットコインの未来を予想!特別な道具『Laguerre RSI』の使い方
この作戦は、「Laguerre RSI」という特別な道具を使って、ビットコイン(BTC)の値段の勢いを調べる方法です。いつ買うか、いつ売るかのタイミングを見つけます。1時間ごとの値段の動きを参考にして、約4ヶ月間試してみました。
導入と前提条件
この作戦は、「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)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『Laguerre RSI』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 87回 |
勝率 | 34.48% |
平均利益 | 0.83% |
平均損失 | -0.92% |
期待値 | -0.32% |
プロフィットファクター | 0.48 |
最大ドローダウン | 27.82% |
最終リターン | -24.73% |
シャープレシオ | -0.6 |
HODL(Buy&Hold) | 16.66% |
HODL戦略との比較
実装コード(Python)
"""
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勝てた割合(勝率)は、100回中34回くらいと少し低めでした。これは、ちょっとした値段の動きに反応しすぎて、「だましのサイン」に引っかかってしまったからかもしれません。
- 21回あたりの平均的なもうけ(期待値)も、最終的なもうけもマイナスでした。これは、勝つ回数が少ない分を、勝ったときの大きな利益で取り返すことができなかったためだと考えられます。
- 3持っているお金が一番減ってしまったときの割合(最大DD)が27.82%と大きめでした。これは、負けが続いてしまったか、「ここまで損したらやめよう」と決めるのが少し遅かったからかもしれません。
この結果から学べる3つの教訓
- 1勝つ回数が少なくても、トータルでプラスになる作戦はあります。でも今回のテストでは、この作戦で安定して利益を出すのは少し難しい、ということがわかりました。
- 2「勢い」を見る道具は、値段が大きく動いているときは役に立ちます。でも、値段があまり動いていないときや、急に反対方向に動き出したときには、間違ったサインを出すこともあると学びました。
- 3取引の回数が87回と多いのは、それだけ「買う・売る」のサインがたくさん出たということです。もっとサインの正確さを上げることが、良い結果につながるカギになりそうです。
リスク管理の具体的手法
取引量の決め方
1回の取引で使うお金は、持っているお金全体の1%から2%くらいまでにします。こうすれば、もし負けても、持っているお金が急にガクンと減ってしまうのを防げます。
損失が大きくなったときの対処法
もし、持っているお金が一定の割合(例えば10%)以上減ってしまったら、一度すべての取引をお休みします。そして、作戦やルールがこれでいいのか、もう一度考え直します。
資金管理の方法
取引を始める前に、「今回はこれ以上損したらやめる」という金額を毎回決めます。それをしっかり守ることで、長く安定して取引を続けられるようになります。
改良案の具体的提案
- メーターが0.2や0.8の線を越えてもすぐに動かず、もう少しだけ値段の様子を見てから売り買いするように、ルールを少し変えてみます。
- Laguerre RSIだけでなく、他の道具(例えば、値段の動きの大きさを教えてくれる道具)も一緒に使います。そして、もっと確実なサインが出たときだけ動くようにしてみます。
- もしお金が大きく減ってしまったら、自動的に取引をお休みする仕組みを作って、それ以上損が大きくならないようにするのも良い方法です。
実用性の向上(運用上の注意)
- この作戦は、ビットコインみたいに値段がよく動くもので試すと面白いです。でも、動きが激しすぎると、サインがたくさん出すぎてしまって、うまくいかないこともあります。
- 設定にある「ガンマ」という数字を変えると、Laguerre RSIの反応の良さを調整できます。0.5にすると動きがなめらかになりますが、他の数字も試してみると、新しい発見があるかもしれません。
- 実際のお金で始める前に、必ず過去のデータを使って「この作戦で本当にうまくいきそうか?」を自分で試してみる(バックテスト)ことが、とても大切です。
検証の透明性と信頼性
- データの出所: この説明は、もらったデータや成績の数字をもとに作っています。
- 検証のやり方: 過去のビットコインの1時間ごとの値段のデータ(2025年4月28日〜8月26日)を使って、この作戦がどんな成績になるかを調べました。
- コード: この作戦がどうやって動くかのプログラムは、見られるようになっています。
- 注意事項: この作戦は、昔のデータで試した結果です。未来も同じようにうまくいくとは限りません。お金を使うときは、自分でよく考えて決めてくださいね。