シェア:

未来の価格を予測!?特別な道具「フィッシャー変換」でリップル(XRP)の取引を試してみた結果

このレポートでは、仮想通貨リップル(XRP)を1時間ごとの値動きで取引する、「フィッシャー変換」という方法を試してみました。157日間で597回も取引した結果、どうなったのかをわかりやすく説明します。未来の価格を予測するヒントが見つかるかもしれませんよ。

取引数
597
勝率
24.12%
最終リターン
-89.24%
最大DD
89.82%

導入と前提条件

このレポートでは、仮想通貨リップル(XRP)を1時間ごとの値動きで取引する、「フィッシャー変換」という方法を試してみました。157日間で597回も取引した結果、どうなったのかをわかりやすく説明します。未来の価格を予測するヒントが見つかるかもしれませんよ。

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

  • 戦略名: Fisher Transform を使用したトレンド追従戦略
  • 対象銘柄: XRP/USDT
  • 時間足: 1h
  • 期間: 2025-03-20〜2025-08-25(157日間)
  • 初期資金: $10,000
  • 手数料・スリッページ: 0.1% / 0.1%
  • 取引所: kucoin

Fisher Transform の理論的背景

「フィッシャー変換」は、価格の動きの速さや大きさを、わかりやすい「いきおい」の数字に変える考え方です。たとえば、価格が急に上がったり下がったりすると、この「いきおい」の数字も大きく動きます。この作戦では、「いきおい」がある基準を超えたら、売ったり買ったりするサインだと考えます。これは、価格が「いきおいよく動き始めた!」という合図なんです。むずかしい計算式は使わず、価格の「いきおいの変化」に注目しています。

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

エントリー条件

  • 「いきおい」の数字が、1つ前の数字より大きくなって、でも2つ前の数字よりは小さいか同じだったとき(買うタイミング)
  • 「いきおい」の数字が、1つ前の数字より小さくなって、でも2つ前の数字よりは大きいか同じだったとき(売るタイミング)

エグジット条件

  • 「買う」のサインが出たあと、反対に「売る」のサインが出たとき(取引をやめるタイミング)
  • 「売る」のサインが出たあと、反対に「買う」のサインが出たとき(取引をやめるタイミング)

リスク管理

