ビットコインの「行き過ぎ」をねらえ!みんなと逆をいく作戦
この作戦は、ビットコインの値段が急に上がりすぎたり、下がりすぎたりした時にチャンスをねらう方法です。値段が「行き過ぎ」たとき、元に戻る動きを予想して、利益を出すことを目指します。1時間ごとの値段の動きをチェックして、売ったり買ったりするタイミングを探します。この方法がうまくいくか、約1年間のデータでテストしてみました。
導入と前提条件
この作戦は、ビットコインの値段が急に上がりすぎたり、下がりすぎたりした時にチャンスをねらう方法です。値段が「行き過ぎ」たとき、元に戻る動きを予想して、利益を出すことを目指します。1時間ごとの値段の動きをチェックして、売ったり買ったりするタイミングを探します。この方法がうまくいくか、約1年間のデータでテストしてみました。
【検証】戦略のバックテスト概要
- 戦略名: Returns Z-Score を使用したトレンド追従戦略
- 対象銘柄: BTC/USDT
- 時間足: 1h
- 期間: 2024-07-21〜2025-08-25(399日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: binance
Returns Z-Score の理論的背景
この作戦の基本的な考え方は、「ゴムひも」みたいなものです。ぐーっと引っ張られると、元に戻ろうとしますよね。値段の動きも同じで、急に上がりすぎたり下がりすぎたりすると、やがて平均的な値段に戻ろうとする性質があるんです。この「元に戻ろうとする力」を使って利益をねらうのが、この作戦です。「価格の勢いメーター」は、この値段の動きがどれくらい「普通じゃないか」を測るための道具です。メーターがプラスに大きく振れたら「上がりすぎ!」のサイン。マイナスに大きく振れたら「下がりすぎ!」のサインと考えます。このサインが出たら、値段が元に戻ることを予想して、逆の行動(上がりすぎなら売り、下がりすぎなら買い)をするんです。
具体的な売買ルール(今回の検証)
エントリー条件
- 「価格の勢いメーター」が、決めておいた「やりすぎライン」よりも大きく下がったら、買うタイミングです。
- 「価格の勢いメーター」が、決めておいた「やりすぎライン」よりも大きく上がったら、売るタイミングです。
エグジット条件
- 買っていた場合、「価格の勢いメーター」がいつもの普通の状態に戻ってきたら、売って利益を確定させます。
- 売っていた場合、「価格の勢いメーター」がいつもの普通の状態に戻ってきたら、買い戻して利益を確定させます。
- もし予想が外れて損が大きくなったら、それ以上損しないように、決めておいたラインで取引をやめます。
リスク管理
一度にたくさんのお金を使わないようにします。もし予想が外れても、大きな損にならないように、使うお金の量を調整することが大切です。また、損が大きくなりすぎないように、「ここまで損したらやめる」というラインをあらかじめ決めておきます。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『Returns Z-Score』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 148回 |
勝率 | 52.03% |
平均利益 | 1.63% |
平均損失 | -2.03% |
期待値 | -0.13% |
プロフィットファクター | 0.82 |
最大ドローダウン | 35.11% |
最終リターン | -20.87% |
シャープレシオ | -0.07 |
HODL(Buy&Hold) | 69.08% |
HODL戦略との比較
実装コード(Python)
"""
Returns Z-Score Reversion
リターンのz-scoreで逆張りするのだ。
"""
import pandas as pd
def calculate_returns_zscore_signals(df: pd.DataFrame, period: int = 24, z_threshold: float = 2.0) -> pd.DataFrame:
out = df.copy()
ret = out['close'].pct_change()
z = (ret - ret.rolling(period).mean()) / ret.rolling(period).std()
out['ret_z'] = z
out['is_buy'] = z <= -abs(z_threshold)
out['is_sell'] = z >= abs(z_threshold)
return out
なぜこの結果になったのか(3つの理由)
- 1値段が急に動いた後、元に戻らずに、そのまま同じ方向に動き続けてしまったため、予想が外れてしまったのかもしれません。
- 2テストした期間中に、ビットコイン全体の値段がずっと下がり続けるような時期がありました。このようなとき、「下がりすぎだから上がるはず」と買う作戦は、うまくいきにくいことがあります。
- 3作戦で使った「やりすぎライン」などの設定が、その時のビットコインの動きに合っていなかった可能性があります。もっとうまくいくように、この設定を見直す必要があるかもしれません。
この結果から学べる3つの教訓
- 1どんなに良さそうに見える作戦でも、必ずうまくいくわけではない、ということを学びました。
- 2マーケット全体の雰囲気(ずっと上がり調子か、下がり調子かなど)によって、作戦が効くときと効かないときがあることが分かりました。
- 3ただ売ったり買ったりするルールだけじゃなく、損をできるだけ小さくする工夫(リスクの管理)が、とても大切なんだと実感しました。
リスク管理の具体的手法
取引量の決め方
1回の取引で使うお金は、持っているお金全体のほんの一部(たとえば100分の1とか)だけにします。こうすれば、もし1回失敗しても、全体のお金が大きく減ることはありません。
損失が大きくなったときの対処法
もし続けて負けて、お金が思ったより減ってしまったら、一度取引をお休みしたり、使うお金の量をさらに減らしたりします。被害がこれ以上大きくならないようにするための、大切なルールです。
資金管理の方法
大切なお金を一度になくしてしまわないように、計画を立てます。たとえば、いろいろな作戦にお金を分けて使ったり、調子が良いときだけ少し使うお金を増やしたりします。長く続けるために、お金を守りながら増やす計画が重要です。
改良案の具体的提案
- 「やりすぎライン」などの設定を、その時々のマーケットの状況に合わせて自動で調整できるように改良します。
- 値段の動きだけでなく、世の中のニュースや、他の投資家がどう考えているか、といった別の情報もヒントにする機能を追加します。
- もし予想が外れてしまった場合に、もっと上手に損を小さくして終わらせるための、新しいルールを考えます。
実用性の向上(運用上の注意)
- この作戦は、あくまで昔のデータでうまくいったかを調べたものです。未来でも同じようにうまくいくとは限りません。実際に使うときは、まずはお試しで、少ないお金から始めるのがおすすめです。
- 「やりすぎライン」などの設定は、ビットコインのその時の値動きに合わせて調整することが大切です。
- この作戦のサインだけを信じるのではなく、他の情報も参考にしながら、落ち着いて判断するようにしましょう。
検証の透明性と信頼性
- データの出所: この記事は、もらったデータをもとに作られています。
- 検証のやり方: 過去のビットコインの1時間ごとの値段のデータ(2024年7月21日〜2025年8月25日の399日間)を使って、この作戦がうまくいったかテストしました。
- コード: この作戦を計算するためのプログラムの作り方は、公開されています。
- 注意事項: この記事は「こんな投資方法がありますよ」と紹介するもので、投資をおすすめするものではありません。投資にはお金が減ってしまうリスクがあります。最後は、必ず自分でよく考えて判断してくださいね。