シェア:

PPOシグナル作戦:未来の値段はわかる?仮想通貨BNBで試してみた結果

「PPOシグナル」という、過去の値動きから「これから値段がどっちに動くか」を予想しようとする作戦があります。今回は、BNBという仮想通貨を使い、5分ごとの値動きを見て、この作戦がうまくいくか試してみました。でも残念ながら、結果はうまくいきませんでした。この記事では、どうしてダメだったのか、そしてこの失敗から何を学べるのかを、わかりやすく説明しますね。

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

導入と前提条件

「PPOシグナル」という、過去の値動きから「これから値段がどっちに動くか」を予想しようとする作戦があります。今回は、BNBという仮想通貨を使い、5分ごとの値動きを見て、この作戦がうまくいくか試してみました。でも残念ながら、結果はうまくいきませんでした。この記事では、どうしてダメだったのか、そしてこの失敗から何を学べるのかを、わかりやすく説明しますね。

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

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

PPO Signal の理論的背景

この作戦の基本的な考え方は、市場の「勢い」をつかまえることです。PPOという線は、最近の値段の動きが、もっと長い目で見た時の動きと比べて、どれくらい元気があるかを示してくれます。そして、もう一本のシグナル線は、そのPPOの動きをもう少しなめらかにした線です。最近の勢いがだんだん強くなってきて、PPO線がシグナル線を追い抜いたら「これから上がるかも!」、逆に勢いが弱くなってきたら「これから下がるかも…」と考えるのが、この作戦のキホンです。

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

エントリー条件

  • PPOの線が、シグナル線を下から上に追い抜いたとき(これが「買い」の合図です)
  • 2つの線が交わったのを確認して、次の5分が始まったら買います

エグジット条件

  • PPOの線が、シグナル線を上から下に追い抜いたとき(これが「売り」の合図です)
  • 2つの線が交わったのを確認して、次の5分が始まったら取引を終わりにします

リスク管理

