シェア:

「Chande Momentum」でLINK/USDTの売買タイミングを探る!どんな結果になったか見てみよう

この方法は、LINK/USDTという仮想通貨の価格に「勢い」があるか、それとも「勢い」がなくなってきたかを見つけて、売買のタイミングを探す作戦です。1時間ごとの価格の動きを見て、うまくいくタイミングを探します。

取引数
65
勝率
46.15%
最終リターン
-38.58%
最大DD
65.47%

導入と前提条件

この方法は、LINK/USDTという仮想通貨の価格に「勢い」があるか、それとも「勢い」がなくなってきたかを見つけて、売買のタイミングを探す作戦です。1時間ごとの価格の動きを見て、うまくいくタイミングを探します。

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

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

Chande Momentum の理論的背景

この作戦の基本的な考え方は、「価格は、勢いがある方向に進みやすい」というものです。例えば、値段がどんどん上がっているときは、もっと上がりやすいかもしれません。逆に、どんどん下がっているときは、もっと下がりやすいかもしれません。Chande Momentumは、最近の価格の上がり幅と下がり幅を比べて、今の勢いを数字にします。この数字が「みんなが買いすぎていて、そろそろ下がるかも」とか、「逆に売られすぎていて、そろそろ上がるかも」ということを教えてくれるので、それをヒントに売買のタイミングを決めるのです。

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

エントリー条件

  • 価格の勢いを表す数字が、「売られすぎ」のラインを下から上に突き抜けたら、「買い」の合図かもしれません。
  • 価格の勢いを表す数字を、もっと滑らかにした線が、「売られすぎ」のラインを下から上に突き抜けたら、これも「買い」の合図かもしれません。

エグジット条件

  • 価格の勢いを表す数字が、「買われすぎ」のラインを上から下に突き抜けたら、持っているのを売るタイミングかもしれません。
  • 価格の勢いを表す数字を、もっと滑らかにした線が、「買われすぎ」のラインを上から下に突き抜けたら、これも売るタイミングかもしれません。

リスク管理

もし、予想と反対に価格が動いて損をしそうになったら、すぐに取引をやめる「損切り」というルールが大切です。今回のテストでは、資金が最大で約65%も減ってしまう場面があったので、損を小さくするための工夫がもっと必要だったようです。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数65回
勝率46.15%
平均利益6.28%
平均損失-6.17%
期待値-0.42%
プロフィットファクター0.74
最大ドローダウン65.47%
最終リターン-38.58%
シャープレシオ-0.02
HODL(Buy&Hold)21.87%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
#!/usr/bin/env python3
"""
Chande Momentum Oscillator (CMO)戦略
価格変動の強さを測定
"""
import pandas as pd
import numpy as np


def calculate_cmo_signals(df: pd.DataFrame, cmo_period: int = 14,
                         overbought: float = 50, oversold: float = -50) -> pd.DataFrame:
    """
    Chande Momentum Oscillatorシグナルを生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    cmo_period : int
        CMO計算期間(デフォルト: 14)
    overbought : float
        買われすぎ水準(デフォルト: 50)
    oversold : float
        売られすぎ水準(デフォルト: -50)
    
    Returns:
    --------
    pd.DataFrame
        シグナル列が追加されたDataFrame
    """
    df = df.copy()
    
    # 価格変動
    df['price_change'] = df['close'].diff()
    
    # 上昇と下降の分離
    df['up_move'] = np.where(df['price_change'] > 0, df['price_change'], 0)
    df['down_move'] = np.where(df['price_change'] < 0, np.abs(df['price_change']), 0)
    
    # 期間内の合計
    df['sum_up'] = df['up_move'].rolling(window=cmo_period).sum()
    df['sum_down'] = df['down_move'].rolling(window=cmo_period).sum()
    
    # CMO計算
    df['cmo'] = ((df['sum_up'] - df['sum_down']) / (df['sum_up'] + df['sum_down'])) * 100
    
    # CMOの移動平均(スムージング)
    df['cmo_ma'] = df['cmo'].rolling(window=3).mean()
    
    # シグナル生成
    df['is_buy'] = (
        (df['cmo_ma'] > oversold) & 
        (df['cmo_ma'].shift(1) <= oversold)
    )
    
    df['is_sell'] = (
        (df['cmo_ma'] < overbought) & 
        (df['cmo_ma'].shift(1) >= overbought)
    )
    
    # NaN値をFalseに置換
    df['is_buy'] = df['is_buy'].fillna(False)
    df['is_sell'] = df['is_sell'].fillna(False)
    
    print(f"Chande Momentum: 期間={cmo_period}, 買われすぎ={overbought}, 売られすぎ={oversold}")
    print(f"買いシグナル数: {df['is_buy'].sum()}")
    print(f"売りシグナル数: {df['is_sell'].sum()}")
    
    return df

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

  1. 1この作戦では、LINK/USDTの価格が大きく下がったときに売買を繰り返しましたが、65回の取引全体でみると、利益よりも損失のほうが大きくなってしまいました。これは、売買のタイミングが市場の動きと合わなかったことを示しています。
  2. 2勝った取引の割合(勝率)が約46%で、半分以上が負けてしまいました。これは、売買の合図が出たとしても、必ずうまくいくわけではない、ということを意味します。
  3. 3何もしないで、ただずっと持っている場合(専門用語でHODLと言います)と比べると、今回の作戦の成績は良くありませんでした。つまり、細かく売買するよりも、持っているだけの方が結果的に良かった、ということです。

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

  1. 1Chande Momentumは価格の勢いを知るのに役立ちますが、これ一つだけで売買のタイミングを決めるのは、難しいことがあるようです。他の道具と組み合わせて使うなどの工夫が必要かもしれません。
  2. 2取引の回数が多くなると、そのたびに手数料がかかります。また、予想が外れたときの損も積み重なりやすいです。勝つ回数が少なくても、一回で大きな利益を狙うような作戦を考えるのも一つの手です。
  3. 3仮想通貨は、価格がとても大きく動くことがあります。だからこそ、「ここまで損をしたら、いったんやめる」というルール(損切り)をあらかじめ決めておくことが、大きな失敗を防ぐためにとても重要です。

