シェア:

ビットコイン、いつ買っていつ売る?「コップ曲線」で探る作戦

ビットコインの値段が、いつ上がっていつ下がるか、見つけるのはとっても難しいですよね。この作戦は「コップ曲線」という道具を使って、値段のパワーの向きを見て、上手に売り買いするタイミングを探るものです。今回は、1時間ごとの値動きを見て、約4ヶ月間この作戦を試してみた結果を紹介しますね。

取引数
154
勝率
23.38%
最終リターン
-46.37%
最大DD
46.51%

導入と前提条件

ビットコインの値段が、いつ上がっていつ下がるか、見つけるのはとっても難しいですよね。この作戦は「コップ曲線」という道具を使って、値段のパワーの向きを見て、上手に売り買いするタイミングを探るものです。今回は、1時間ごとの値動きを見て、約4ヶ月間この作戦を試してみた結果を紹介しますね。

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

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

Coppock Curve の理論的背景

「値段って、急に上がったり下がったりするんじゃなくて、しばらく同じ方向に動き続けることが多いよね」という考え方が元になっています。まず、最近の値段がどれくらい変わったかを、短い期間と、もう少し長い期間の2つで見ます。この2つの変化を合体させることで、今の勢いと、これまでの流れの両方がわかるようになります。そして、その合体した数字のギザギザを、特別な計算でなめらかな線にします。これが「コップ曲線」の正体です。この線がゼロより上に行ったら、値段が上がるパワーが強まってきた!と考えて「買う」んです。逆にゼロより下に行ったら、値段が下がるパワーが強まってきたかも…と考えて「売る」んです。

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

エントリー条件

  • コップ曲線が、ゼロのラインを下から上に突き抜けたときです。
  • このサインが出たら、新しくビットコインを買います。

エグジット条件

  • コップ曲線が、ゼロのラインを上から下に突き抜けたときです。
  • このサインが出たら、持っていたビットコインを売って、取引を終えます。

リスク管理

この作戦、実は勝てる確率は約23%と、ちょっと低めです。だから、一回の取引で大きく負けないようにすることが、すごく大事になります。例えば、「一回に使うお金はこれだけ」と決めたり、「これ以上損したら、今回はやめる」という自分ルールを作っておくのがおすすめです。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数154回
勝率23.38%
平均利益1.15%
平均損失-0.87%
期待値-0.4%
プロフィットファクター0.4
最大ドローダウン46.51%
最終リターン-46.37%
シャープレシオ-1.24
HODL(Buy&Hold)16.67%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Coppock Curve Trading Signal
長期モメンタム指標によるトレンド判定
"""
import pandas as pd
import numpy as np


def calculate_coppock_curve_signals(df: pd.DataFrame,
                                  roc1_period: int = 14,
                                  roc2_period: int = 11,
                                  wma_period: int = 10) -> pd.DataFrame:
    """
    Coppock Curve戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    roc1_period : int
        第1 ROC期間(デフォルト: 14)
    roc2_period : int
        第2 ROC期間(デフォルト: 11)
    wma_period : int
        WMA期間(デフォルト: 10)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # Rate of Change計算
    df['roc1'] = ((df['close'] - df['close'].shift(roc1_period)) / df['close'].shift(roc1_period)) * 100
    df['roc2'] = ((df['close'] - df['close'].shift(roc2_period)) / df['close'].shift(roc2_period)) * 100
    
    # ROCの合計
    df['roc_sum'] = df['roc1'] + df['roc2']
    
    # 加重移動平均
    weights = np.arange(1, wma_period + 1)
    df['coppock'] = df['roc_sum'].rolling(window=wma_period).apply(lambda x: np.dot(x, weights) / weights.sum(), raw=True)
    
    # シグナル初期化
    df['signal'] = 0
    df['is_buy'] = False
    df['is_sell'] = False
    
    position = 0
    
    for i in range(max(roc1_period, roc2_period) + wma_period, len(df)):
        # 買いシグナル(Coppock Curveがゼロを上抜け)
        if position <= 0 and df['coppock'].iloc[i] > 0 and df['coppock'].iloc[i-1] <= 0:
            df.loc[df.index[i], 'is_buy'] = True
            df.loc[df.index[i], 'signal'] = 1
            position = 1
            
        # 売りシグナル(Coppock Curveがゼロを下抜け)
        elif position >= 0 and df['coppock'].iloc[i] < 0 and df['coppock'].iloc[i-1] >= 0:
            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 "Coppock Curve"


