シェア:

ビットコインが大きく動く時を見つけよう!AIが教える「デサイクラー」作戦

この作戦は、ビットコインの値段が大きく動きそうな合図を見つけて、うまく利益を出すための方法です。1時間ごとの値段のデータを使って、過去の約1年2ヶ月分の動きで、この作戦がうまくいくか試してみました。AIが値段の勢いを調べて、いつ買ったり売ったりすればいいか教えてくれます。

取引数
152
勝率
29.61%
最終リターン
-43.01%
最大DD
43.67%

導入と前提条件

この作戦は、ビットコインの値段が大きく動きそうな合図を見つけて、うまく利益を出すための方法です。1時間ごとの値段のデータを使って、過去の約1年2ヶ月分の動きで、この作戦がうまくいくか試してみました。AIが値段の勢いを調べて、いつ買ったり売ったりすればいいか教えてくれます。

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

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

Decycler Oscillator の理論的背景

この作戦は、「値段は、ある範囲の中で動いていて、上がりすぎたり下がりすぎたりすると、元に戻ろうとする」という考え方が元になっています。まず「デサイクラー」という方法で、値段のなめらかな動きを予想します。そして、実際の値段と予想した値段がどれくらい離れているかを調べます。この差が、決めておいた基準の線を越えたときに、買ったり売ったりする合図が出ます。値段の勢いも一緒に見ることで、もっと成功しそうなタイミングを探します。

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

エントリー条件

  • デサイクラーで計算した線が、下の基準線を下から上に突き抜けたとき。これは「売られすぎだから、これから上がるかも?」という合図です。
  • デサイクラーの線が真ん中の0の線を下から上に越えて、さらに値段が上がる勢いが強まっているとき。

エグジット条件

  • デサイクラーで計算した線が、上の基準線を上から下に突き抜けたとき。これは「買われすぎだから、これから下がるかも?」という合図です。
  • デサイクラーの線が真ん中の0の線を上から下に越えて、さらに値段が上がる勢いが弱まっているとき。

リスク管理

もし予想と反対に値段が動いてしまったら、損が大きくならないように、すぐに取引をやめるルールを決めておきます。この作戦のテストでは、最大で持っているお金の約44%も損してしまったことがありました。だから、損を小さくすることはとても大切です。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数152回
勝率29.61%
平均利益2.2%
平均損失-1.41%
期待値-0.34%
プロフィットファクター0.66
最大ドローダウン43.67%
最終リターン-43.01%
シャープレシオ-0.22
HODL(Buy&Hold)77.66%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Decycler Oscillator Trading Signal Generator
高周波ノイズを除去してトレンドを抽出
"""
import pandas as pd
import numpy as np


def calculate_decycler_signals(df: pd.DataFrame,
                              hp_period: int = 125,
                              smooth_period: int = 5) -> pd.DataFrame:
    """
    Decycler Oscillator戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    hp_period : int
        ハイパスフィルター期間(デフォルト: 125)
    smooth_period : int
        スムージング期間(デフォルト: 5)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # Decycler (High-pass filter)
    alpha = (np.cos(2 * np.pi / hp_period) + np.sin(2 * np.pi / hp_period) - 1) / np.cos(2 * np.pi / hp_period)
    
    df['decycler'] = df['close'].copy()
    for i in range(2, len(df)):
        df.loc[df.index[i], 'decycler'] = alpha * (df.iloc[i]['close'] + df.iloc[i-1]['close']) / 2 + (1 - alpha) * df.iloc[i-1]['decycler']
    
    # Decycler Oscillator (価格 - Decycler)
    df['osc'] = ((df['close'] / df['decycler']) - 1) * 100
    
    # スムージング
    df['osc_smooth'] = df['osc'].rolling(window=smooth_period).mean()
    
    # 標準偏差バンド
    df['osc_std'] = df['osc_smooth'].rolling(window=hp_period).std()
    df['upper_band'] = df['osc_std'] * 2
    df['lower_band'] = -df['osc_std'] * 2
    
    # モメンタム
    df['osc_momentum'] = df['osc_smooth'] - df['osc_smooth'].shift(smooth_period)
    
    # シグナル生成
    df['osc_prev'] = df['osc_smooth'].shift(1)
    df['is_buy'] = (
        ((df['osc_smooth'] > df['lower_band']) & (df['osc_prev'] <= df['lower_band'])) |  # 売られ過ぎからの反発
        ((df['osc_smooth'] > 0) & (df['osc_prev'] <= 0) & (df['osc_momentum'] > 0))  # ゼロクロス+モメンタム
    ) & df['osc_smooth'].notna()
    df['is_sell'] = (
        ((df['osc_smooth'] < df['upper_band']) & (df['osc_prev'] >= df['upper_band'])) |  # 買われ過ぎからの反落
        ((df['osc_smooth'] < 0) & (df['osc_prev'] >= 0) & (df['osc_momentum'] < 0))  # ゼロクロス+モメンタム
    ) & df['osc_smooth'].notna()
    
    # 不要カラム削除
    df.drop(['decycler', 'osc', 'osc_smooth', 'osc_std', 'upper_band', 'lower_band',
             'osc_momentum', 'osc_prev'], axis=1, inplace=True, errors='ignore')
    
    return df

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

  1. 1この作戦が成功する確率(勝率)は、約30%とあまり高くありませんでした。取引を1回しても、平均すると少し損をしてしまう計算になりました。これは、取引の合図が出ても、思ったように利益が出ないことが多かったということです。
  2. 2テスト期間全体で見ると、残念ながらお金はマイナス43%になってしまいました。これは、勝ったときにもらえる利益よりも、負けたときに失うお金の方が大きかった、ということです。
  3. 3テストの途中で、持っているお金が一番多いときから最大で約44%も減ってしまう時期がありました。これは、続けて負けてしまうと、お金が大きく減る危険があるということです。

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

  1. 1この作戦をそのまま使っても、安定して利益を出し続けるのは難しいかもしれません。勝つ確率が低くて、最終的にお金が減ってしまったので、今のままでは損をしてしまう可能性が高いと言えます。
  2. 2「デサイクラー」という考え方自体は、値段の勢いを見るのに役立つかもしれません。でも、いつ取引するかの合図の出し方を変えたり、他の方法と組み合わせたりする工夫が必要みたいです。
  3. 3過去のデータでうまくいかなかったからといって、未来でも絶対にダメとは限りません。でも、世の中の状況はいつも変わるので、この作戦もそのまま使うのではなく、もっと良くしていく必要があるということがわかりました。

