ビットコインの値段は上がりすぎ?下がりすぎ? AIが売買のヒントを教えてくれる作戦
「ビットコイン、いつ買ったらいいんだろう?」「いつ売るのが正解?」なんて、迷っていませんか?ここで紹介するのは、AIがあなたに代わって「今は値段が下がりすぎだから買い時かも」「上がりすぎだから売り時かも」と判断してくれる、一つの作戦です。この作戦の仕組みをのぞいてみましょう。
導入と前提条件
「ビットコイン、いつ買ったらいいんだろう?」「いつ売るのが正解?」なんて、迷っていませんか?ここで紹介するのは、AIがあなたに代わって「今は値段が下がりすぎだから買い時かも」「上がりすぎだから売り時かも」と判断してくれる、一つの作戦です。この作戦の仕組みをのぞいてみましょう。
【検証】戦略のバックテスト概要
- 戦略名: Kairi Relative Index を使用したトレンド追従戦略
- 対象銘柄: BTC/USDT
- 時間足: 1h
- 期間: 2025-04-28〜2025-08-26(119日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: binance
Kairi Relative Index の理論的背景
物の値段は、急に上がったり下がったりすることがありますよね。ビットコインも同じで、急に値段が下がって「売られすぎ」になったり、逆に急に上がって「買われすぎ」になったりします。こういう時、多くの人は焦って売ったり、乗り遅れまいと買ったりしがちです。でもこの作戦では、その逆を狙います。みんなが売っている時に「そろそろ元に戻るかも」と考えて買い、みんなが買っている時に「そろそろ下がるかも」と考えて売るのです。これは、伸ばしたゴムが元に戻ろうとするのに似ています。
具体的な売買ルール(今回の検証)
エントリー条件
- ビットコインの値段が、これまでの平均的な値段よりも、大きく下がり「売られすぎ」の状態になったら、買うことを考えます。
- 「乖離率(かいりりつ)」という数字が、あらかじめ決めておいた「売られすぎ」のラインよりも下になったら、買うサインです。
エグジット条件
- 逆に、ビットコインの値段が平均よりも大きく上がり「買われすぎ」の状態になったら、売って利益を自分のものにするタイミングです。
- 「乖離率」の数字が、決めておいた「買われすぎ」のラインを上回ったら、売るサインです。
リスク管理
もし、予想とは反対に値段が動いて損が出そうになっても、被害を大きくしないためのルールも決めておきます。たとえば、「これ以上損したら、今回はあきらめて取引をやめる」というラインを決めておくんです。こうすることで、大失敗を防ぐことができます。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『Kairi Relative Index』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 17回 |
勝率 | 58.82% |
平均利益 | 1.35% |
平均損失 | -2.53% |
期待値 | -0.25% |
プロフィットファクター | 0.76 |
最大ドローダウン | 14.41% |
最終リターン | -4.35% |
シャープレシオ | -0.07 |
HODL(Buy&Hold) | 16.67% |
HODL戦略との比較
実装コード(Python)
"""
Kairi Relative Index Trading Signal
乖離率指標による逆張りトレード
"""
import pandas as pd
import numpy as np
def calculate_kairi_relative_index_signals(df: pd.DataFrame,
period: int = 14) -> pd.DataFrame:
"""
Kairi Relative Index戦略のシグナル生成
Parameters:
-----------
df : pd.DataFrame
OHLCVデータ
period : int
移動平均期間(デフォルト: 14)
Returns:
--------
pd.DataFrame
シグナルが追加されたDataFrame
"""
df = df.copy()
# SMA計算
df['sma'] = df['close'].rolling(window=period).mean()
# Kairi Relative Index
df['kri'] = ((df['close'] - df['sma']) / df['sma']) * 100
# シグナルライン
df['kri_upper'] = 0.8
df['kri_lower'] = -0.8
# シグナル初期化
df['signal'] = 0
df['is_buy'] = False
df['is_sell'] = False
position = 0
for i in range(period, len(df)):
# 買いシグナル(売られ過ぎ)
if position <= 0 and df['kri'].iloc[i] < df['kri_lower'].iloc[i]:
df.loc[df.index[i], 'is_buy'] = True
df.loc[df.index[i], 'signal'] = 1
position = 1
# 売りシグナル(買われ過ぎ)
elif position >= 0 and df['kri'].iloc[i] > df['kri_upper'].iloc[i]:
df.loc[df.index[i], 'is_sell'] = True
df.loc[df.index[i], 'signal'] = -1
position = -1
else:
df.loc[df.index[i], 'signal'] = position
df['signal'] = df['signal'].fillna(0)
return df
def get_strategy_name() -> str:
"""戦略名を返す"""
return "Kairi Relative Index"
def get_strategy_description() -> str:
"""戦略の説明を返す"""
return "乖離率指標による逆張りトレード戦略"
なぜこの結果になったのか(3つの理由)
- 1今回のテストでは、取引の回数は17回で、少し少なめでした。これは、この作戦のルールに合う「今だ!」というタイミングがあまり多くなかった、ということです。
- 2勝てた割合(勝率)は約59%で、10回やれば6回くらいは勝てていました。でも、全部の取引を合計すると、結果はマイナス4.35%の損になりました。これは、勝った時の儲けよりも、負けた時の損の方が大きかったことを意味しています。
- 3儲けと損のバランスを示すPFという数字も0.76で、1を下回っていました。これも、全体として見ると損の方が大きかったことを示しています。つまり、「小さな勝ち」は多かったけれど、「大きな負け」がそれを上回ってしまったようです。
この結果から学べる3つの教訓
- 1みんなが売っている時に買う、というような「逆張り」という方法は、うまくいくと大きな利益につながる可能性があることを学びました。
- 2でも、この「逆張り」がいつでもうまくいくわけではなく、損が大きくなってしまう危険もあることが分かりました。特に、値段がずっと上がり続けたり、下がり続けたりしている時には注意が必要です。
- 3勝つ回数が多くても、一回ごとの儲けが小さく、負けた時の損が大きいと、最終的には損してしまうことがある、ということを学びました。勝つ回数と、一回ごとの勝ち負けの大きさ、両方が大事なんですね。
リスク管理の具体的手法
取引量の決め方
一度に使うお金は、持っているお金のほんの一部だけにします。例えば、10000円持っていたら100円だけ使う、という感じです。こうすれば、もし取引がうまくいかなくても、持っているお金が急に大きく減ることはありません。
損失が大きくなったときの対処法
もし損が続いて、持っていたお金が14%以上減ってしまったら、一度取引をお休みします。そして、冷静になって作戦を考え直します。これは、大きな損が続くのを防ぐための大切なストップです。
資金管理の方法
取引に使うお金は、自分の全財産の中から「これくらいなら、なくなっても生活に困らない」という金額だけを使います。毎月のおこづかいの一部を使う、というようなイメージです。生活に必要なお金には、絶対に手をつけません。
改良案の具体的提案
- 「売られすぎ」「買われすぎ」の判断ラインを、その時のビットコインの値段の動きに合わせて自動で変えるようにすると、もっと成績が良くなるかもしれません。
- 値段がものすごい勢いで上がり続けたり、下がり続けたりしている時は、この作戦はお休みする、というルールを加えるのも良いかもしれません。
- 勝った時の儲けはできるだけ大きく、負けた時の損はできるだけ小さくするために、取引を「いつ終えるか」について、もっと上手なルールを探すことも大切です。
実用性の向上(運用上の注意)
- この作戦は、ビットコインの値段があまり大きくは動かず、行ったり来たりしているような、落ち着いている時に使いやすいかもしれません。
- もし、値段が急に上がり始めたり、下がり始めたりしたら、作戦のルール通りに動くのではなく、一度立ち止まって様子を見ることも大事です。
- この作戦の成績は、あくまで昔のデータで試した結果です。未来も同じようにうまくいくとは限りません。もし試すなら、少しずつ慣れていくのがおすすめです。
検証の透明性と信頼性
- データの出所: 使ったデータは、ビットコインが1時間ごとにいくらで取引されていたか、という記録です。
- 検証のやり方: 「もし昔、この作戦通りに取引していたら、どうなっていたかな?」という計算をしています(これをバックテストと言います)。期間は2025年4月28日から2025年8月26日までの約4ヶ月間です。
- コード: この作戦の計算方法は、誰でも見られるように公開されています。なので、気になる人は自分で同じように計算して確かめることができます。
- 注意事項: この作戦は、「こうすれば必ず儲かる」というものではありません。投資には、お金が増える可能性もあれば、減ってしまう可能性もあります。最後は、自分自身でよく考えて判断することが大切です。