ビットコインの値段は上がる?下がる?『チャイキンオシレーター』という道具で調べてみよう!
この作戦は、ビットコインの1時間ごとの値動きグラフを見ながら、『チャイキンオシレーター』という道具を使って、いつ買っていつ売ればいいかを探す実験です。2024年7月から2025年8月までの約1年間のデータで試してみました。
導入と前提条件
この作戦は、ビットコインの1時間ごとの値動きグラフを見ながら、『チャイキンオシレーター』という道具を使って、いつ買っていつ売ればいいかを探す実験です。2024年7月から2025年8月までの約1年間のデータで試してみました。
【検証】戦略のバックテスト概要
- 戦略名: Chaikin Oscillator を使用したトレンド追従戦略
- 対象銘柄: BTC/USDT
- 時間足: 1h
- 期間: 2024-07-21〜2025-08-25(399日間)
- 初期資金: $10,000
- 手数料・スリッページ: 0.1% / 0.1%
- 取引所: binance
Chaikin Oscillator の理論的背景
この作戦は、「値段が動く勢いの向きが変わる時が、値段そのものも上がり始めたり下がり始めたりする時なんじゃないか?」という考え方が元になっています。『チャイキンオシレーター』は、まず、そのビットコインにどれくらいお金が集まっているか(人気があるか)を調べます。そして、最近のお金の集まり具合と、少し前までのお金の集まり具合を比べて、勢いの変化を見つけ出そうとします。勢いがプラスからマイナスに変わるような時に、売ったり買ったりするチャンスがあるかもしれない、と考えたわけです。
具体的な売買ルール(今回の検証)
エントリー条件
- 『チャイキンオシレーター』のメーターが、マイナスからプラスに切り替わった時(買う合図)
- メーターが真ん中のゼロの線を上回った時(買う合図)
エグジット条件
- 『チャイキンオシレーター』のメーターが、プラスからマイナスに切り替わった時(売る合図)
- メーターが真ん中のゼロの線を下回った時(売る合図)
リスク管理
大きな損をしないためのルールです。1回の取引で使うお金は、持っているお金のほんの少しだけにしておきます。もし、「これ以上損したらやめよう」と決めておいた金額まで損がふくらんだら、すぐにその取引をやめるようにします。
再現手順(HowTo)
- Python/依存(ccxt, pandas, ta)をインストール
- ccxtでBTC/USDTのOHLCVを取得して前処理
- 『Chaikin Oscillator』に必要な指標を算出(ta 等)
- 閾値・クロス条件から売買シグナルを生成
- 手数料・スリッページを加味して検証・評価
【結果】パフォーマンス
価格の推移
資産の推移
パフォーマンス指標
指標 | 値 |
---|---|
総トレード数 | 580回 |
勝率 | 21.72% |
平均利益 | 1.6% |
平均損失 | -0.98% |
期待値 | -0.42% |
プロフィットファクター | 0.47 |
最大ドローダウン | 91.89% |
最終リターン | -91.69% |
シャープレシオ | -1.02 |
HODL(Buy&Hold) | 69.13% |
HODL戦略との比較
実装コード(Python)
"""
Chaikin Oscillator Signal
ADLの短長EMA差(Chaikin Osc)でゼロクロス判定するのだ。
"""
import pandas as pd
def _adl(df: pd.DataFrame) -> pd.Series:
mfm = ((df['close'] - df['low']) - (df['high'] - df['close'])) / (df['high'] - df['low']).replace(0, 1)
mfv = mfm * df['volume']
return mfv.cumsum()
def _ema(s: pd.Series, n: int) -> pd.Series:
return s.ewm(span=n, adjust=False).mean()
def calculate_chaikin_osc_signals(df: pd.DataFrame, fast: int = 3, slow: int = 10) -> pd.DataFrame:
out = df.copy()
adl = _adl(out)
osc = _ema(adl, fast) - _ema(adl, slow)
prev = osc.shift(1)
out['is_buy'] = (osc > 0) & (prev <= 0)
out['is_sell'] = (osc < 0) & (prev >= 0)
out['chaikin_osc'] = osc
return out
なぜこの結果になったのか(3つの理由)
- 1580回も取引したのに、勝てたのは約22%だけでした。つまり、ほとんどの取引で負けてしまったようです。
- 21回の取引で平均して0.42%ずつお小遣いが減ってしまう計算でした。取引すればするほど、お金が減っていく傾向があったんです。
- 3最終的には、もとのお金が91.69%も減ってしまいました。これは、ほとんど全部のお金を失ってしまったことを意味します。
この結果から学べる3つの教訓
- 1『チャイキンオシレーター』という道具1つだけでは、ビットコインみたいに値段が激しく動くもので、うまくお金を増やすのは難しいということがわかりました。
- 2勝つ回数が少なくても、1回勝った時にすごく大きく勝てれば大丈夫なこともあります。でも、この作戦ではそれもできませんでした。
- 3昔のデータでうまくいくか試すだけでなく、今の状況に合わせて作戦をどんどん変えていくことが大事なんだと学びました。
リスク管理の具体的手法
取引量の決め方
1回の取引に使うお金は、自分が持っている全部のお金の100分の1か100分の2くらいに、少なくしておきます。
損失が大きくなったときの対処法
もし損がふくらんで、持っているお金が10%も減ってしまったら、一度全部の取引をお休みします。そして、作戦が本当にこれでいいのか、じっくり考え直します。
資金管理の方法
長く続けてお金を増やしていくためには、勝ってうれしい時も、負けてくやしい時も、気持ちに流されずに、最初に決めたルールをきちんと守ることがとても大切です。
改良案の具体的提案
- 他の道具(例えば、値段の平均を見る『移動平均線』など)と組み合わせて、もっと確かな「買い時」「売り時」の合図を見つけられるようにします。
- 『チャイキンオシレーター』の計算に使う数字(設定)を色々と変えてみて、一番うまくいく設定を見つけ出します。
- ビットコインだけじゃなくて、他のコインや会社の株みたいに、違う値動きをするものでもこの作戦が使えるか試してみます。
実用性の向上(運用上の注意)
- この作戦は、昔のデータで試しただけなので、未来も同じようにうまくいくとは限りません。注意してくださいね。
- 本当のお金で始める前に、まずはお試し用の少額のお金でやってみたり、ゲームみたいに練習できる『デモ取引』で試したりするのがおすすめです。
- 世の中のニュースや、ビットコインが今どんな状況なのかにも気を配りながら、この作戦を使うかどうかを判断するのが大事です。
検証の透明性と信頼性
- データの出所: 誰でも見られる、ビットコインの過去の1時間ごとの値段のデータを使いました。
- 検証のやり方: 指定された設定と期間で、昔のデータを使って「もしこの作戦を使っていたらどうなっていたか」というシミュレーションをしました。
- コード: このシミュレーションに使ったプログラムは公開されていて、誰でも見たり使ったりすることができます。
- 注意事項: このお話は、投資をおすすめするためのものではありません。投資には、お金が減ってしまう危険もあります。もし投資をするなら、必ず自分でよく考えて、自分の責任で行ってくださいね。