def get_strategy_description() -> str:
    """戦略の説明を返す"""
    return "長期モメンタム指標によるトレンド判定戦略"

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

  1. 1勝つ確率が23%くらいで、4回に1回くらいしか勝てなかったからです。
  2. 21回取引するごとに、平均して少しずつお金が減ってしまう計算だったからです。
  3. 3儲かった金額よりも、損した金額のほうが大きかったからです。

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

  1. 1「コップ曲線」という道具一つだけだと、うまく勝てないこともあるんだ、ということがわかります。
  2. 2勝つ回数が少なくてもトータルでプラスになる作戦もあるけど、今回のやり方ではうまくいきませんでした。
  3. 3たくさん取引(154回)したのに、結果的に持っていたお金が半分近くも減ってしまいました。これは、小さな負けが積み重なってしまったからですね。

リスク管理の具体的手法

取引量の決め方

一回の取引で、もし負けても全体のお金の1%か2%くらいの損で済むように、買う量を調整します。これがとっても大事です。

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

もし取引の途中で、全体のお金が10%とか20%も減ってしまったら、一度取引をお休みします。大きな失敗を避けるためのブレーキです。

資金管理の方法

もし取引で勝って儲かっても、そのお金を全部次の取引に使わないようにします。一部はとっておいたり、別の安全なことに使ったりして、大切なお金全体を守ります。

改良案の具体的提案

  • コップ曲線を計算するときの数字(期間の長さ)を変えてみて、もっと良い成績になる組み合わせを探してみる。
  • 線がゼロを越えたらすぐに売り買いするんじゃなくて、「値段が大きく動いたときだけ」みたいに、別のルールも付け加えてみる。
  • 値段がどんどん上がったり下がったりする時だけじゃなくて、あまり値段が変わらない「横ばい」の時でもうまくいくような工夫を考えてみる。

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

  • この作戦の成績は、あくまでも過去のデータで試した結果です。未来も同じようにうまくいくとは限りません。
  • いきなり大きなお金でやるのは危険です。まずは、練習用のツールを使ったり、すごく小さい金額で試してみたりするのがおすすめです。
  • ビットコインの値段の動き方は、いつも同じではありません。だから、この作戦が今もうまくいくか、時々チェックして、必要ならやり方を変えることも大切です。

検証の透明性と信頼性

  • データの出所: この説明は、コンピューターで過去のデータを使ってシミュレーションした結果をもとにしています。
  • 検証のやり方: 2025年4月28日から8月26日までの、ビットコインの1時間ごとの値段のデータを使って、プログラムで本当にこの作戦がうまくいったかを確かめました。
  • コード: どんなプログラムで計算したかは、見ることができるようになっています。
  • 注意事項: このお話は、投資をおすすめするためのものではありません。投資は、お金が増えることもあれば、減ってしまうこともある危険なものです。必ず自分でよく考えて、自分の責任で行ってくださいね。

よくある質問

Q.コップ曲線って、本当にコップに関係あるの?

A.面白い質問ですね!でも、食器のコップとは全然関係ないんです。値段の勢いを測るための特別な計算方法の名前なんですよ。

Q.勝率が低いと、どうしてダメなの?

A.勝つ回数が少ないと、どうしても負ける回数が多くなりますよね。そうすると、一回勝って大きく儲かっても、たくさんの小さな負けで、結局は損してしまうことが多くなるんです。

Q.「期待値」って何?

A.「この作戦を1回やったら、だいたいどれくらい儲かる(または損する)かな?」という平均点を計算したものです。これがマイナスだと、続ければ続けるほど、全体のお金が減っていってしまう可能性が高い、ということになります。

Q.「PF」ってどういう意味?

A.「プロフィットファクター」のことで、作戦の「元気度」みたいなものです。全部の勝ちで得たお金を、全部の負けで失ったお金で割り算します。この数字が1より大きければ元気(プラス)、1より小さいと元気がない(マイナス)という感じです。

Q.この作戦でも勝てる可能性はある?

A.もちろんです!今回の結果はあくまで一つの例です。コップ曲線を計算するときの数字を変えてみたり、他の道具と組み合わせたりすることで、すごくうまくいく「自分だけの最強の作戦」が見つかるかもしれませんよ。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報