とても大事なのが、大きな損をしないためのルールです。例えば、「1回の取引で損してもいいのは、持っているお金全体の2%まで」と決めておきます。もし予想が外れて損が大きくなってきたら、途中で「ごめんなさい」をして、もっと損が広がらないように取引をやめる勇気も必要です。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数2830回
勝率14.38%
平均利益0.52%
平均損失-0.54%
期待値-0.39%
プロフィットファクター0.2
最大ドローダウン100%
最終リターン-100%
シャープレシオ-2.11
HODL(Buy&Hold)32.78%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
PPO Signal
PPOとシグナルのクロスで判定するのだ。
"""
import pandas as pd


def _ema(s: pd.Series, n: int) -> pd.Series:
    return s.ewm(span=n, adjust=False).mean()


def calculate_ppo_signals(df: pd.DataFrame, fast: int = 12, slow: int = 26, signal_period: int = 9) -> pd.DataFrame:
    out = df.copy()
    ema_fast = _ema(out['close'], fast)
    ema_slow = _ema(out['close'], slow)
    ppo = 100 * (ema_fast - ema_slow) / ema_slow
    signal = _ema(ppo, signal_period)
    out['ppo'] = ppo
    out['ppo_signal'] = signal
    prev = (ppo - signal).shift(1)
    now = ppo - signal
    out['is_buy'] = (now > 0) & (prev <= 0)
    out['is_sell'] = (now < 0) & (prev >= 0)
    return out

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

  1. 1作戦のサイン通りに値段が動かないことが、とても多かったみたいです。「これから上がるぞ!」というサインが出ても、実際には下がってしまう、ということがたくさんありました。だから、勝てる確率が低くなってしまったのです。
  2. 2仮想通貨の値段は、ジェットコースターみたいに急に動くことがあります。この作戦だけだと、その速い動きについていけなくて、「ダマシ」と呼ばれるニセモノのサインに、たくさん引っかかってしまったのかもしれません。
  3. 32830回も取引したのに、勝てたのはたったの14%ほどでした。小さな負けが何度も積み重なった結果、最終的には持っていたお金が全部なくなってしまうという、とても残念な結果になりました。

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

  1. 1どんなに簡単そうに見える作戦でも、いつでもうまくいくわけじゃない、ということがわかりました。時と場合によるんですね。
  2. 2勝つ回数が少なくても、一回で大きく勝てれば、全体ではプラスになることもあります。でも、今回の作戦では、勝つ回数が少ない上に、大きく勝つこともできませんでした。
  3. 3昔のデータで「この作戦はうまくいくかな?」と試してみることは、とても大事です。そして、もし悪い結果が出たら、「なんでダメだったんだろう?」と理由を考えることが、もっと大事だということを学びました。

リスク管理の具体的手法

取引量の決め方

1回の取引でリスクにさらすお金は、持っているお金全体の1%か2%くらいにしましょう。例えば1万円持っていたら、1回の取引で損しても100円か200円で済むように、買う量を調整するということです。

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

もし負けが続いて、持っているお金が1割か2割くらい減ってしまったら、一度取引をお休みします。そして、作戦が今の状況に合っているか、もう一度考え直します。これ以上損を大きくしないための大事なルールです。

資金管理の方法

「もっと儲かるかも!」とか「負けを取り返したい!」という気持ちに流されずに、最初に決めたルールをしっかり守ることが大切です。勝っている時も欲張らず、目標の金額になったらちゃんと利益を確定させる、計画的なお金の管理を心がけましょう。

改良案の具体的提案

  • このPPO作戦だけでなく、他の道具(例えば、値段の勢いを示す別のグラフなど)も一緒に使って、もっと当たりの確率が高いサインを見つけられるように工夫してみます。
  • 「これ以上損したらやめる」という損切りルールをもっと厳しくして、一回の負けで大ケガしないようにします。
  • 試す期間や、他の仮想通貨、見る時間(5分じゃなくて1時間とか)を変えてみて、この作戦がどんな時に強くて、どんな時に弱いのかをもっと調べてみます。

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

  • この作戦をいきなり本番で使うのは危ないかもしれません。まずは少ないおこづかいで試してみたり、他の作戦と組み合わせてみたりするのがおすすめです。
  • 仮想通貨の値段はすごく変わりやすいです。だから、いつもニュースなどを見て、世の中の動きに注意しておくことが大事です。もし作戦が合わなくなってきたら、やり方を変える準備もしておきましょう。
  • PF(プロフィットファクター)という成績表が0.2と、とても低かったです。これは「1円稼ぐために5円損した」という意味なので、この作戦だけで戦うのは難しそうです。もっとうまくいく別の作戦と組み合わせることを考えた方がいいかもしれません。

検証の透明性と信頼性

  • データの出所: 昔のBNBという仮想通貨の、5分ごとの値段のデータを使いました。
  • 検証のやり方: 決められた設定とルールを使って、過去のデータで「もしこの作戦を使っていたらどうなっていたか」というシミュレーションをしました。
  • コード: この作戦をコンピューターで動かすためのプログラム(Pythonコード)も、ちゃんとありますよ。
  • 注意事項: このお話は、あくまで過去のデータで試した結果です。未来も同じようにうまくいくとは限りません。お金を使うときは、自分でよく考えて、自分の責任で行ってくださいね。

よくある質問

Q.PPOシグナルって、どうやって使うの?

A.PPO線とシグナル線という2本の線が交わったときが合図です。PPO線がシグナル線を下から上に追い抜いたら「買い」、上から下に追い抜いたら「売り」、という感じです。

Q.勝率が14.38%って、すごく低いね。なぜ?

A.「買いだ!」というサインが出ても実際には値段が下がったり、「売りだ!」というサインで値段が上がったり…。サインが外れることがとても多かったからです。特に仮想通貨は値動きが気まぐれなので、ニセモノのサインがたくさん出てしまったようです。

Q.PFが0.2ってどういう意味?

A.PFは「プロフィットファクター」のことで、儲けと損のバランスを見る成績表みたいなものです。1より大きいと儲かっている証拠ですが、0.2というのは、儲かった金額よりも損した金額のほうが5倍も多かった、という意味です。つまり、大負けしてしまったということです。

Q.HODL(ホドル)って何?

A.HODL(ホドル)は、買った仮想通貨を売らずに、ずーっと持ち続けることです。今回のテストでは、この作戦を使うより、ただBNBを買って持っているだけの方が32.78%も儲かっていました。つまり、何もしない方が良かった、ということになります。

Q.この作戦で、どうすれば勝てるようになるの?

A.この作戦一つだけでは、勝つのは難しいかもしれません。他の道具(例えば、買われすぎ・売られすぎがわかるグラフなど)と組み合わせたり、「これだけ損したら絶対やめる」というルールを厳しくしたりする工夫が必要だと思います。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報