値段の動きとズレを見て、みんなと反対の取引をしてみよう!イーサリアムの5分間の値動きで作戦を考えます
この作戦は、イーサリアムという暗号資産の5分ごとの値動きグラフを使います。値段が「いつもの平均」から大きくズレたときに、元に戻る動きをねらって取引する方法です。びよーんと伸びたゴムが、パッと元に戻る力を使うイメージですね。
導入と前提条件
この作戦は、イーサリアムという暗号資産の5分ごとの値動きグラフを使います。値段が「いつもの平均」から大きくズレたときに、元に戻る動きをねらって取引する方法です。びよーんと伸びたゴムが、パッと元に戻る力を使うイメージですね。
【検証】戦略のバックテスト概要
- 戦略名: MA Distance Z-Score を使用したトレンド追従戦略
- 対象銘柄: ETH/USDT
- 時間足: 5m
- 期間: 2024-09-05〜2025-08-25(353日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: bybit
MA Distance Z-Score の理論的背景
この作戦の基本的な考え方は、「値段は、放っておくとだいたい平均に戻りやすい」というものです。値段が急に上がりすぎたり、下がりすぎたりすると、みんな「あれ、ちょっとやりすぎかな?」と感じて、元の値段に戻そうとする力が働くことがあるんです。この作戦では、値段が平均線からどれくらい「ズレているか」をZスコアという数字で確かめます。Zスコアが「2」より大きくなったら「上がりすぎ」、マイナスの「2」より小さくなったら「下がりすぎ」と判断します。そして、その反対の取引を始めることで、もうけを狙います。
具体的な売買ルール(今回の検証)
エントリー条件
- 値段が平均線からすごく下がって、「Zスコア」という数字がマイナス2より小さくなったとき(「今が買い時かも!」と考えるタイミングです)
- 値段が平均線からすごく上がって、「Zスコア」という数字がプラス2より大きくなったとき(「今が売り時かも!」と考えるタイミングです)
エグジット条件
- 値段が平均線まで戻ってきたときや、少しもうけが出始めたときに取引をやめます。
- 時間がたってももうけが出なかったり、逆に損し始めたりしたときも取引をやめます。
リスク管理
損をなるべく小さくするために、もし予想と反対に値段が動いてしまったら、すぐに取引をやめるというルールを決めておきます。また、一度に大もうけしようとせず、小さなもうけをコツコツ積み重ねることを目指します。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでETH/USDTのOHLCVを取得して前処理
- 『MA Distance Z-Score』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 643回 |
勝率 | 50.08% |
平均利益 | 0.82% |
平均損失 | -1.6% |
期待値 | -0.39% |
プロフィットファクター | 0.52 |
最大ドローダウン | 93.24% |
最終リターン | -92.82% |
シャープレシオ | -0.23 |
HODL(Buy&Hold) | 95.51% |
HODL戦略との比較
実装コード(Python)
"""
MA Distance Z-Score Reversion
移動平均からの乖離のz-scoreで逆張りするのだ。
"""
import pandas as pd
def calculate_ma_zscore_signals(df: pd.DataFrame, ma_period: int = 20, z_period: int = 60, z_threshold: float = 2.0) -> pd.DataFrame:
out = df.copy()
ma = out['close'].rolling(ma_period).mean()
dist = (out['close'] - ma) / ma
z = (dist - dist.rolling(z_period).mean()) / dist.rolling(z_period).std()
out['zscore'] = z
out['is_buy'] = z <= -abs(z_threshold)
out['is_sell'] = z >= abs(z_threshold)
return out
なぜこの結果になったのか(3つの理由)
- 1この作戦を、過去約1年間のイーサリアムの5分ごとの値動きで試してみましたが、残念ながらうまくいきませんでした。最終的には、もとのお金が92.82%も減ってしまうという大きな損になりました。
- 2勝った割合は約50%で、勝ったり負けたりは半々くらいでした。でも、1回負けたときの損が大きすぎることが多くて、トータルでもうけを出すのが難しかったようです。
- 3一番大きく損したときには、もとのお金の約93%を失ってしまう可能性があったこともわかりました。これは、この作戦にはとても大きなリスクがあったということです。
この結果から学べる3つの教訓
- 1市場の値段は、いつも平均に戻るとは限らない、ということを学びました。ときには、一度動き出すと、そのまま同じ方向に進み続けることもあるんですね。
- 2勝つ回数が多くても、それだけではもうけは出せないことを学びました。1回あたりのもうけと損のバランスも、とても大切だということがわかりました。
- 3過去のデータでうまくいくように見えても、未来も同じ結果になるとは限らない、ということも学びました。
リスク管理の具体的手法
取引量の決め方
1回の取引で使うお金は、持っているお金全部ではなく、ほんの一部(例えば100分の1とか100分の2)だけにします。こうすることで、一度失敗しても大きな損をしないようにできます。
損失が大きくなったときの対処法
もし損が一定の金額(例えば持っているお金の10分の1)を超えたら、その日はもう取引しない、というようなルールを作ります。これで、損がどんどんふくらむのを防ぎます。
資金管理の方法
持っているお金のうち、いくらまでなら損しても大丈夫か、あらかじめ上限を決めておきます。また、もうけが出たら少しずつ使うお金を増やすなど、お金を大切に管理していきます。
改良案の具体的提案
- 「Zスコア」の基準にする数字をもっと細かく変えたり、他の道具と組み合わせたりして、もっと確実な取引のタイミングを探すように改良してみます。
- 「平均線」や「Zスコア」を計算する期間を変えてみて、イーサリアムの市場にピッタリ合う設定を見つけ出します。
- みんなと反対の動きをねらうだけでなく、値段の勢いが続いているときに、その流れに乗ってもうけを出す作戦も組み合わせてみます。
実用性の向上(運用上の注意)
- この作戦はイーサリアムの5分ごとの値動きで試しましたが、市場の様子が変われば結果も大きく変わることがあります。実際のお金で試す前に、過去のデータでたくさん練習してみましょう。
- 「Zスコア」の数字が基準をちょっと超えただけですぐに取引するのではなく、他の分析道具も見て、もっと「これはいける!」と思えるタイミングで取引するようにしましょう。
- この作戦の成績は良くありませんでしたが、基本的な考え方(平均からのズレを見る)は、他の作戦にも応用できるかもしれません。いろいろな方法を試してみることが大切です。
検証の透明性と信頼性
- データの出所: この説明は、もらったデータをもとに作っています。
- 検証のやり方: 過去のデータ(2024年9月5日から2025年8月25日までのイーサリアムの5分ごとの値動き)を使って、この作戦の成績を計算しました。
- コード: この作戦をコンピューターで動かすためのプログラムはあります。
- 注意事項: この作戦は昔のデータにもとづいているので、将来も同じようにもうかることを約束するものではありません。投資は、自分でよく考えて、自分の責任で行ってくださいね。