シェア:

仮想通貨の「元気度」で売り買いのチャンスを見つけよう!RVI戦略のヒミツ

この作戦では、「RVI」という特別な道具を使います。これは、仮想通貨が今どれくらい「元気」かを見るためのものです。この元気さをヒントに、いつ買って、いつ売るかのタイミングを探しました。5分ごとという、とても短い時間の値動きを見て、何度も売り買いを試してみました。

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

導入と前提条件

この作戦では、「RVI」という特別な道具を使います。これは、仮想通貨が今どれくらい「元気」かを見るためのものです。この元気さをヒントに、いつ買って、いつ売るかのタイミングを探しました。5分ごとという、とても短い時間の値動きを見て、何度も売り買いを試してみました。

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

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

Relative Vigor Index の理論的背景

この作戦の基本的な考え方は、「値動きに勢いがある時は、その後も値段が動きやすいんじゃないか?」というものです。RVIは、その日の値動きの「勢い」を数字にします。その数字をグラフの線にして、その線の平均を表すもう一本の線(これを「合図線」と呼びます)と比べます。元気さを表す線が、合図線を下から上に追い越したら「買い」の合図。逆に、上から下に追い越したら「売り」の合図、というふうに考えます。勢いが強まったり弱まったりした瞬間を見つけるんです。

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

エントリー条件

  • 元気さを表す線が、平均の線(合図線)を、下から上に追い越した時に「買います」。

エグジット条件

  • 元気さを表す線が、平均の線(合図線)を、上から下に追い越した時に「売ります」。
  • もし予想と違って損が出始めたら、決めておいた金額以上は損しないように、途中で取引をやめます(これを「損切り」と言います)。

リスク管理

一度の取引で使うお金は、持っているお金のほんの少しだけにします。こうすることで、もし失敗しても、大きな損にはなりません。もし損が出ても、決めた金額以上になったらすぐにやめるルールで、大切なお金を守ります。

再現手順(HowTo)

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

【結果】パフォーマンス

価格の推移

価格推移

資産の推移

資産推移

パフォーマンス指標

指標
総トレード数13360回
勝率17.58%
平均利益0.64%
平均損失-0.63%
期待値-0.41%
プロフィットファクター0.2
最大ドローダウン100%
最終リターン-100%
シャープレシオ-2.55
HODL(Buy&Hold)-55.12%

HODL戦略との比較

HODL戦略との比較

実装コード(Python)

strategy.py
"""
Relative Vigor Index Trading Signal Generator
価格の終値と始値の関係から市場の活力を測定
"""
import pandas as pd
import numpy as np


def calculate_rvi_signals(df: pd.DataFrame,
                         period: int = 10,
                         signal_period: int = 4) -> pd.DataFrame:
    """
    Relative Vigor Index戦略のシグナル生成
    
    Parameters:
    -----------
    df : pd.DataFrame
        OHLCVデータ
    period : int
        RVI計算期間(デフォルト: 10)
    signal_period : int
        シグナルライン期間(デフォルト: 4)
    
    Returns:
    --------
    pd.DataFrame
        シグナルが追加されたDataFrame
    """
    df = df.copy()
    
    # 価格の変動幅
    df['co'] = df['close'] - df['open']
    df['hl'] = df['high'] - df['low']
    
    # 4期間加重移動平均(分子)
    df['co_1'] = df['co'].shift(0)
    df['co_2'] = df['co'].shift(1)
    df['co_3'] = df['co'].shift(2)
    df['co_4'] = df['co'].shift(3)
    df['numerator'] = (df['co_1'] + 2*df['co_2'] + 2*df['co_3'] + df['co_4']) / 6
    
    # 4期間加重移動平均(分母)
    df['hl_1'] = df['hl'].shift(0)
    df['hl_2'] = df['hl'].shift(1)
    df['hl_3'] = df['hl'].shift(2)
    df['hl_4'] = df['hl'].shift(3)
    df['denominator'] = (df['hl_1'] + 2*df['hl_2'] + 2*df['hl_3'] + df['hl_4']) / 6
    
    # RVI計算
    df['rvi_num_sum'] = df['numerator'].rolling(window=period).sum()
    df['rvi_den_sum'] = df['denominator'].rolling(window=period).sum()
    df['rvi'] = df['rvi_num_sum'] / (df['rvi_den_sum'] + 0.0001)
    
    # シグナルライン(加重移動平均)
    df['rvi_1'] = df['rvi'].shift(0)
    df['rvi_2'] = df['rvi'].shift(1)
    df['rvi_3'] = df['rvi'].shift(2)
    df['rvi_4'] = df['rvi'].shift(3)
    df['signal'] = (df['rvi_1'] + 2*df['rvi_2'] + 2*df['rvi_3'] + df['rvi_4']) / 6
    
    # ヒストグラム
    df['histogram'] = df['rvi'] - df['signal']
    
    # シグナル生成
    df['hist_prev'] = df['histogram'].shift(1)
    df['is_buy'] = (df['histogram'] > 0) & (df['hist_prev'] <= 0) & df['histogram'].notna()
    df['is_sell'] = (df['histogram'] < 0) & (df['hist_prev'] >= 0) & df['histogram'].notna()
    
    # 不要カラム削除
    drop_cols = ['co', 'hl', 'co_1', 'co_2', 'co_3', 'co_4', 'hl_1', 'hl_2', 'hl_3', 'hl_4',
                 'numerator', 'denominator', 'rvi_num_sum', 'rvi_den_sum', 
                 'rvi_1', 'rvi_2', 'rvi_3', 'rvi_4', 'hist_prev']
    df.drop(drop_cols, axis=1, inplace=True, errors='ignore')
    
    return df

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

  1. 1この作戦があまりうまくいかなかった理由はいくつかあります。まず、勝率が約18%と低く、取引をすればするほど少しずつ損をしてしまう計算でした。これは、売り買いの合図が出ても、その通りに値段が動かないことが多かったということです。
  2. 2成績を表すPFという数字もとても低かったです。これは、儲かったお金よりも損したお金の方が5倍も多かった、という意味になります。
  3. 3そして、最終的には持っていたお金が全部なくなってしまうという結果でした。これは、この作戦をそのまま使うと、とても危険だということを示しています。

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

  1. 1RVIという道具ひとつだけで、売り買いのタイミングを決めるのは、ちょっと難しいみたいだということがわかりました。
  2. 2勝てる確率が低くても、一回でたくさん儲かればプラスになることもあります。でも、この作戦ではそれもできませんでした。
  3. 3もし、ただ仮想通貨を買って持っているだけ(これをHODLと言います)でもお金は半分くらいに減ってしまいました。でも、この作戦を使ったら全部なくなってしまったので、何もしない方がまだマシだった、ということになります。

