シェア:

ビットコインの未来を予測?2つの道具を使った作戦の結果は…

この作戦は、ビットコインが次にどう動くかを見て、いつ買っていつ売ればいいかを探すためのものです。5分ごとの短い値動きを見て判断する、初心者にも分かりやすいシンプルなルールです。でも、残念ながら、結果はあまり良くなかったみたいです。

取引数
1421
勝率
15.34%
最終リターン
-99.43%
最大DD
99.48%

導入と前提条件

この作戦は、ビットコインが次にどう動くかを見て、いつ買っていつ売ればいいかを探すためのものです。5分ごとの短い値動きを見て判断する、初心者にも分かりやすいシンプルなルールです。でも、残念ながら、結果はあまり良くなかったみたいです。

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

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

CCI + MA Filter の理論的背景

この作戦の考え方の基本は、「トレンドフォロー」というものです。これは、値段が上がっている大きな波に乗って、利益をねらう作戦です。『CCI』は、その波の勢いが強まった「瞬間」を教えてくれます。でも、一瞬の動きにだまされることもあります。そこで、『移動平均線』という、もっと大きな時間の流れを見る道具を「フィルター」として使います。コーヒーフィルターのように、余計な情報を取りのぞいて、「本当にこの波に乗って大丈夫かな?」と確認するんです。勢いと流れ、両方がそろったときだけ取引することで、失敗を減らそうという工夫がされています。

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

エントリー条件

  • 【買いのチャンス】値段の勢い(CCI)がマイナスからプラスに変わって、さらに、値段が平均の流れ(移動平均線)よりも上にあるとき。
  • 【売りのチャンス】値段の勢い(CCI)がプラスからマイナスに変わって、さらに、値段が平均の流れ(移動平均線)よりも下にあるとき。

エグジット条件

  • 【買った後】値段の勢い(CCI)がプラスからマイナスに変わったら、売って取引を終わります。
  • 【売った後】値段の勢い(CCI)がマイナスからプラスに変わったら、買いもどして取引を終わります。

リスク管理