1回の取引で損してもいい金額を、持っているお金のほんの少しだけに決めます。たとえば、「1回の取引で損していいのは、全部のお金の2%まで」というようなルールです。こうすることで、もし取引がうまくいかなくても、すぐにお金が全部なくなってしまうのを防ぎます。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数597回
勝率24.12%
平均利益1.33%
平均損失-0.9%
期待値-0.36%
プロフィットファクター0.42
最大ドローダウン89.82%
最終リターン-89.24%
シャープレシオ-1.59
HODL(Buy&Hold)21.26%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Fisher Transform Breakout
価格を正規化したFisher変換のシグナルで判定するのだ。
"""
import pandas as pd
import numpy as np


def calculate_fisher_signals(df: pd.DataFrame, period: int = 10) -> pd.DataFrame:
    out = df.copy()
    hl2 = (out['high'] + out['low']) / 2
    min_l = hl2.rolling(period).min()
    max_h = hl2.rolling(period).max()
    
    # 範囲が0の場合を防ぐ
    x = 2 * ((hl2 - min_l) / (max_h - min_l + 0.0001) - 0.5)
    x = x.clip(-0.999, 0.999)
    
    # Fisher変換の計算
    fish = pd.Series(index=x.index, dtype=float)
    fish.iloc[0] = 0
    for i in range(1, len(x)):
        if not pd.isna(x.iloc[i]):
            fish.iloc[i] = 0.5 * np.log((1 + x.iloc[i]) / (1 - x.iloc[i] + 0.0001)) + 0.5 * (fish.iloc[i-1] if not pd.isna(fish.iloc[i-1]) else 0)
        else:
            fish.iloc[i] = fish.iloc[i-1] if i > 0 else 0
    
    trigger = fish.shift(1)
    out['fisher'] = fish
    out['trigger'] = trigger
    
    # クロスオーバーシグナル
    out['is_buy'] = (fish > trigger) & (fish.shift(1) <= trigger.shift(1)) & fish.notna() & trigger.notna()
    out['is_sell'] = (fish < trigger) & (fish.shift(1) >= trigger.shift(1)) & fish.notna() & trigger.notna()
    return out

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

  1. 1取引を続けても、だんだん損をしてしまう可能性が高かったのは、この作戦がリップル(XRP)の1時間ごとの値動きとは、相性が良くなかったからかもしれません。
  2. 2勝ったのが24%くらいと低かったのは、「いきおい」の変化を見つけようとしたけど、それが「ウソの動き」で、だまされてしまうことが多かったからだと考えられます。
  3. 3一時的に一番大きくお金が減ってしまった割合が、約90%とすごく大きかったのは、損が大きくなるのをうまく止められず、大きな損をかかえてしまったからだと言えます。

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

  1. 1どんなに良さそうな作戦でも、すべての仮想通貨や時間の区切り方でうまくいくわけではない、ということを学びました。
  2. 2勝つ確率の低さだけでなく、1回でどれくらい大きく損をする可能性があるか(最大DD)も、作戦が良いか悪いかを判断するのに、とても大事だとわかりました。
  3. 3597回も取引をしたということは、チャンスがたくさんあったはずなのに、良い結果につながりませんでした。つまり、チャンスの活かし方に問題があったと考えられます。

リスク管理の具体的手法

取引量の決め方

1回の取引で使うお金の量は、いつも持っているお金の全体のうち、決まった割合(たとえば1%)にします。こうすることで、もし損が大きくなっても、全体のお金への影響を小さくできます。

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

もし損が一定の金額(たとえば持っているお金の10%)を超えたら、その日は取引をやめる、とか、作戦自体を見直す、というルールを作ります。これで、負けが続いて大きく損するのを防ぎます。

資金管理の方法

取引に使うお金は、なくなっても生活に困らないお金だけにします。また、利益が出たら、その一部を貯金するなど、お金の使い道をちゃんと計画することが大切です。

改良案の具体的提案

  • 取引の回数をへらして、もっと「これは確実だ!」と思えるサインのときだけ取引するようにルールをきびしくすれば、勝つ確率が上がるかもしれません。
  • 損が少し出たらすぐに取引をやめる(損切り)ルールを決めたり、利益が出ているときに自動で利益を確保する(利確)機能を入れたりすることも考えられます。
  • ほかの分析道具(たとえば、みんなが見ている平均の値段の線など)と組み合わせることで、もっと正確な「買い」や「売り」のサインが見つけられるようになるかもしれません。

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

  • この作戦を試すときは、まず少ない金額から始めて、実際の値動きでどうなるかを確認してみましょう。
  • 市場の様子はいつも変わるので、ときどき作戦の成績をチェックして、必要なら設定(見る期間など)を調整することが大事です。
  • 「フィッシャー変換」の数字だけを見るのではなく、グラフ全体の形やほかの道具も参考にしながら、総合的に判断することが、もっと良い取引につながります。

検証の透明性と信頼性

  • データの出所: もとになったデータは、提供された過去のテストデータです。
  • 検証のやり方: 過去のリップル(XRP)の1時間ごとの値動きのデータ(2025-03-20から2025-08-25まで)を使って、パソコンのプログラムで試しました。
  • コード: このテストで使ったプログラムのコードは、見ることができます。
  • 注意事項: このレポートは、情報を伝えるためのもので、投資をおすすめするものではありません。実際に取引するときは、ご自身の判断と責任で行ってください。過去の良い成績が、未来も同じように良いとは限りません。

よくある質問

Q.「フィッシャー変換」って何? むずかしくない?

A.「フィッシャー変換」は、価格の動きを「いきおい」というわかりやすい数字に変える道具のことだよ。むずかしい計算は考えなくて大丈夫。「価格が今、どれだけ元気よく動いているかな?」というのを知るためのものなんだ。

Q.XRP/USDTって何?

A.XRPは「リップル」という有名な仮想通貨の名前だよ。USDTは、アメリカのドルと同じくらいの価値になるように作られた、別の仮想通貨なんだ。つまり、「リップル(XRP)をドル(USDT)で売り買いする」っていう意味だよ。

Q.1時間足ってどういう意味?

A.これは、グラフの1本の棒が「過去1時間分の値動き」を表している、ということだよ。だから、短い時間の値動きを見たいときによく使われるんだ。

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

A.これは、「平均すると、1回の取引でちょっとずつ損をしてしまう」という意味だよ。このまま取引を続けると、全体のお金が減ってしまう可能性が高い、ということなんだ。

Q.「最大DD」って、そんなに悪いの?

A.DDはドローダウンの略で、一時的にお金がどれだけ減ったかを表すんだ。「最大DD」は、その中で一番大きく減ってしまったときの割合のこと。これが大きいと、すごくハラハラするし、お金が大きく減ってしまったということだから、あまり良くない状態と言えるんだよ。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

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

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報