シェア:

ビットコインの値段が大きく動いた時をねらった作戦、でも残念な結果に

ビットコインの値段が、急に上がりすぎたり、下がりすぎたりした時、「そろそろ元に戻るだろう」と考えて取引する作戦があります。でも、実際に試してみたら、残念ながらうまくいきませんでした。どうして失敗したのか、そこから何を学べるのかを一緒に見ていきましょう。

取引数
1564
勝率
23.66%
最終リターン
-99.73%
最大DD
99.73%

導入と前提条件

ビットコインの値段が、急に上がりすぎたり、下がりすぎたりした時、「そろそろ元に戻るだろう」と考えて取引する作戦があります。でも、実際に試してみたら、残念ながらうまくいきませんでした。どうして失敗したのか、そこから何を学べるのかを一緒に見ていきましょう。

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

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

Funding Rate Extreme の理論的背景

この作戦の土台になっているのは、「平均回帰(へいきんかいき)」という考え方です。これは、モノの値段がいつもの平均的な値段から大きく離れたら、いずれ平均に戻ってくるだろう、という考えです。例えば、みんなが急に買い始めて値段がすごく上がっても、いつかは落ち着いて元の値段に近づく、というイメージです。この作戦では、「Zスコア」というものさしを使って、値段が平均からどれくらい離れているかを測ります。このスコアが一定のラインを超えたら、「今がチャンス!」と判断して取引を始めるルールにしました。たくさんの人が取引しているかどうかも、ちゃんと見ています。

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

エントリー条件

  • 値段がいつもの平均よりすごく安くなって、しかもたくさんの人が取引している時に、「これから上がるかも!」と予想して「買う」という注文をします。
  • 値段がいつもの平均よりすごく高くなって、しかもたくさんの人が取引している時に、「これから下がるかも!」と予想して「売る」という注文をします。

エグジット条件

  • 買った後は、値段が上がって利益が出たら、または、値段が下がって決めておいた以上の損が出そうになったら、取引を終わらせます。
  • 売った後は、値段が下がって利益が出たら、または、値段が上がって決めておいた以上の損が出そうになったら、取引を終わらせます。

リスク管理

どんな取引でも、損をしないためのルールはとても大事です。この作戦では、1回の取引で損しても大丈夫な金額を決めておきます。もし予想が外れても、その金額以上の損が出ないように、自動で取引をやめる「損切り」というルールも設定しておくことが大切です。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数1564回
勝率23.66%
平均利益0.27%
平均損失-0.57%
期待値-0.38%
プロフィットファクター0.16
最大ドローダウン99.73%
最終リターン-99.73%
シャープレシオ-0.78
HODL(Buy&Hold)75.21%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Mean Reversion Signal (formerly funding_rate_extreme)
価格の平均回帰を利用したシグナル生成
"""
import pandas as pd
import numpy as np


def calculate_funding_rate_signals(df: pd.DataFrame,
                                 exchange_name: str = 'binance',
                                 derivative_symbol: str = None,
                                 threshold: float = 0.0005,
                                 window: int = 20,
                                 zscore_threshold: float = 1.5) -> pd.DataFrame:
    """
    平均回帰戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    window : int
        移動平均の期間(デフォルト: 20)
    zscore_threshold : float
        Zスコアの閾値(デフォルト: 2.0)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # 移動平均と標準偏差を計算
    df['ma'] = df['close'].rolling(window=window).mean()
    df['std'] = df['close'].rolling(window=window).std()
    
    # Zスコアを計算
    df['zscore'] = (df['close'] - df['ma']) / (df['std'] + 0.0001)
    
    # ボリュームの移動平均
    df['volume_ma'] = df['volume'].rolling(window=window).mean()
    
    # シグナル生成(平均回帰)
    df['is_buy'] = (
        (df['zscore'] < -zscore_threshold) &  # 過度に売られている
        (df['volume'] > df['volume_ma'] * 0.8) &  # 十分なボリューム
        df['zscore'].notna()
    )
    df['is_sell'] = (
        (df['zscore'] > zscore_threshold) &  # 過度に買われている
        (df['volume'] > df['volume_ma'] * 0.8) &  # 十分なボリューム
        df['zscore'].notna()
    )
    
    # 不要カラム削除
    df.drop(['ma', 'std', 'zscore', 'volume_ma'], axis=1, inplace=True, errors='ignore')
    
    return df

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

  1. 1勝率が約24%と、とても低かったです。これは、4回取引したら3回は負けてしまう計算です。これでは、なかなか利益を積み重ねられませんでした。
  2. 21回取引するごとに、平均して少しずつお金が減っていく計算でした。だから、取引すればするほど、お金が減ってしまう結果になりました。
  3. 3もうかった金額と、損した金額を比べると、損した金額の方がずっと大きかったのです。最終的に、もとのお金がほとんどなくなってしまう(-99.73%)という、とても残念な結果になりました。

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

  1. 1「値段はいつか平均に戻るはず」という考え方が、いつでも通用するわけではないことがわかりました。特に、値段がどんどん上がり続けたり、下がり続けたりする「トレンド」が起きている時は、平均に戻らず、そのまま進んでしまうことが多いのです。
  2. 2勝つ回数が少なくても、1回勝った時にすごく大きな利益が出れば、良い作戦になることもあります。でも、この作戦は勝つ回数が少ない上に、勝った時の利益も小さかったので、うまくいきませんでした。
  3. 31500回以上もたくさん取引したのに、結果がとても悪かったということは、作戦そのものに何か問題があったと考えられます。「平均に戻るはず」という単純な考えだけでは、複雑な値段の動きには対応できない、ということが学べました。

