シェア:

ビットコインの「勢い」と「人気」でチャンスを見つける!中学生にもわかるお金の増やし方

このお話は、ビットコインの1時間ごとの値段の動きを使った作戦です。「値段の勢い」と「取引の人気度」という2つのヒントから、いつ買うか、いつ売るかを見つける方法です。この作戦が、ある4ヶ月間でどれくらい上手くいったか、結果を見てみましょう!

取引数
17
勝率
23.53%
最終リターン
+4.13%
最大DD
10.98%

導入と前提条件

このお話は、ビットコインの1時間ごとの値段の動きを使った作戦です。「値段の勢い」と「取引の人気度」という2つのヒントから、いつ買うか、いつ売るかを見つける方法です。この作戦が、ある4ヶ月間でどれくらい上手くいったか、結果を見てみましょう!

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

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

Volume Weighted Momentum の理論的背景

この作戦の基本的な考え方は、「値段の勢い」と「取引の量」に、未来の動きのヒントが隠されている、というものです。まず「取引の量を考えた平均の値段」という特別な平均値を出します。今の値段がその特別な平均値よりどれくらい上か下かを見ることで、「値段の勢い」を数字で表します。さらに、「取引量チェック」で、今の取引の量が最近の平均より多いかを確かめます。取引が多いのは、たくさんの人が注目している証拠なので、値段の勢いが本物だと信じやすくなります。この2つの条件を組み合わせることで、もっと成功しそうなタイミングを見つけようとしています。

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

エントリー条件

  • 値段が「上がる勢い」があって、しかも取引の量が「いつもより多い」ときに『買い』のサインが出ます。
  • 値段が「下がる勢い」のときは、まだ何も持っていなければ何もしません。

エグジット条件

  • 持っているビットコインに「下がる勢い」が出てきたら、『売り』のサインです。ここで売って取引を終わりにします。
  • まだ何も持っていない状態で「上がる勢い」があっても、何もしません。

リスク管理

もし予想が外れても、大きな損をしないためのルールもあります。たとえば、資産が一時的に11%くらい減ってしまう可能性があったので、それ以上損が大きくならないように気をつけています。これは「大失敗」を防ぐための大事なブレーキのようなものです。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数17回
勝率23.53%
平均利益6.2%
平均損失-1.49%
期待値0.32%
プロフィットファクター1.19
最大ドローダウン10.98%
最終リターン4.13%
シャープレシオ0.11
HODL(Buy&Hold)9.87%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Volume Weighted Momentum Trading Signal
出来高加重モメンタム指標
"""
import pandas as pd
import numpy as np


def calculate_volume_weighted_momentum_signals(df: pd.DataFrame,
                                             period: int = 20,
                                             volume_ma: int = 50) -> pd.DataFrame:
    """
    Volume Weighted Momentum戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    period : int
        モメンタム計算期間(デフォルト: 20)
    volume_ma : int
        出来高移動平均期間(デフォルト: 50)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # 出来高加重価格
    df['vwp'] = (df['close'] * df['volume']).rolling(window=period).sum() / df['volume'].rolling(window=period).sum()
    
    # 出来高加重モメンタム
    df['vw_momentum'] = (df['close'] - df['vwp']) / df['vwp']
    
    # 出来高フィルター
    df['volume_ma'] = df['volume'].rolling(window=volume_ma).mean()
    df['volume_filter'] = df['volume'] > df['volume_ma']
    
    # シグナル初期化
    df['signal'] = 0
    df['is_buy'] = False
    df['is_sell'] = False
    
    position = 0
    
    for i in range(max(period, volume_ma), len(df)):
        # 買いシグナル
        if position <= 0 and df['vw_momentum'].iloc[i] > 0.01 and df['volume_filter'].iloc[i]:
            df.loc[df.index[i], 'is_buy'] = True
            df.loc[df.index[i], 'signal'] = 1
            position = 1
            
        # 売りシグナル
        elif position >= 0 and df['vw_momentum'].iloc[i] < -0.01:
            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



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

  1. 1値段の勢いだけでなく、「本当に人気があるか?」を取引の量でチェックしているので、一瞬だけ値段が動くような「だまし」に引っかかりにくかったのかもしれません。
  2. 2勝つ確率は24%くらいで、4回に1回くらいしか勝てません。でも、勝つときの利益が大きいため、負けた分を取り返して、全体ではプラスになったと考えられます。
  3. 3ただビットコインをずっと持っているだけの場合よりも、この作戦で買ったり売ったりしたほうが、最終的にお金が増えました。うまくタイミングを掴めたということです。

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

  1. 1値段の動きの勢いだけでなく、「どれくらいの人が参加しているか」という取引の量も見ると、もっと成功しやすいタイミングが見つかるということです。
  2. 2毎回勝てなくても大丈夫です。小さくたくさん負けても、一回大きく勝てば、トータルでプラスにできるということです。
  3. 3この作戦がいつでもうまくいくとは限りません。世の中の動きを見ながら、作戦をテストして、もっと良くしていくことが大切です。

