シェア:

みんなの気持ちを読んで仮想通貨を取引!でも、この作戦はうまくいかなかったみたい

今回は、仮想通貨「イーサリアム」の値段の動きを使って、お金を増やす作戦を考えてみました。5分ごとの値段の動きを見ながら、「みんなが今、強気かな?弱気かな?」という市場の『キモチ』を読んで、買うか売るかを決める方法です。でも、試してみたら、残念ながらうまくいきませんでした。どうして失敗しちゃったのか、一緒に見ていきましょう。

取引数
394
勝率
40.10%
最終リターン
-93.29%
最大DD
93.61%

導入と前提条件

今回は、仮想通貨「イーサリアム」の値段の動きを使って、お金を増やす作戦を考えてみました。5分ごとの値段の動きを見ながら、「みんなが今、強気かな?弱気かな?」という市場の『キモチ』を読んで、買うか売るかを決める方法です。でも、試してみたら、残念ながらうまくいきませんでした。どうして失敗しちゃったのか、一緒に見ていきましょう。

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

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

Psychological Line の理論的背景

どうやって『みんなのキモチ』を数字にするかというと、こんな感じです。例えば、過去12回の値段の動きを見て、そのうち値段が上がったのが何回あったかを数えます。もし、上がった回数がすごく多ければ(例えば9回以上とか)、みんなが「もっと上がるぞ!」と盛り上がって『買われすぎ』の状態だと考えます。逆に、上がった回数がすごく少なければ(例えば3回以下とか)、みんなが「もうダメだ…」と弱気になって『売られすぎ』の状態だと考えます。この作戦では、みんなが『買われすぎ』のときに売って、『売られすぎ』のときに買う、というルールで取引をしました。

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

エントリー条件

  • みんなのキモチが『売られすぎ』のラインより下だったけど、そこから元気を取り戻してラインを上回ったら、買う合図です。
  • もう一つの買う合図は、さっきよりも『みんなのキモチ』の数字が大きくなったときです。

エグジット条件

  • みんなのキモチが『買われすぎ』のラインより上だったけど、少し落ち着いてラインを下回ったら、売る(利益を確定する)合図です。
  • もう一つの売る合図は、さっきよりも『みんなのキモチ』の数字が小さくなったときです。

リスク管理

今回の作戦では、残念ながら損が大きくなってしまいました。大きな損をしないためには、まず「もしこれくらい損したら、きっぱり諦めてやめる!」というルール(損切り)を決めておくことが、とっても大事です。一度に大金を使わないことも大切ですよ。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数394回
勝率40.1%
平均利益1.16%
平均損失-1.86%
期待値-0.65%
プロフィットファクター0.4
最大ドローダウン93.61%
最終リターン-93.29%
シャープレシオ-0.23
HODL(Buy&Hold)85.27%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Psychological Line Trading Signal Generator
市場心理を数値化した逆張り指標
"""
import pandas as pd
import numpy as np


def calculate_psychological_signals(df: pd.DataFrame,
                                   period: int = 12,
                                   oversold: float = 25,
                                   overbought: float = 75) -> pd.DataFrame:
    """
    Psychological Line戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    period : int
        計算期間(デフォルト: 12)
    oversold : float
        売られ過ぎライン(デフォルト: 25)
    overbought : float
        買われ過ぎライン(デフォルト: 75)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # 上昇日判定
    df['up_day'] = (df['close'] > df['close'].shift(1)).astype(int)
    
    # Psychological Line(過去N日間の上昇日の割合)
    df['psy_line'] = df['up_day'].rolling(window=period).sum() / period * 100
    
    # 移動平均でスムージング
    df['psy_ma'] = df['psy_line'].rolling(window=3).mean()
    
    # ボラティリティ調整
    df['psy_std'] = df['psy_line'].rolling(window=period).std()
    df['psy_upper'] = 50 + df['psy_std']
    df['psy_lower'] = 50 - df['psy_std']
    
    # エクストリーム判定
    df['extreme_low'] = df['psy_ma'] < oversold
    df['extreme_high'] = df['psy_ma'] > overbought
    
    # シグナル生成
    df['psy_prev'] = df['psy_ma'].shift(1)
    df['is_buy'] = (
        (df['psy_ma'] > oversold) & 
        (df['psy_prev'] <= oversold) & 
        df['psy_ma'].notna()
    )
    df['is_sell'] = (
        (df['psy_ma'] < overbought) & 
        (df['psy_prev'] >= overbought) & 
        df['psy_ma'].notna()
    )
    
    # 不要カラム削除
    df.drop(['up_day', 'psy_std', 'psy_upper', 'psy_lower', 
             'extreme_low', 'extreme_high', 'psy_prev'], axis=1, inplace=True, errors='ignore')
    
    return df

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

  1. 1みんなが『売られすぎ』だから、そろそろ値段が上がるだろうと予想して買っても、実際にはもっと値段が下がり続けてしまうことが多かったです。逆も同じで、みんなの気持ちが一つの方向に動き出すと、その勢いがなかなか止まらなかったようです。
  2. 25分ごとという短い時間での取引は、値段の動きを当てるのがとても難しいです。また、何回も取引を繰り返したので、そのたびにかかる手数料が積み重なって、利益が出にくくなってしまいました。
  3. 3『みんなのキモチ』をはかるためのルール(例えば、過去12回のうち何回上がったか?とか、25%や75%という基準)が、今のイーサリアムの動きには合っていなかったのかもしれません。

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

  1. 1みんなと反対のことをする『逆張り』作戦は、みんなのキモチだけを頼りにすると、うまくいかないこともある、ということがわかりました。
  2. 25分ごとみたいな短い時間での取引は、チャンスがたくさんありそうに見えますが、その分、失敗する危険も大きいということを学びました。
  3. 3作戦がうまくいかなかったときは、「なんでダメだったんだろう?」と理由をしっかり考えて、次にもっと良い作戦を考えることが大切だとわかりました。