リスク管理の具体的手法

取引量の決め方

1回の取引に使うお金は、持っているお金全部のうちの、ほんの一部(例えば100分の1とか)だけにしておきます。こうすれば、もし負けても、大きなダメージを受けずにすみます。

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

もし、決めておいた以上に損がふくらんでしまったら、すぐに取引をストップします。そして、「作戦のどこが悪かったんだろう?」と見直すことが大切です。今回のように、お金がほとんど無くなるまで続けるのはとても危険です。

資金管理の方法

取引に使うお金は、かならず「もし無くなっても生活に困らないお金」だけにしましょう。また、もし利益が出ても、全部使ってしまわずに、一部は次の取引のためにとっておくなど、長い目で見たお金の管理が重要です。

改良案の具体的提案

  • 値段の勢いが強い時(トレンド)にもうまくいくように、「流れに乗る」という考え方(トレンドフォロー)を作戦に加えてみるのはどうでしょうか。
  • 「ここまできたら取引する」というライン(基準値)などを、その時の状況に合わせて変えられるように、作戦を改良することが考えられます。
  • 値段の動きを分析するための道具(指標)は他にもたくさんあります。それらをいくつか組み合わせることで、もっと良いタイミングで取引できるようになるかもしれません。

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

  • この作戦は、お金を増やすのがとても難しいことがわかっています。もし試すなら、まずは本物のお金を使わない練習(デモ取引)や、なくなってもいいと思える少額のお金で試すことを強くおすすめします。
  • 作戦で使う数字の設定(「ここまで来たら取引する」というラインなど)は、今の状況に合わせて変えていくことが大切です。古いルールのままでは、うまくいかないかもしれません。
  • この結果は、あくまで過去のデータで試したものです。未来も同じ結果になるという保証はどこにもありません。このことを絶対に忘れないでください。

検証の透明性と信頼性

  • データの出所: この結果は、過去1年間のビットコインの5分ごとの値段のデータを使って計算したものです。
  • 検証のやり方: 決められた設定とプログラムを使って、過去のデータでこの作戦を試す「バックテスト」というシミュレーションを行いました。
  • コード: どんなプログラムで計算したかは、公開されているので誰でも見ることができます。どうやって「買い」や「売り」の合図を出しているのか、中身を確認できます。
  • 注意事項: 大切なことなので繰り返しますが、この作戦は過去のデータで試したもので、将来もうかることを約束するものではありません。投資をする時は、必ず自分で考えて、自分の責任で行ってください。また、この計算結果は、手数料などを考えない特別な条件でのものなので、実際に取引した時の結果とは違うことがあります。

よくある質問

Q.この作戦は、どうして「Funding Rate Extreme」という名前なの?

A.「ファンディングレート」というのは、仮想通貨のある特別な取引で発生する手数料のようなものです。このレートがものすごく大きくなる時というのは、値段が大きく動いている時が多いんです。この作戦は、そんな極端な(Extreme)タイミングをねらうので、こんな名前がついたのかもしれません。(ただ、今回の作戦の計算では、このファンディングレート自体は直接使っていませんでした)

Q.「平均回帰」って、本当にうまくいくの?

A.うまくいく時も、いかない時もあります。特に、値段がどんどん上がり続けたり、下がり続けたりする強い「トレンド」が出ている時は、平均に戻るどころか、もっと離れていってしまうことが多いです。この作戦が失敗したのも、それが原因の一つかもしれません。

Q.「Zスコア」って何? 難しくない?

A.Zスコアは、学校のテストの「偏差値」と少し似ています。「平均点から、自分はどれくらい離れているか」を表すのが偏差値ですよね。Zスコアも同じように、「平均の値段から、今の値段はどれくらい離れているか」を数字で表したものです。この数字がすごく大きくなったら、「離れすぎ!」と判断するわけです。

Q.勝率が約24%って、すごく低いんだけど、大丈夫なの?

A.勝つ回数が少ない、ということですね。4回取引したら、3回は負けてしまう計算です。もし、こんなに勝率が低い作戦で利益を出そうと思ったら、1回勝った時の利益が、負けた時の損よりもずーっと大きくないといけません。でも、この作戦ではそれもできなかったので、大きな損につながってしまいました。

Q.この作戦を参考に、自分で取引をしてもいい?

A.この作戦は、残念ながら過去のデータで大きな損を出してしまったものです。なので、そのまま真似して取引するのは、おすすめできません。もしどうしても試してみたいなら、まずはお金を使わない練習用の取引(デモ取引)で、どんな風に動くのかをじっくり観察してみてください。投資は、必ず自分でよく考えて、自分の責任で行うことが大切です。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報