リスク管理の具体的手法

取引量の決め方

1回の取引で使うお金は、自分が持っているお金のほんの一部だけにします。例えば、1%だけと決めておけば、もし失敗しても、全体のお金が大きく減るのを防げます。

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

もし損が続いて、持っているお金が決めた割合(例えば10%)より減ってしまったら、一度すべての取引をお休みします。そして、落ち着いてやり方を見直す時間を作ります。

資金管理の方法

取引で増えたお金は、全部を次の取引に使わずに、一部は貯金したり、もっと安全な方法でお金を増やすことを考えます。そして、取引に使うお金は、なくなっても生活に困らないお金だけにすることがとても大切です。

改良案の具体的提案

  • どんなときに取引を始めるか、というルールをもう少し厳しくしてみます。例えば、他の分析方法も一緒に使って、「今がチャンス!」という確信がもっと持てる時だけ取引するようにします。
  • 取引をやめるタイミングのルールを見直します。うまくいっている時は利益をもっと伸ばせるように、ダメだった時は損が小さいうちにやめられるように工夫します。
  • 計算に使う数字(パラメータ)を、その時の状況に合わせて変えてみます。色々な数字で試してみて、一番うまくいく組み合わせを見つけるのも良い方法です。

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

  • この作戦の成績は、あくまで過去のデータで試した結果です。未来も同じようにうまくいくとは限りません。実際に試すときは、なくなっても大丈夫な少ない金額から始めるのがおすすめです。
  • 「デサイクラー」の合図だけを信じるのではなく、他の分析方法やニュースなども見ながら、色々な情報を合わせて判断することが大切です。
  • 計算に使う数字や、テストする期間を変えてみると、この作戦がどんな時に強くて、どんな時に弱いのかがわかるかもしれません。色々と試してみるのも良い勉強になります。

検証の透明性と信頼性

  • データの出所: このテストで使ったのは、ビットコインの1時間ごとの値段のデータです。
  • 検証のやり方: 用意されたプログラムを使って、決まった期間の過去のデータで、この作戦がどれくらいの成績だったかを計算しました。
  • コード: この作戦をコンピューターで動かすためのプログラム(Pythonコード)は、見ることができます。
  • 注意事項: このお話は、お金を増やす方法を教えるものではありません。投資には損をする危険もあります。取引をするかどうかは、最後は自分でよく考えて決めてくださいね。

よくある質問

Q.「デサイクラー」って何?

A.値段の小さなギザギザした動きをなめらかにして、大きな流れを見やすくするための計算方法のことだよ。

Q.勝率が低いってことは、全然ダメなの?

A.必ずしもそうとは言えないんだ。勝つ回数が少なくても、1回勝ったときにたくさん利益が出て、負けたときの損が小さければ、全部合わせるとプラスになることもあるからね。

Q.「最大DD」ってどういう意味?

A.「最大ドローダウン」という言葉の略だよ。テストの途中で、お金が一番多かった時から、一番減ってしまった時までの下がり幅のこと。これが大きいと、ドキドキしちゃうよね。

Q.この作戦で、いくらから始めたらいい?

A.これは「こうしなさい」というアドバイスではないけれど、一般的には、もしなくなっても生活に困らない少ないお金から試してみるのが良いと言われているよ。

Q.ビットコイン以外でも使えるの?

A.「デサイクラー」の考え方自体は、ビットコイン以外の仮想通貨や会社の株みたいに、値段が動くものなら使える可能性があるよ。でも、それぞれでちゃんと効くかどうか、テストしてみる必要があるんだ。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報