シェア:

SOL/USDTで大損?「値段の勢いをはかる作戦」の、びっくりな結果と学べること

この作戦は、「SOL/USDT」という仮想通貨を5分ごとの値動きで見ながら取引するものです。値段の勢いをはかる「相対スプレッド強度」というモノサシを使いました。でも、結果はとてもひどくて、持っていたお金のほとんどをなくしてしまいました。どうしてこうなったのか、そして、この失敗から何を学べるのかを、わかりやすく説明しますね。

取引数
2012
勝率
30.57%
最終リターン
-99.96%
最大DD
99.97%

導入と前提条件

この作戦は、「SOL/USDT」という仮想通貨を5分ごとの値動きで見ながら取引するものです。値段の勢いをはかる「相対スプレッド強度」というモノサシを使いました。でも、結果はとてもひどくて、持っていたお金のほとんどをなくしてしまいました。どうしてこうなったのか、そして、この失敗から何を学べるのかを、わかりやすく説明しますね。

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

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

Relative Spread Strength の理論的背景

この作戦の基本的な考え方は、「値段の勢いは、短い時間の動きと長い時間の動きの差ではかれる」というものです。短い時間の値段の動きが、長い時間の平均的な動きからすごく離れると、「すごく元気がいいぞ!」と考えます。そして、その元気のよさが「ふつう」の状態からどれくらい離れているかを数字(相対スプレッド強度)で表します。この数字が大きく動いたり、あるラインをこえたりしたときが、売り買いのチャンスだと考えるんです。例えば、短い時間の値段が急に上がってみんなが買いすぎると「買われすぎ」、急に下がってみんなが売りすぎると「売られすぎ」と判断して、値段が逆に戻るのをねらうイメージです。

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

エントリー条件

  • 値段の勢いをはかるモノサシが、マイナスの世界からプラスの世界に入ったとき(勢いが下向きから上向きに変わったしるしです)
  • モノサシが「売られすぎだよ!」という低いしるしから、元気よく上向きになったとき

エグジット条件

  • 値段の勢いをはかるモノサシが、プラスの世界からマイナスの世界に入ったとき(勢いが上向きから下向きに変わったしるしです)
  • モノサシが「買われすぎだよ!」という高いしるしから、元気よく下向きになったとき

リスク管理

この作戦では、残念ながら損を止めるためのハッキリしたルールが、うまく働きませんでした。取引を始めたら、どんどん損が大きくなってしまって、最後にはほとんどのお金がなくなってしまいました。損を小さくするには、もっと早く取引をやめたり、取引する金額をすごく小さくしたりする工夫が必要です。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数2012回
勝率30.57%
平均利益0.99%
平均損失-0.99%
期待値-0.38%
プロフィットファクター0.4
最大ドローダウン99.97%
最終リターン-99.96%
シャープレシオ-0.58
HODL(Buy&Hold)40.95%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Relative Spread Strength Trading Signal Generator
異なる期間の移動平均スプレッドから強度を測定
"""
import pandas as pd
import numpy as np


def calculate_rss_signals(df: pd.DataFrame,
                         fast_period: int = 10,
                         slow_period: int = 40) -> pd.DataFrame:
    """
    Relative Spread Strength戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    fast_period : int
        短期EMA期間(デフォルト: 10)
    slow_period : int
        長期EMA期間(デフォルト: 40)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # 指数移動平均
    df['ema_fast'] = df['close'].ewm(span=fast_period, adjust=False).mean()
    df['ema_slow'] = df['close'].ewm(span=slow_period, adjust=False).mean()
    
    # スプレッド
    df['spread'] = df['ema_fast'] - df['ema_slow']
    
    # スプレッドの移動平均と標準偏差
    df['spread_ma'] = df['spread'].rolling(window=slow_period).mean()
    df['spread_std'] = df['spread'].rolling(window=slow_period).std()
    
    # 相対スプレッド強度(標準化)
    df['rss'] = (df['spread'] - df['spread_ma']) / (df['spread_std'] + 0.0001)
    
    # RSSのスムージング
    df['rss_smooth'] = df['rss'].ewm(span=3, adjust=False).mean()
    
    # RSSの加速度
    df['rss_acceleration'] = df['rss_smooth'] - df['rss_smooth'].shift(1)
    
    # ダイナミックレベル
    df['rss_upper'] = 2.0
    df['rss_lower'] = -2.0
    
    # トレンド強度
    df['trend_strength'] = np.abs(df['rss_smooth'])
    
    # シグナル生成
    df['rss_prev'] = df['rss_smooth'].shift(1)
    df['is_buy'] = (
        ((df['rss_smooth'] > 0) & (df['rss_prev'] <= 0)) |  # ゼロラインクロス
        ((df['rss_smooth'] > df['rss_lower']) & (df['rss_prev'] <= df['rss_lower']) & 
         (df['rss_acceleration'] > 0))  # 売られ過ぎからの反発
    ) & df['rss_smooth'].notna()
    df['is_sell'] = (
        ((df['rss_smooth'] < 0) & (df['rss_prev'] >= 0)) |  # ゼロラインクロス
        ((df['rss_smooth'] < df['rss_upper']) & (df['rss_prev'] >= df['rss_upper']) &
         (df['rss_acceleration'] < 0))  # 買われ過ぎからの反落
    ) & df['rss_smooth'].notna()
    
    # 不要カラム削除
    df.drop(['ema_fast', 'ema_slow', 'spread', 'spread_ma', 'spread_std',
             'rss_smooth', 'rss_acceleration', 'rss_upper', 'rss_lower',
             'trend_strength', 'rss_prev'], axis=1, inplace=True, errors='ignore')
    
    return df

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

  1. 1値段の勢いをはかるモノサシの計算方法や、売り買いのタイミングを決める基準が、今回の作戦ではうまく働かなかったのかもしれません。そのせいで、ムダな取引をたくさんしてしまい、損が積み重なった可能性があります。
  2. 2調べた期間(2024年8月〜2025年8月)のSOL/USDTの値段の動きが、この作戦が「こう動くだろう」と考えていた動きとちがったのかもしれません。そのため、勝てる回数がすごく少なくなったと考えられます。
  3. 3取引の回数が2012回とすごく多いのに、勝てたのは3回に1回くらい(勝率30.57%)でした。これは、ほとんどの取引で損をしていて、その小さな損がたくさん積み重なって、最後にはマイナス99.96%という大きな損になったと考えられます。

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

  1. 1どんなに良さそうに見える作戦でも、実際に試してみると、思ったのと全然ちがう結果になることがある、ということを学びました。
  2. 2勝つ回数が少なくても、1回勝ったときにすごく大きな利益が出ればトータルでプラスになることもあります。でも、この作戦では負けが続いてしまったので、最後の結果が悪くなりました。
  3. 3「最大ドローダウン(一番大きくお金が減ったときの割合)」が99.97%と、ほぼ全部のお金を失うところでした。これは、損を小さくするためのブレーキが、全然きかなかった、ということです。とてもこわいことですね。