リスク管理の具体的手法

取引量の決め方

1回の挑戦で、どれくらいの金額を使うかというお金の量の話です。もし負けても大丈夫なように、例えば「全財産の1%まで」のように、自分で上限を決めておくのが安全なやり方です。

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

この作戦を使っていると、持っているお金が一時的に最大で11%くらい減ってしまう可能性がある、ということです。もしこれ以上お金が減ってしまうようなら、一度お休みして、作戦を見直す必要があるかもしれません。

資金管理の方法

この作戦のテスト結果は「4.13%お金が増えた」というものでした。でも、実際にやるときは、なくなっても困らないお金(おこづかいの範囲など)で、少しずつ試すことがとても大切です。

改良案の具体的提案

  • 勝つ確率が低いので、「買い」や「売り」のサインが出る条件を、もう少し厳しくしたり、逆に少しゆるくしたりして、もっと良いバランスを探すことができます。
  • 一番悪かったときで、資産が約11%も減ってしまいました。これをもっと小さくするために、「ここまで損したらやめる」というルールをもっと早く設定するなどの工夫ができます。
  • この作戦が得意な場面(例:値段が大きく動いているとき)と、苦手な場面があるかもしれません。得意な場面だけで使うようにすれば、もっと成績が上がる可能性があります。

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

  • この作戦は1時間ごとの値段の動きを見ています。チャンスを逃さないように、1日に何回か値段のグラフ(チャート)をチェックすると良いですよ。
  • 「買い」のサインが出ても、すぐに飛びつかないでください。世の中で大きなニュースがないか、全体の雰囲気はどうか、なども少し気にすると、もっと良い判断ができるかもしれません。
  • いきなり大きなお金でやるのは危険です。まずはジュース1本分くらいのとても少ない金額で試して、慣れてから少しずつ金額を増やすのが安全です。

検証の透明性と信頼性

  • データの出所: このテストで使ったのは、ビットコインの1時間ごとの値段の動きの記録です。どこから取ってきた記録かは書いてありませんが、ふつうは取引所という会社が公開しているデータを使います。
  • 検証のやり方: この作戦の成績は、過去のデータを使って「もしこの作戦をあの時にやっていたらどうなっていたか?」をコンピューターで試してみて(シミュレーション)、計算したものです。
  • コード: この作戦を計算するためのプログラム(Pythonコード)も公開されています。プログラミングに興味があれば、自分で動かしたり、もっと良くしたりすることもできますよ。
  • 注意事項: これは、あくまで昔のデータで試した結果です。「未来も絶対に儲かりますよ」というお約束ではありません。お金を増やす挑戦には、損をする可能性もあります。やるときは、自分でよく考えて、自分の責任で行ってくださいね。

よくある質問

Q.「出来高加重モメンタム」って、結局どういう意味?

A.簡単に言うと、「値段が動く勢い」と、その動きが「どれだけ人気があるか(取引の量)」を両方チェックして、チャンスを見つける作戦のことです。勢いがあって、みんなが注目しているときが狙い目なんです。

Q.「勝率23.53%」って、ほとんど負けてるってこと?

A.その通り!4回やって3回は負けてしまう計算です。でも、1回勝つときに大きく利益を出して、負けたときの小さな損を全部取り返すことを目指す作戦なので、トータルではプラスになることがあるんです。

Q.「PF:1.19」って、いいことなの?

A.「PF」は、利益と損失のバランスを見る成績表のようなものです。これが1より大きいと、「損した金額よりも、儲かった金額のほうが多い」ということ。1.19は、100円損したけど119円儲かった、みたいなイメージで、なかなか良い成績と言えます。

Q.「最大DD:10.98%」って、どれくらい損する可能性があるの?

A.これは、この作戦で一番調子が悪かった時に、お金が一時的に最大で約11%減ってしまった、という意味です。だから、投資するお金は、これくらい減っても大丈夫な範囲で考える必要があります。

Q.この戦略は、ビットコイン以外でも使えるの?

A.この作戦の考え方自体は、値段と取引の量があるものなら、他の仮想通貨や株などにも使えるかもしれません。でも、それぞれにクセがあるので、その商品に合わせて少しルールを調整する必要があると思います。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報