リスク管理の具体的手法

取引量の決め方

1回の取引で使うお金は、自分が持っているお金全部のうちの、ほんの少しだけにします。例えば、10000円持っていたら、100円とか200円だけにする、という感じです。そうすれば、もし失敗しても、大きなダメージを受けずにすみます。

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

もし、持っているお金が全部で10%以上減ってしまったら、一度全部の取引をやめます。そして、どうしてそうなったのか、作戦は間違っていなかったか、もう一度ゆっくり考え直す時間を作ります。

資金管理の方法

取引で増えたお金は、全部を次の取引に使わないようにします。一部は貯金したり、好きなものを買ったりして、もし次に失敗しても大丈夫なように備えておくことが大切です。

改良案の具体的提案

  • 『みんなのキモチ』だけでなく、値段の勢いを示すような、別の道具も一緒に使って、もっと確実なタイミングを探してみます。
  • 『買われすぎ』や『売られすぎ』を決める数字(25や75)を、そのときの状況に合わせて変えたり、コンピューターに自動で調整させたりしてみます。
  • 5分ごとではなく、1時間ごとなど、もっと長い時間で値段の動きを見てみたり、イーサリアム以外の別の仮想通貨で試してみたりします。

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

  • この作戦は、今回やってみたら残念ながらお金が減ってしまいました。なので、このままマネして使うのは、おすすめできません。
  • もし「それでも試してみたい!」と思うなら、まずはゲームみたいにお金が減らない練習用の『デモトレード』で試してみましょう。本物のお金を使うなら、なくなっても大丈夫なくらいの、ほんの少しの金額から始めるのが安全です。
  • 取引をしたら、毎回ノートにつけましょう。「今回はうまくいった!」「今回は失敗した…」と結果を書くだけでなく、「どうしてそうなったんだろう?」と理由を考えることが、上手になるためのヒミツです。

検証の透明性と信頼性

  • データの出所: この実験は、過去の仮想通貨「イーサリアム」の、5分ごとの値段のデータを使って行いました。
  • 検証のやり方: 昔の値段のデータを使って、「もしこの作戦を過去にやっていたら、どうなっていたかな?」というシミュレーション(実験)をしました。
  • コード: この実験で使ったコンピューターのプログラムは、誰でも見られるように公開しています。
  • 注意事項: この記事は、「こういう作戦を試してみたら、こうなりました」という報告です。みなさんに「これを真似してお金を増やそう!」とおすすめするものではありません。仮想通貨の取引は、値段が急に上がったり下がったりして、お金が減ってしまう危険もあります。もし取引をするときは、必ず自分でよく考えて、自分の責任で行ってくださいね。

よくある質問

Q.「みんなのキモチ」って、どうやって数字にするの?

A.例えば、過去12回のうち、値段が上がった回数を数えるんです。上がった回数が多ければ多いほど、みんなのキモチは「強気」だと考えて、数字が大きくなります。

Q.「売られ過ぎ」とか「買われ過ぎ」って、どうしてわかるの?

A.計算して出てきた『みんなのキモチ』の数字が、あらかじめ決めておいた線(例えば、75点より上なら『買われすぎ』、25点より下なら『売られすぎ』)を越えたかどうかで判断しています。

Q.この作戦で、どうして損しちゃったの?

A.一番の理由は、予想と反対に値段が動き続けてしまったことです。他にも、短い時間での取引は難易度が高かったり、手数料がかさんだりしたことも原因だと考えられます。

Q.「期待値がマイナス」ってどういうこと?

A.簡単に言うと、「この作戦を続ければ続けるほど、平均すると少しずつお金が減っていってしまう可能性が高い」という意味です。つまり、トータルで見ると損する作戦だった、ということです。

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

A.英語の「HOLD(持つ)」から来た言葉で、仮想通貨を買ったあと、値段が上がっても下がっても売らずに、ずーっと持ち続けることです。今回の実験では、この作戦でちょこちょこ売買するよりも、ただ最初に買って持っているだけの方が、結果的にお金が増えていた、ということになります。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報