ゴールドナンピンマーチンの急変動、ボラティリティフィルターを考える
まずは暴騰、暴落がどのくらいの頻度でくるか?出現確率はどのくらいあるの?をライングラフとヒストグラムで確認します。
チャートだけ見ててもわからない部分があるので今回はPython。
Exnessの"XAUUSDm"データ分析をPythonで行います。
ボラティリティの定義はローソク足の(高値-安値)/安値の高値安値をつかってます。高値安値の変動が大きいとパーセンテージが大きくなります。
ゴールドのボラティリティの出現頻度を調べるPythonコード
import pandas as pd
import MetaTrader5 as mt5
import matplotlib.pyplot as plt
def fetch_data(symbol, timeframe, period):
rates = mt5.copy_rates_from(symbol, timeframe, pd.Timestamp.today(), period)
df = pd.DataFrame(rates)
df["time"] = pd.to_datetime(df["time"], unit="s")
df["range_percentage"] = (df["high"] - df["low"]) / df["low"] * 100
return df
# MT5への接続
if not mt5.initialize():
print("initialize() failed")
mt5.shutdown()
# シンボルと時間足の設定
symbol = "XAUUSDm"
timeframes = [mt5.TIMEFRAME_H1, mt5.TIMEFRAME_H4, mt5.TIMEFRAME_H8, mt5.TIMEFRAME_D1, mt5.TIMEFRAME_W1]
labels = ["1 Hour", "4 Hours", "8 Hours", "Daily", "Weekly"]
period = 10000
fig, axs = plt.subplots(2, len(timeframes), figsize=(20, 10))
for i, tf in enumerate(timeframes):
df = fetch_data(symbol, tf, period)
# ヒストグラムの作成
axs[0, i].hist(df["range_percentage"], bins=20)
axs[0, i].set_title(f"{labels[i]} Range Percentage Histogram")
axs[0, i].set_xlabel("Range Percentage (%)")
axs[0, i].set_ylabel("Frequency")
# ライングラフの作成
axs[1, i].plot(df["time"], df["range_percentage"])
axs[1, i].set_xlabel("Date")
axs[1, i].set_ylabel("Range Percentage (%)")
axs[1, i].set_title(f"{labels[i]} Range Percentage Line Graph")
plt.tight_layout()
plt.show()
# MT5の接続を終了
mt5.shutdown()
大きいサイズのグラフ
サイズ小さかったので今度はデカくしました。赤い線は中央値です。
import pandas as pd
import MetaTrader5 as mt5
import matplotlib.pyplot as plt
def fetch_data(symbol, timeframe, period):
rates = mt5.copy_rates_from(symbol, timeframe, pd.Timestamp.today(), period)
df = pd.DataFrame(rates)
df["time"] = pd.to_datetime(df["time"], unit="s")
df["range_percentage"] = (df["high"] - df["low"]) / df["low"] * 100
return df
# MT5への接続
if not mt5.initialize():
print("initialize() failed")
mt5.shutdown()
# シンボルと時間足の設定
symbol = "XAUUSDm"
timeframes = [mt5.TIMEFRAME_H1, mt5.TIMEFRAME_H4, mt5.TIMEFRAME_H8, mt5.TIMEFRAME_D1, mt5.TIMEFRAME_W1]
labels = ["1 Hour", "4 Hours", "8 Hours", "Daily", "Weekly"]
period = 10000
for i, tf in enumerate(timeframes):
df = fetch_data(symbol, tf, period)
fig, axs = plt.subplots(2, 1, figsize=(10, 8))
# ヒストグラムの作成
median_value = df["range_percentage"].median()
axs[0].hist(df["range_percentage"], bins=20)
axs[0].axvline(median_value, color='r', linestyle='dashed', linewidth=1)
axs[0].set_title(f"{labels[i]} Range Percentage Histogram\nMedian: {median_value:.2f}%")
axs[0].set_xlabel("Range Percentage (%)")
axs[0].set_ylabel("Frequency")
# ライングラフの作成
axs[1].plot(df["time"], df["range_percentage"])
axs[1].set_xlabel("Date")
axs[1].set_ylabel("Range Percentage (%)")
axs[1].set_title(f"{labels[i]} Range Percentage Line Graph")
plt.tight_layout()
plt.show()
# MT5の接続を終了
mt5.shutdown()
ライングラフを見るとボラティリティ自体は小さくなってきてます。
グラフの見方、読み取り方
このグラフは、特定のシンボル(この場合は "XAUUSDm")に関して、異なる時間足(1時間、4時間、8時間、日次、週次)ごとのレンジの変動率を示しています。具体的には、その時間足内での高値と安値の差を安値で割ったものに100をかけることで、変動率をパーセンテージで示しています。
ヒストグラム:
ヒストグラムは、データがどのように分布しているかを視覚的に示すためのグラフです。
このヒストグラムでは、レンジの変動率がどのように分布しているかを示しています。例えば、最も高いバーは、その範囲内の変動率が最も頻繁に発生したことを示しています。
赤い破線は中央値(データの中央に位置する値)を示しており、全ての変動率の中央に位置する値を示しています。この例では、1時間足の中央値は0.20%です。
ライングラフ:
ライングラフは、時系列データを示すためのグラフです。
このライングラフでは、特定の時間足でのレンジの変動率がどのように変わってきたかを示しています。日付が横軸、変動率が縦軸に表示されています。
グラフの上下の動きは、その時間足での価格の変動の大きさを示しています。ピークは大きな変動があり、谷は小さな変動があったことを示しています。
読み方:
ヒストグラムを見ることで、特定の変動率がどれだけ頻繁に発生しているかを知ることができます。たとえば、0.0%〜0.5%の範囲の変動率が最も頻繁に発生していることがわかります。
ライングラフを見ることで、特定の時間足における変動率が時間の経過とともにどのように変化してきたかを知ることができます。ピークや谷を特定することで、過去の大きな価格の変動を特定することができます。
このグラフを使用することで、市場のボラティリティや、特定の時間足での価格の変動の傾向を理解することができます。
中央値を狙うと2000ドルの0.2%が4ドルなので、1時間の中ではほぼ4ドル前後の値動きがあるというのがわかります。
中央値から外れる数値をなんという?
中央値から外れる数値を「外れ値」(Outlier)と呼びます。外れ値は、他のデータ点から大きく離れた、または予期しない値を指します。統計的分析において、外れ値はデータの解釈や結果の信頼性に影響を与えることがあり、適切な処理や考慮が必要となることが多いです。
あまりに変動が大きいと破綻するので、これを除外出来ればナンピンマーチンの性能アップにつながるやも。
外れ値を除外すればナンピンマーチンの性能は上がる?
「ナンピンマーチン」とは、投資やトレーディングにおける戦略の一つで、ナンピン(平均取得)とマーチンゲール法を組み合わせたものです。
ナンピン:取引で損失を出した場合、同じ銘柄を安い価格でさらに購入し、平均取得価格を下げることで、リカバリーを目指す戦略です。
マーチンゲール法:損失を出した場合、次の取引で投資金額を倍増(または増加)させることで、一回の勝ち取引で過去の損失を取り戻す戦略です。
この戦略の性能を評価する際の「外れ値」とは、市場の大きな変動や予期しない価格の動きを指すことが多いです。
外れ値を除外すれば、ナンピンマーチンの性能が上がるかどうかは、以下の点を考慮する必要があります:
短期的なパフォーマンス:外れ値を除外することで、短期的には損失のリスクを低減することができるかもしれません。したがって、戦略の性能は一時的に向上する可能性があります。
リアルな市場環境:実際の市場では、外れ値を予測または除外することは困難です。外れ値の発生は、経済ニュース、政策変更、地政学的な出来事など、多くの要因によって引き起こされる可能性があります。
リスクの蓄積:ナンピンマーチン戦略は、連続して損失を出すと、投資額が急増し、資金が尽きるリスクがあります。外れ値を除外したとしても、この基本的なリスクは変わりません。
総じて、外れ値を除外することで一時的に性能が向上する可能性はありますが、リアルな市場環境や基本的なリスクを考慮すると、それだけで戦略全体の性能が大きく向上するとは言い難いです。ナンピンマーチン戦略を使用する際は、十分なリスク管理を行い、資金管理のプランをしっかりと策定することが重要です。
ボラティリティのフィルターは何がある?
ボラティリティを測定・フィルタリングするための方法や指標はいくつか存在します。これらの指標や方法は、市場の動きの強さや変動性を捉えることを目的としています。以下は、ボラティリティのフィルターとしてよく使用される主な指標や方法の一部です:
平均真のレンジ (ATR: Average True Range)
ATRは、特定の期間における価格の変動範囲の平均を示す指標です。ATRが高いときはボラティリティが高く、ATRが低いときはボラティリティが低いと解釈されることが多いです。Bollinger Bands(ボリンジャーバンド)
ボリンジャーバンドは、移動平均線とその上下の標準偏差に基づくバンドからなります。価格がバンドの上限や下限に接近または超えると、ボラティリティが高まっていると解釈されます。ヒストリカルボラティリティ
過去の価格変動から計算されるボラティリティです。特定の期間における収益率の標準偏差として計算されることが多いです。VIX(ボラティリティ指数)
VIXは、オプション市場の予想ボラティリティを示す指標として知られています。特に、S&P 500指数オプションのインプライド・ボラティリティ(期待されるボラティリティ)を基に計算されます。移動平均の発散/収束 (MACD: Moving Average Convergence Divergence)
MACDは、2つの異なる期間の移動平均の差を示す指標です。MACDとそのシグナルラインとのクロスオーバーは、ボラティリティやトレンドの変化を示すシグナルとして利用されることがあります。Relative Strength Index (RSI)
RSIは、価格の上昇日と下降日の強さを比較する指標です。RSIが極端な値(通常、70以上または30以下)を示すと、過度なボラティリティや逆転の可能性があると解釈されることがあります。
これらの指標や方法を適切に組み合わせることで、ボラティリティの変動や市場の状態をより正確に捉えることができます。しかし、どの指標も万能ではないため、複数の情報源や分析方法を組み合わせて利用することが重要です。
ゴールドナンピンマーチンの急変動、ボラティイティフィルターを考える
ゴールド(金)の取引におけるナンピンマーチン戦略は、多くのトレーダーにとって魅力的な方法の一つとして位置づけられています。この戦略は、価格が逆行した場合に平均取得価格を下げることを目的として、新たにポジションを追加する方法です。しかし、ゴールドの価格は時に急激な変動を示すことがあり、これがナンピンマーチン戦略のリスクとなる場面も少なくありません。
そのため、ゴールドの取引においてナンピンマーチン戦略を採用する際は、ボラティリティのフィルタリングが極めて重要となります。例えば、平均真のレンジ(ATR)やボリンジャーバンドを用いて、過度なボラティリティの期間を特定し、そのような期間中はナンピンマーチン戦略の採用を避けるといった方法が考えられます。
最終的に、ゴールドの取引におけるナンピンマーチン戦略とボラティリティフィルタリングは、両者を適切に組み合わせることで、リスクを軽減しつつ効果的な取引を目指す上での鍵となる要素です。どの戦略も万能ではないため、常に市場の動向をしっかりと分析し、適切なフィルタリングを行いながら、賢明な取引判断を下すことが求められます。
次回、気が向いたらMT5でフィルターをつけてどうなるか見てみるかも。