リスク管理の具体的手法

取引量の決め方

一度の取引に使うお金の量を決めます。例えば、持っているお金の100分の1だけを使う、というルールです。こうすれば、もし負けても、失うのは少しだけで済みます。

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

もし取引で損が続いて、持っているお金が一定の割合(例えば5%)以上減ってしまったら、一度取引をストップします。こうすることで、大きなダメージを受ける前に立ち止まることができます。

資金管理の方法

持っているお金を全部一度に使わず、何回かに分けて使います。儲かったら、その一部を次の取引資金に足したり、逆に損したら、次の取引で使うお金を減らしたり。状況に合わせてお金の使い方を調整することが大切です。

改良案の具体的提案

  • RVIだけでなく、他の道具(例えば、値動きの勢いを調べるものや、値動きの大きさを調べるもの)も一緒に使って、もっと確実な「買い」や「売り」の合図を探してみるのが良さそうです。
  • 「いつ買うか」だけでなく、「いつ売って利益を確定するか」や「いつ損切りするか」のルールをもっとしっかり決めることが大切です。
  • 計算に使う数字(パラメータと言います)を色々と変えてみて、一番良い成績が出る組み合わせを探すのも一つの手です。

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

  • 今回の結果は良くなかったので、この作戦をそのまま真似するのはやめましょう。もし試すなら、改善点をしっかり考えてから、なくなってもいいくらい少ないお金で始めるのが安全です。
  • 5分ごとなど短い時間での取引は、値段の動きがとても速いです。合図が出ても、すぐに状況が変わってしまうことがあります。焦らず、冷静に判断することが大事です。
  • RVIの数字だけを信じるのではなく、グラフ全体の形や、世の中のニュースなども見ながら考えると、もっと上手に判断できるかもしれません。

検証の透明性と信頼性

  • データの出所: この実験で使ったのは、実際の仮想通貨取引所が公開している過去の値段のデータ(AVAX/USDTという通貨ペアの5分ごとの記録)です。
  • 検証のやり方: 「もし過去にこの作戦を使っていたら、どれくらい儲かったり損したりしたかな?」というのをコンピューターで計算(これをバックテストと言います)して、作戦の成績を調べました。
  • コード: この計算をするために使ったプログラム(コード)は、誰でも見られるように公開されています。
  • 注意事項: この結果は、あくまで過去のデータを使った実験の結果です。未来も同じようにうまくいくとは限りません。投資には、お金が減ってしまうリスクが必ずあります。お金を使う時は、最後は自分でよく考えて決めてくださいね。

よくある質問

Q.RVIって何?

A.仮想通貨が今どれくらい「元気」か、つまり値動きに勢いがあるかどうかを教えてくれる道具のことだよ。

Q.なぜ勝率がこんなに低いのに、わざわざ試すの?

A.勝つ回数が少なくても、一回勝った時にすごく大きく儲けることができれば、トータルではプラスになることがあるんだ。だから、試してみる価値はあるんだよ。でも、残念ながら今回の作戦ではそれも難しかったんだ。

Q.PFが0.2ってどういう意味?

A.「プロフィットファクター」のことで、作戦の成績を表す数字だよ。もし1だったら、儲けと損が同じくらい。1より大きいと儲けの方が多い。0.2っていうのは、儲かった金額の5倍も損しちゃった、っていう意味なんだ。かなり成績が悪い状態だね。

Q.最大DD100%って、全部のお金がなくなっちゃうの?

A.その通り。DDは「ドローダウン」のことで、一時的にどれくらいお金が減ったかを示すんだ。最大DD100%は、一番悪い時で、持っていたお金がゼロになってしまった可能性がある、ということ。すごく危険な状態だったことを示しているよ。

Q.この戦略は使わない方がいいの?

A.今回の実験結果を見る限り、このままのルールで使うのは、とても危険だからやめた方がいいね。でも、作戦のルールを変えたり、他の道具と組み合わせたりすれば、もっと良い作戦に生まれ変わる可能性もあるよ。

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

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

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

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

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

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

Q.HODLとの比較結果は?

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

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

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

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

A.期間中はレンジ・下落優勢と推測されます。

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

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

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

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

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

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

Q.改良の方向性は?

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

著者情報