シェア:

値動きの元気さで予想!SOL/USDTで試した作戦の結果は?

この作戦は、仮想通貨「SOL/USDT」の値動きが、どれだけムダなくまっすぐに進んでいるかを見て、いつ買っていつ売るかを決める方法です。5分ごとの短い時間で、何度も売り買いを試してみました。その結果どうなったか、わかりやすくお話ししますね。

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

導入と前提条件

この作戦は、仮想通貨「SOL/USDT」の値動きが、どれだけムダなくまっすぐに進んでいるかを見て、いつ買っていつ売るかを決める方法です。5分ごとの短い時間で、何度も売り買いを試してみました。その結果どうなったか、わかりやすくお話ししますね。

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

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

Polarized Fractal Efficiency の理論的背景

この作戦の基本的な考え方は、値動きに「ムダがないか」を調べることです。例えば、たくさんジグザグ動いても、結局元の場所からあまり進んでいなければ「ムダが多い」と考えます。逆に、少しの動きでもまっすぐ進んでいれば「ムダがない」と考えます。この「ムダのなさ」と「勢い」を見ることで、これから値段が上がりそうか、下がりそうかを見つけようとするんです。

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

エントリー条件

  • 「PFE」の点数がマイナスからプラスに変わったとき。これは、値動きが下向きから上向きに元気になった合図なので、ここで買います。
  • 「PFE」の点数が「もう下がりすぎだよ」というラインを越えたとき。これも、これからは上がりそう、という合図なので、ここで買います。

エグジット条件

  • 「PFE」の点数がプラスからマイナスに変わったとき。値動きの元気がなくなった合図なので、ここで売って利益や損を確定させます。
  • 「PFE」の点数が「もう上がりすぎだよ」というラインを下回ったとき。これからは下がりそう、という合図なので、ここで売ります。

リスク管理

もしものために、お約束を決めておくことがとても大切です。例えば、「一度に使うお金は少しだけにする」とか、「これ以上損したら、今日はもうやめる」といったルールを守ることが、大切なお金を守ることにつながります。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数7581回
勝率16.41%
平均利益0.87%
平均損失-0.65%
期待値-0.4%
プロフィットファクター0.42
最大ドローダウン100%
最終リターン-100%
シャープレシオ-1.51
HODL(Buy&Hold)34.03%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Polarized Fractal Efficiency Trading Signal Generator
価格変動の効率性を測定してトレンドを検出
"""
import pandas as pd
import numpy as np


def calculate_pfe_signals(df: pd.DataFrame,
                         period: int = 10,
                         smoothing: int = 5) -> pd.DataFrame:
    """
    Polarized Fractal Efficiency戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    period : int
        PFE計算期間(デフォルト: 10)
    smoothing : int
        平滑化期間(デフォルト: 5)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # 価格変化(直線距離)
    df['price_change'] = df['close'] - df['close'].shift(period)
    
    # 実際の価格パス(各期間の変化の合計)
    df['period_changes'] = 0.0
    for i in range(1, period + 1):
        df['period_changes'] += np.sqrt(
            (df['close'].shift(i-1) - df['close'].shift(i))**2 + 1
        )
    
    # 効率性比率
    df['efficiency'] = np.sqrt(df['price_change']**2 + period**2) / (df['period_changes'] + 0.0001)
    
    # PFE(極性を持つフラクタル効率)
    df['pfe_raw'] = np.sign(df['price_change']) * df['efficiency'] * 100
    
    # 指数移動平均でスムージング
    df['pfe'] = df['pfe_raw'].ewm(span=smoothing, adjust=False).mean()
    
    # PFEの移動平均(トレンド)
    df['pfe_ma'] = df['pfe'].rolling(window=period).mean()
    
    # PFEの標準偏差(ボラティリティ)
    df['pfe_std'] = df['pfe'].rolling(window=period).std()
    
    # ダイナミックレベル
    df['pfe_upper'] = df['pfe_std'] * 2
    df['pfe_lower'] = -df['pfe_std'] * 2
    
    # シグナル生成
    df['pfe_prev'] = df['pfe'].shift(1)
    df['is_buy'] = (
        ((df['pfe'] > 0) & (df['pfe_prev'] <= 0)) |  # ゼロラインクロス
        ((df['pfe'] > df['pfe_lower']) & (df['pfe_prev'] <= df['pfe_lower']))  # 売られ過ぎからの反発
    ) & df['pfe'].notna()
    df['is_sell'] = (
        ((df['pfe'] < 0) & (df['pfe_prev'] >= 0)) |  # ゼロラインクロス
        ((df['pfe'] < df['pfe_upper']) & (df['pfe_prev'] >= df['pfe_upper']))  # 買われ過ぎからの反落
    ) & df['pfe'].notna()
    
    # 不要カラム削除
    df.drop(['price_change', 'period_changes', 'efficiency', 'pfe_raw',
             'pfe_ma', 'pfe_std', 'pfe_upper', 'pfe_lower', 'pfe_prev'], axis=1, inplace=True, errors='ignore')
    
    return df

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

  1. 1勝てる確率が約16%と、とても低かったからです。100回売り買いしても16回くらいしか勝てず、もうけが出にくい状態でした。
  2. 2「プロフィットファクター」という成績表が0.42だったからです。これが1より小さいと、勝って得たお金より、負けて失ったお金の方が多いという意味になります。
  3. 3最終的に、用意したお金が全部なくなってしまったからです。途中、一番お金が減った時も、ぜんぶなくなるくらい大きな損が出ていました。

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

  1. 1この「PFE」という作戦は、過去のSOL/USDTの5分ごとの値動きでは、残念ながらうまくいきませんでした。
  2. 2勝つ回数が少なくても、一回で大きく勝てれば全体でプラスになることもあります。でも、この作戦ではそれも難しかったようです。
  3. 3「これはいける!」と思った作戦でも、実際に試すとダメなことがあります。だから、本当に使う前に、過去のデータで練習してみることや、損をしないためのルール作りがすごく大事だということがわかりました。