リスク管理の具体的手法

取引量の決め方

この作戦には、どれくらいの金額で売り買いするかを決めるハッキリしたルールがありませんでした。そのため、損がどんどんふくらんでしまったと考えられます。本当は、1回の取引で失っても大丈夫な金額(例えば、持っているお金全体の1〜2%)を決めて、その中で取引することが大切です。

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

一番大きく損したときには、お金がほぼ100%なくなってしまいました。これは、損が大きくなったときのストップが、まったくかからなかったということです。損が一定の金額をこえたら、すぐに取引をやめて、それ以上損をしないようにすることがとても重要です。

資金管理の方法

お金の管理で一番大切なのは、なくなっても生活に困らないお金で取引すること、そして1回の取引で失う金額を決めておくことです。この作戦では、それができていなかったので、ほとんど全部のお金を失うという結果になってしまいました。

改良案の具体的提案

  • 売り買いのタイミングを決める「基準の数字」を、そのときの状況に合わせて、コンピューターが自動で変えてくれる仕組みを入れると良いかもしれません。
  • 損がこれくらいになったら絶対にやめる、というもっとキビシイ「損切り」のルールを作ることが大切です。
  • この作戦がうまくいくのは、どんな値段の動きのときなのかを詳しく調べます。そして、その条件に合わないときは取引をしないようにします。

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

  • この作戦をそのままマネするのではなく、まずはとても少ない金額で試したり、過去のデータで「もしやっていたらどうなったか」をしっかり確かめたりして、本当にうまくいくのか確認しましょう。
  • 「勝つ回数」だけでなく、「1回勝ったときにもらえる利益」と「1回負けたときに失う損」のバランスも大事です。この作戦は、負けたときの損が積み重なって、結果が悪くなりました。
  • 取引の途中で、思ったよりも大きな損が出そうになったら、すぐに取引をやめる勇気も大切です。「負けました」と認めるのはつらいですが、それ以上お金を失わないための、とても重要な判断です。

検証の透明性と信頼性

  • データの出所: この説明は、もとになったデータを使って書いています。
  • 検証のやり方: もとになったデータと設定を使って、この作戦の成績を計算しました。
  • コード: この作戦を動かすためのプログラム(コード)は、見ることができます。
  • 注意事項: 昔の成績が良かったからといって、これからも同じようにうまくいくとは限りません。投資は、自分の判断と責任で行いましょう。

よくある質問

Q.この作戦は、どうしてこんなに損をしちゃったの?

A.「値段の勢いをはかるモノサシ」が、今回の作戦ではうまく働かず、たくさんの取引で少しずつ損をしてしまったからです。それに、損が大きくなりすぎないようにするブレーキも、ちゃんと動かなかったんです。

Q.「相対スプレッド強度」って、結局なあに?

A.値段の動きの「元気のよさ」をはかるモノサシみたいなものです。短い時間の値段の動きと、長い時間の平均的な動きが、どれくらいちがうかを見ています。

Q.勝率が30%くらいって、どういうこと?

A.10回取引したら、7回くらいは損をしてしまう、ということです。1回勝ったときにすごく大きな利益が出ればプラスになることもありますが、この作戦では損する取引の方が多かったようです。

Q.「最大DD」って、どういう意味?

A.「最大ドローダウン」のことで、お金が一番大きく減ってしまったときの割合のことです。この作戦では、ほぼ100%近くまでお金が減ってしまった、つまり、ほとんど全部のお金を失ってしまった、ということです。

Q.この作戦は、もう使えないの?

A.このままでは、たぶん使えません。もっとそのときの状況に合わせてルールを変えたり、損を小さくするための仕組みをしっかり作ったりしないと、また同じように大損してしまう可能性が高いです。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報