リスク管理の具体的手法

取引量の決め方

一度に、持っているお金の全部を使うのではなく、ほんの一部だけを使って取引をすることです。例えば、おこづかいの1割だけを使う、と決めておけば、もし負けても大きなダメージを受けずに済みます。

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

もし損が積み重なって、持っているお金が一定の割合(例えば10%)まで減ってしまったら、それ以上損が大きくならないように、一度取引をお休みすることです。これで、冷静になる時間も作れます。

資金管理の方法

投資に使うお金と、普段の生活で使うお金は、きちんと分けて管理することが大切です。また、もし利益が出たら、その一部は使わずに取っておくなど、計画的にお金を扱うことが成功の秘訣です。

改良案の具体的提案

  • 売買の合図が出たときに、本当に今がチャンスなのかを確かめるために、他の道具(例えば、移動平均線やRSIといったもの)も一緒に見て判断する方法があります。
  • 「買われすぎ」や「売られすぎ」を決める基準の数字を、今の市場の様子に合わせて変えてみるのも、一つの工夫です。
  • 損が大きくなりすぎないように、一回の取引で失っても大丈夫な金額の上限を、あらかじめきっちり決めておくことが大切です(これをリスク管理と言います)。

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

  • いきなり大きなお金で始めるのではなく、まずは失っても大丈夫なくらいの少額で試してみて、この作戦が自分に合っているかを確認してみましょう。
  • 今回は1時間ごとの値動きで見ましたが、4時間ごとや1日ごとなど、見る時間を変えて試してみると、また違う結果が出るかもしれません。
  • 世の中のニュースや、その仮想通貨に関する新しい情報もチェックしながら、総合的に判断することが大切です。

検証の透明性と信頼性

  • データの出所: このテストの結果は、LINK/USDTの1時間ごとの価格データを使って計算したものです。
  • 検証のやり方: 過去のデータを使って、「もしこの作戦で取引していたら、どうなっていたか?」をコンピューターで試してみました(これをバックテストと言います)。期間は2024年3月2日から2025年8月25日までの約1年半です。
  • コード: このテストに使ったプログラムは、誰でも見られるように公開されています。プログラミングに興味がある人は、中身をのぞいてみるのも面白いかもしれません。
  • 注意事項: この説明は、投資をオススメするためのものではありません。「こうすれば儲かる」という話ではないので注意してください。仮想通貨の取引には、お金が減ってしまう危険が必ずあります。もし実際に取引をするときは、必ず自分でよく考えて、自分の責任で行ってください。

よくある質問

Q.Chande Momentumって、どういう意味ですか?

A.価格の「勢い」や「元気のよさ」を数字で表したものです。値段が元気に上がっているのか、それとも下がっているのかを教えてくれる便利な道具です。

Q.LINK/USDTって何ですか?

A.LINKは「Chainlink」という仮想通貨の名前です。USDTは「テザー」といって、アメリカのドルと同じくらいの価値になるように作られた、また別の仮想通貨です。LINKをUSDTで買う(または売る)ときの値段の動きを見ています。

Q.「買われすぎ」「売られすぎ」ってどういうことですか?

A.「買われすぎ」は、短い時間で値段が急に上がりすぎて、人気が集まりすぎている状態のことです。「そろそろ下がるかも?」と考える人が増えてきます。「売られすぎ」はその逆で、値段が急に下がりすぎていて、「そろそろ上がるかも?」と考える人が増えてくる状態を指します。

Q.PFが0.74って、良いのですか?悪いのですか?

A.PF(プロフィットファクター)は、全部の利益を全部の損失で割った数字です。これが1より大きいと、全体で利益が出ていることになります。1より小さいと、残念ながら損失のほうが大きかったということです。0.74は1より小さいので、今回は損のほうが大きい結果だったことを示しています。

Q.最大DDが65.47%って、どういうことですか?

A.最大DD(マックス・ドローダウン)は、お金が一番増えたときから、そのあと一番減ってしまったときまでの下落率のことです。65.47%というのは、途中で持っているお金が一時的に半分以下にまで減ってしまった瞬間があった、ということです。これは、とても大きな下落なので注意が必要です。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報