シェア:

値段の勢いと平均線で売り買い! BNBっていう仮想通貨で挑戦した記録

この記録は、「BNB」っていう仮想通貨の5分ごとのグラフを使って、「OBV MA Crossover」っていう売り買いのルールを試した結果です。約1年半で6800回も取引したんですけど、残念ながら、思ったような良い結果にはなりませんでした。この挑戦から何が学べるか、一緒に見ていきましょう。

取引数
6800
勝率
10.76%
最終リターン
-100.00%
最大DD
100.00%

導入と前提条件

この記録は、「BNB」っていう仮想通貨の5分ごとのグラフを使って、「OBV MA Crossover」っていう売り買いのルールを試した結果です。約1年半で6800回も取引したんですけど、残念ながら、思ったような良い結果にはなりませんでした。この挑戦から何が学べるか、一緒に見ていきましょう。

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

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

OBV MA Crossover の理論的背景

「OBV」っていうのは、値段が上がった日の取引された量と、下がった日の取引された量を計算して、今の勢いを調べる道具です。値段が上がった日はその分を足して、下がった日は引く、ということを繰り返します。こうすると、買いの勢いが強いのか、売りの勢いが強いのかが見えてきます。このOBVの線と、その平均の線が交わったタイミングを、売り買いの合図にするのがこの作戦の考え方です。OBVが平均の線を上回ったら「買う人が増えてきたぞ!」、下回ったら「売る人が増えてきたぞ!」と判断するんです。

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

エントリー条件

  • OBVの線が、平均の線を下から上に追い越したとき(よし、買おう!という合図)
  • OBVの線が、平均の線を上から下に追い越したとき(よし、売ろう!という合図)

エグジット条件

  • 買っているときに、OBVの線が平均の線を下回ったとき(取引をやめる合図)
  • 売っているときに、OBVの線が平均の線を上回ったとき(取引をやめる合図)
  • もうけが出ているときに、決めておいた金額までもうかったとき(取引をやめる合図)
  • 損しているときに、決めておいた金額まで損しちゃったとき(取引をやめる合図)

リスク管理

今回は、たくさん取引したのに勝てたのが10回に1回くらいだったので、全体として損が大きくなってしまいました。損を大きくしないためには、1回の取引で失うお金を少なくしたり、「損切り」っていう「これ以上損が大きくならないように、あきらめて取引をやめる」ルールをちゃんと守ることが大切です。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数6800回
勝率10.76%
平均利益0.6%
平均損失-0.52%
期待値-0.4%
プロフィットファクター0.08
最大ドローダウン100%
最終リターン-100%
シャープレシオ-2.49
HODL(Buy&Hold)48.67%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
OBV MA Crossover
OBVとそのSMAのクロスで判定するのだ。
"""
import pandas as pd


def _obv(df: pd.DataFrame) -> pd.Series:
    direction = df['close'].diff().apply(lambda x: 1 if x > 0 else (-1 if x < 0 else 0))
    return (direction * df['volume']).cumsum()


def calculate_obv_ma_signals(df: pd.DataFrame, ma_period: int = 20) -> pd.DataFrame:
    out = df.copy()
    out['obv'] = _obv(out)
    out['obv_ma'] = out['obv'].rolling(ma_period).mean()
    prev = (out['obv'] - out['obv_ma']).shift(1)
    now = out['obv'] - out['obv_ma']
    out['is_buy'] = (now > 0) & (prev <= 0)
    out['is_sell'] = (now < 0) & (prev >= 0)
    return out

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

  1. 1取引の回数が6800回とすごく多いのに、勝てたのは10回に1回くらいでした。だから、ほとんどの取引で少しずつ損が積み重なってしまいました。
  2. 2「期待値」っていう、1回の取引でどれくらいもうかるかの平均がマイナスでした。つまり、やればやるほど損をする可能性が高い作戦だったということです。
  3. 3「最大DD」っていう、一番大きくお金が減った割合が100%でした。これは、最初に持っていたお金が全部なくなってしまうほど、大きな損をしたことがある、ということです。

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

  1. 1「OBV MA Crossover」みたいなシンプルなルールだけでは、うまくいくとは限らないことがわかりました。
  2. 2たくさん取引する作戦でも、勝てる確率が低いと、結局は大きく損をしてしまうことがあると学びました。
  3. 3この作戦の成績は、ただ買ってずっと持っているだけ(HODL)よりも悪かったです。つまり、何もしない方がマシだった、ということです。

リスク管理の具体的手法

取引量の決め方

1回の取引で使うお金の量を調整することです。もし損しても大丈夫なように、例えば「持っているお金の1%までしか使わない」と決めておきます。今回の結果を見ると、1回に使うお金が多すぎたのかもしれません。

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

もし損がどんどん大きくなってきたら、一度取引をお休みするなど、冷静になることが大事です。今回、お金が全部なくなるくらい損したのは、このコントロールがうまくできなかったからかもしれません。

資金管理の方法

取引に使うお金は、あらかじめ「ここまで」と決めておくことが大切です。勝っているときも負けているときも、うれしくなったり焦ったりしないで、最初に決めたルール通りにお金を管理することが重要です。

改良案の具体的提案

  • OBVの平均線を計算する期間の設定を変えてみて、もっと良い結果が出るか試してみる。
  • 他の道具(例えば、買われすぎか売られすぎかを見る「RSI」など)と組み合わせて、もっと確実なタイミングで売り買いできるようにする。
  • 値段の動きが激しいときと、おだやかなときで、作戦を使い分けることを考えてみる。

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

  • この作戦は、今回の結果を見る限り、このまま使うのは危ないです。もっと良くする必要があります。
  • たくさん取引する作戦は、毎回かかる手数料もばかになりません。その分も考えて作戦を立てる必要があります。
  • 今回テストした期間だけの結果を信じすぎないで、他の色々な期間でも試してみることが大切です。

検証の透明性と信頼性

  • データの出所: 使ったデータは、「BNB」っていう仮想通貨の5分ごとの値段の動きのデータです。
  • 検証のやり方: 取引の回数や勝てた割合などの成績データをもとにして、この作戦がうまくいったかどうかを調べています。
  • コード: このテストに使ったコンピュータのプログラムも公開されています。
  • 注意事項: これは大切な注意書きです。この記録は、昔のデータで試した結果です。だから、未来も同じようにもうかることを約束するものではありません。投資は、自分の判断と責任で行ってくださいね。

よくある質問

Q.OBVって何?

A.その仮想通貨が、今みんなにたくさん買われているのか、それとも売られているのか、その勢いを調べるための道具だよ。

Q.移動平均線って何?

A.過去の値段の平均を線で結んだグラフのことだよ。値段の大きな流れ(上がり気味か、下がり気味か)を知るのに役立つんだ。

Q.クロスってどういう意味?

A.2本の線が交わることだよ。この作戦では、OBVの線と平均の線が交わったときを「売り」や「買い」の合図にしているんだ。

Q.勝率10%ってすごく低いんじゃない?

A.その通り! 10回挑戦して1回しか勝てなかった、ということだから、かなり低い数字だね。だから、勝った時にすごく大きくもうけないと、全体の成績はマイナスになっちゃうんだ。

Q.HODLってどういう意味?

A.英語の「HOLD(持つ)」をもじった言葉で、仮想通貨などを買ったら売らないで、ずーっと持っておくことだよ。今回は、この作戦で頑張るよりも、ただ持っているだけの方が結果が良かったんだ。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報