リスク管理の具体的手法

取引量の決め方

一回の売り買いで使うお金は、持っているお金のほんの少し(例えば100分の1)だけにします。こうすれば、もし負けても、大きなダメージを受けずにすみます。

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

もし損が続いて、持っているお金が1割とか2割減ってしまったら、一度お休みします。そして、作戦が今の状況に合っているか見直します。これで、もっと大きな損を防ぐことができます。

資金管理の方法

もしもうかったとしても、そのお金を全部次の売り買いに使うのはやめましょう。一部はちゃんと貯金するなど、お金の計画を立てることが大切です。

改良案の具体的提案

  • 作戦で使う数字(設定値)を色々と変えてみて、一番うまくいく組み合わせを探してみること。
  • PFEの合図だけでなく、他の作戦(例えば「移動平均線」など)と組み合わせて、もっと「ここだ!」というタイミングを見つけられるようにすること。
  • SOL/USDT以外の仮想通貨で試したり、5分ごとではなく1時間ごとなど、時間を変えて試してみること。

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

  • 今回試した結果では、この作戦はうまくいきませんでした。なので、このまま使うのは危ないかもしれません。
  • もしどうしても試してみたいなら、なくなっても大丈夫なくらいの、ほんの少しのお金で始めてみましょう。そして、実際の値動きを見ながら、作戦を調整することが大切です。
  • 世の中の状況が変わると、うまくいく作戦も変わることがあります。だから、作戦で使う数字やルールは、ときどき見直すのがおすすめです。

検証の透明性と信頼性

  • データの出所: このテストで使ったのは、「SOL/USDT」という仮想通貨の、5分ごとの実際の値動きの記録です。
  • 検証のやり方: 昔のデータを使って、「もしこの作戦で売り買いしていたらどうなっていたか?」というコンピューターでのシミュレーションをしました。
  • コード: このシミュレーションに使ったプログラムは公開されています。「Python」というプログラミングの言葉で書かれています。
  • 注意事項: この結果は、あくまで昔のデータで試したものです。これからもうまくいくとは限りません。お金を使うときは、自分でよく考えて決めてくださいね。

よくある質問

Q.PFEって何のこと?

A.値動きがどれだけ「ムダなくまっすぐ」進んでいるかを点数にしたものです。目的地まで、寄り道しないで進めたかどうかを調べている、と考えるとわかりやすいかもしれません。

Q.「勝てる確率が16%」って、すごく低いってこと?

A.はい、その通りです。100回売り買いしたら、84回は負けてしまった、ということです。勝つ回数が少ないと、1回でとても大きく勝たない限り、全体でプラスにするのは難しくなります。

Q.PFって何?0.42って成績が悪いの?

A.「プロフィットファクター」の略で、もうけと損のバランスを見る成績表みたいなものです。1より大きいと「もうけの方が多い」という意味ですが、0.42だと「損の方が大きかった」ということになり、残念ながらあまり良い成績ではありません。

Q.「最終的に-100%」って、お金がぜんぶなくなっちゃったってこと?

A.はい、その通りです。この作戦をやり続けたら、最初に用意したお金がぜんぶなくなってしまった、という悲しい結果でした。

Q.この作戦って、他の仮想通貨とかでも使えるの?

A.試すことはできますが、うまくいくとは限りません。今回はSOL/USDTの5分ごとの値動きで試しましたが、他の仮想通貨や株、または1時間ごとのような違う時間で見ると、まったく違う結果になる可能性が高いです。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報