大きな損をしないためには、「この金額まで損したら、きっぱりあきらめる」という「損切り」のルールを決めておくことが、とても大切です。また、一度にたくさんのお金を使わないようにすることも大事なポイントです。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数1421回
勝率15.34%
平均利益1.21%
平均損失-0.64%
期待値-0.36%
プロフィットファクター0.4
最大ドローダウン99.48%
最終リターン-99.43%
シャープレシオ-0.67
HODL(Buy&Hold)101.35%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
CCI with MA Filter
CCIゼロクロスに価格SMAフィルターを組み合わせるのだ。
"""
import pandas as pd


def _typical_price(df: pd.DataFrame) -> pd.Series:
    return (df['high'] + df['low'] + df['close']) / 3


def _cci(df: pd.DataFrame, period: int = 20) -> pd.Series:
    tp = _typical_price(df)
    ma = tp.rolling(period).mean()
    md = (tp - ma).abs().rolling(period).mean()
    return (tp - ma) / (0.015 * md)


def calculate_cci_ma_signals(df: pd.DataFrame, cci_period: int = 20, ma_period: int = 50) -> pd.DataFrame:
    out = df.copy()
    out['cci'] = _cci(out, cci_period)
    out['sma'] = out['close'].rolling(ma_period).mean()
    prev = out['cci'].shift(1)
    out['is_buy'] = (out['cci'] > 0) & (prev <= 0) & (out['close'] > out['sma'])
    out['is_sell'] = (out['cci'] < 0) & (prev >= 0) & (out['close'] < out['sma'])
    return out

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

  1. 1この作戦の勝つ確率が、100回中15回くらいととても低かったのは、『CCI』が出すサインに「ウソのサイン」が多かったからかもしれません。特に、5分ごとのような短い時間で見ると、ほんの少しの値動きに反応しすぎてしまうことがあるんです。
  2. 2最終的に持っていたお金がほとんどなくなってしまったのは、負ける取引が多かった上に、勝ったときの利益よりも、負けたときの損失のほうが大きかったからです。これでは、取引すればするほど、お金が減ってしまいます。
  3. 3一番調子が悪かったとき、持っていたお金のほぼ全てを失いそうになったということは、この作戦には一度に大きな損をしてしまう危険があったということです。もしかしたら、「損切り」のルールがうまく働いていなかったのかもしれません。

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

  1. 1簡単な道具を組み合わせただけでは、いつでもうまくいくわけではない、ということです。マーケットの状況はいつも変わるので、作戦もそれに合わせて変えていく必要があります。
  2. 2勝つ回数が少なくても、一回でとても大きく勝てれば、全体としてプラスになることもあります。でも、この作戦は勝ちが小さく負けが大きかったので、結局マイナスになりました。勝つ回数だけでなく、利益と損失のバランスも大切です。
  3. 3どんなにすごい作戦でも、「損をできるだけ小さくする工夫(リスク管理)」を忘れると、あっという間にお金を失う危険がある、ということです。今回うまくいかなかったことが、その大切さを教えてくれています。

リスク管理の具体的手法

取引量の決め方

1回の取引で使うお金を、持っているお金全体の1%や2%のように、ごく一部にすることです。こうすれば、もし負けてもダメージは小さくてすみます。

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

もし全体の資金が一定以上へってしまったら、一度取引をお休みして、作戦を見直すことです。冷静になる時間をつくることで、さらに大きな失敗を防ぎます。

資金管理の方法

「全体でこれ以上は損しない」という上限を決めておくことです。そして、もし利益が出たら、その一部は使わずに取っておくなど、長く続けていくためのお金の管理計画も大切です。

改良案の具体的提案

  • 「ウソのサイン」をへらすために、他の道具(例えばMACDやRSIなど)も一緒に使って、もっと慎重に判断する方法が考えられます。
  • 損切りのルールを「もっと早めにあきらめる」ように厳しくしたり、逆に利益が出ているときは「もっと利益を伸ばす」ための賢い方法を取り入れたりすることが考えられます。
  • 道具の設定(数字)を変えてみたり、ビットコイン以外のコインや、5分ごとではなく1時間ごとのように違う条件で試したりすると、うまくいくパターンが見つかるかもしれません。

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

  • なぜこの作戦がうまくいかなかったのか、その原因をよく考えて、「こうすれば良くなるかも?」というアイデアをためしてみることが大切です。
  • 実際のお金を使う前に、まずは過去のデータを使って「練習試合(バックテスト)」をたくさん行い、その作戦が本当にうまくいくのかをしっかり確かめましょう。
  • この結果は、あくまで過去のデータでの話です。未来も同じようにうまくいくとは限りません。だから、いつでも注意することが必要です。

検証の透明性と信頼性

  • データの出所: だれでも見ることができる、仮想通貨取引所の値段のデータを使っています。
  • 検証のやり方: 過去の値段のデータを使って、もしこの作戦どおりに売買していたらどうなったかを、コンピューターで自動的に計算(シミュレーション)しました。
  • コード: はい、このテストで使った作戦の詳しいルール(プログラムのコード)を見ることができます。
  • 注意事項: この作戦は、過去のデータでためした結果なので、将来の利益を約束するものではありません。投資は、ご自身の判断と責任で行ってくださいね。

よくある質問

Q.CCIって何?

A.値段の「勢い」をはかる温度計のようなものです。プラスなら「買いたい人が多い!」、マイナスなら「売りたい人が多い…」という感じの目安になります。

Q.移動平均線って何?

A.これまでの値段の平均点をむすんだ線のことです。値段が今、上り坂なのか下り坂なのか、大きな流れを知るための道しるべになります。

Q.5分足って、忙しいの?

A.はい、5分ごとの値動きを見るので、取引のチャンスは多いかもしれません。でもその分、急な動きも多くて、判断がむずかしいときもあります。

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

A.ありますよ!10回中1回しか勝てなくても、その1回の勝ちが9回の負けをぜんぶ取り返すくらい大きければ、全体ではプラスになります。でも、この作戦はそうならなかったんですね。

Q.この作戦、このまま使ってもいい?

A.うーん、今回の結果だけ見ると、そのまま使うのはちょっと危ないかもしれません。もっと良くする方法を考えたり、たくさん練習試合をしたりしてからの方が安心だと思います。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報