【残念なお知らせ】魔法の投資法のはずが…?仮想通貨ETHで「EMAリボン」を試したら大失敗した話
「EMAリボン」っていう、たくさんの線を使って値動きの方向を読む投資のやり方を試してみました。インターネット上のお金の一つ、ETH/USDTで、短い時間(5分ごと)にたくさん売り買いしたんです。でも、残念ながら結果はうまくいきませんでした。どうして失敗しちゃったのか、わかりやすく説明しますね。
導入と前提条件
「EMAリボン」っていう、たくさんの線を使って値動きの方向を読む投資のやり方を試してみました。インターネット上のお金の一つ、ETH/USDTで、短い時間(5分ごと)にたくさん売り買いしたんです。でも、残念ながら結果はうまくいきませんでした。どうして失敗しちゃったのか、わかりやすく説明しますね。
【検証】戦略のバックテスト概要
- 戦略名: EMA Ribbon を使用したトレンド追従戦略
- 対象銘柄: ETH/USDT
- 時間足: 5m
- 期間: 2024-09-23〜2025-08-25(335日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: binance
EMA Ribbon の理論的背景
このやり方は、「流れに乗る」っていう考え方が基本です。つまり、値段が上がっているときは「もっと上がるかも」と考えて買い、下がっているときは「もっと下がるかも」と考えて売ることで、もうけを狙います。「EMAリボン」では、線がきれいに並んだときを「はっきりした流れが来た!」と判断します。そして、一番上の線を値段が超えたら買い、下回ったら売る、という簡単なルールで、流れの始まりをつかまえようとするんです。
具体的な売買ルール(今回の検証)
エントリー条件
- たくさんの線が、上から下へきれいに並んでいて、値段が一番上の線をピョンと超えたとき(買うチャンス!です)
- たくさんの線が、下から上へきれいに並んでいて、値段が一番上の線を下回ったとき(売るチャンス!です)
エグジット条件
- 「買っている」状態で、値段が下がり始めて、一番上の線を下回っちゃったとき(ここでやめておこう、という合図です)
- 「売っている」状態で、値段が上がり始めて、一番上の線を上回っちゃったとき(ここでやめておこう、という合図です)
リスク管理
一度にたくさんのお金を使うのはやめましょう。もし負けても大丈夫なように、少しずつ売り買いの量を調整することが大事です。あと、「これ以上損したら絶対やめる」という自分ルールを決めておくと、大きな失敗を防げますよ。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでETH/USDTのOHLCVを取得して前処理
- 『EMA Ribbon』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 1071回 |
勝率 | 22.41% |
平均利益 | 1.71% |
平均損失 | -0.89% |
期待値 | -0.31% |
プロフィットファクター | 0.43 |
最大ドローダウン | 97.01% |
最終リターン | -96.84% |
シャープレシオ | -0.36 |
HODL(Buy&Hold) | 76.48% |
HODL戦略との比較
実装コード(Python)
"""
EMA Ribbon Breakout
複数EMAの整列でトレンド判定するのだ。
"""
import pandas as pd
def _ema(s: pd.Series, n: int) -> pd.Series:
return s.ewm(span=n, adjust=False).mean()
def calculate_ema_ribbon_signals(df: pd.DataFrame, periods = (8,13,21,34)) -> pd.DataFrame:
out = df.copy()
emas = []
for p in periods:
out[f'ema_{p}'] = _ema(out['close'], p)
emas.append(out[f'ema_{p}'])
ascending = True
descending = True
for i in range(1, len(periods)):
ascending = ascending & (out[f'ema_{periods[i-1]}'] > out[f'ema_{periods[i]}'])
descending = descending & (out[f'ema_{periods[i-1]}'] < out[f'ema_{periods[i]}'])
out['is_buy'] = ascending & (out['close'] > out[f'ema_{periods[0]}'])
out['is_sell'] = descending & (out['close'] < out[f'ema_{periods[0]}'])
return out
なぜこの結果になったのか(3つの理由)
- 1今回は5分ごとという短い時間で、たくさん売り買いしました。でも、値動きの勢いがすぐに変わっちゃうので、「こっちだ!」と思ったら逆に行く、みたいな「ウソのサイン」がたくさん出てしまいました。それで、勝てる回数が少なくなっちゃったんだと思います。
- 2勝てたのは5回に1回くらい(勝率約22%)と、とても低かったです。だから、たまに勝っても、負けたときのダメージが大きくて、結局は損してしまったんだと考えられます。
- 3もし、何もしないでずっと持っているだけの「ガチホ作戦」と比べても、成績がすごく悪かったです。これは、たくさん売り買いしたことが、逆に損を大きくしてしまったということかもしれません。
この結果から学べる3つの教訓
- 1EMAリボンは、値段がどんどん上がったり下がったりしているときはうまくいくこともあります。でも、値段があまり動かず、行ったり来たりしているときは、「ウソのサイン」が出やすいんだとわかりました。
- 2短い時間で売り買いすると、チャンスは多いけど、関係ないちょっとした値動きも多くて、正しい判断が難しくなるんだなと実感しました。
- 3このやり方を続けると、長期的には損が増えていってしまう可能性が高いということがわかりました。どんなに簡単なルールでも、必ずうまくいくわけじゃないんですね。
- 4このやり方を続けると、長期的には損が増えていってしまう可能性が高いということがわかりました。どんなに簡単なルールでも、必ずうまくいくわけじゃないんですね。
リスク管理の具体的手法
取引量の決め方
1回の売り買いで使うお金は、自分が持っているお金全体の100分の1か100分の2くらいにしましょう。そうすれば、もし負けても、全体のお金への影響は小さいです。
損失が大きくなったときの対処法
もし、損した金額が持っているお金の10分の1とか10分の2を超えてしまったら、いったんお休みするルールを決めましょう。冷静になる時間を作ることが大切です。
資金管理の方法
もうかっているときも、損しているときも、ドキドキする気持ちに負けないでください。最初に決めたルール通りにお金を管理することが、一番大事です。欲張ったり、怖がったりしないで、落ち着いて続けましょう。
改良案の具体的提案
- 見る時間を長くしてみる(例えば1時間ごとや4時間ごと)と、もっと大きな値動きの流れをつかまえて、「ウソのサイン」を減らせるかもしれません。
- 他の道具(RSIやMACDといった分析ツール)も一緒に使って、「今が本当にチャンス!」というサインをもっと確かめる工夫が必要ですね。
- 「このくらい損したらやめる」っていう損切りのルールをもっと厳しくして、1回の失敗で失うお金を少なくすることが大切です。
実用性の向上(運用上の注意)
- EMAリボンの線の数や設定は、どの仮想通貨をやるか、どれくらいの時間で見るかによって、一番いいものが違います。いろいろ試してみることが大切ですよ。
- この作戦だけで勝負するんじゃなくて、世の中のニュースや専門家の意見とか、他の情報も参考にしながら、全部合わせて判断するのが成功への近道です。
- まずは、なくなっても大丈夫なくらいの少ないお金で試してみましょう。それで、自分にこのやり方が合っているか確かめてから、少しずつお金を増やしていくのがおすすめです。
検証の透明性と信頼性
- データの出所: このお話は、もらったデータをもとにしています。
- 検証のやり方: 昔のデータを使って、「もしこの作戦で売り買いしていたら、どうなっていたかな?」という実験(シミュレーション)をしました。
- コード: 実験には、もらったPythonというプログラムのコードを使いました。
- 注意事項: この分析は、昔のデータで試しただけなので、未来も同じようにうまくいくとは限りません。投資は、自分の判断と責任でお願いしますね。