ホーム » FX自動売買基礎と応用 » 【MT5 API 応用編④】回帰分析を使ったFX市場分析

【MT5 API 応用編④】回帰分析を使ったFX市場分析


この記事では、MT5 API 応用編④として、回帰分析の基本的な考え方や計算方法、さらにFX市場における活用方法について解説します。

回帰分析とは

回帰分析とは、1つの変数が、その変動要因と考えられる他の変数から、どれくらい影響を受けているのかを分析する統計手法です。

金融データに対しても、さまざまなシーンで利用されており、システムトレーダーにとっても役に立つ分析技術となります。

ここでは、回帰分析の初歩として最もシンプルな単回帰を中心に解説していきます。

まずは、回帰分析の役割をイメージするため、具体的な例を挙げて考えていきましょう。

市場原理を定量化する

為替市場では国際的な資金の流れとして、低金利通貨が売られ、高金利通貨が買われる傾向があると言われています。

実例として、2022年の米国利上げ時には、日米金利差の拡大とともに米ドル/円レートは大きく上昇しました。

この現象には、「当時、金利が上がっていく米ドルが買われ、金利が変化しなかった日本円が売られた」という経済的な理由があったと考えることができます。

ここで、「金利差が為替市場に影響するのはわかったが、どれくらいの影響度合いなのか?」という疑問を解決するために利用するのが回帰分析です。

回帰分析では、1つの変数(米ドル/円レート)が、その変動要因と考えられる他の変数(日米金利差)から、どれくらい影響を受けているのかを解析します。

回帰分析の目的

「どちらかが上がれば、もう片方も上がる」というような連動する2つの変数を可視化すると、右肩上がりの分布を確認できます。

2つの変数を対象に回帰分析を行うと、

  • ●どれくらいの強さで連動しているのか
  • ●ノイズはどの程度あるのか
  • ●片方が変化すれば、もう片方はどれくらい変化するのか

などといった情報を調べることができます。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_01

このグラフは連動する2つの変数を青点で図示し、そこに「その変数間にある傾向に合わせた赤色の直線」を描画しています。

この赤色の線を回帰直線といいます。

グラフのように回帰直線は「データ全体の傾向」を示す直線となります。

回帰直線が「どこにあって、どれくらいの傾きになっているか」という情報から、「片方が変化すれば、もう片方はどれくらい変化するか」を調べることができるようになるのです。

2つの変数の連動度合いを数値化するという意味では、相関分析に似ているのですが、回帰分析はより詳細な分析や、高度な応用が可能になります。

次に、相関分析ではできない回帰分析の発展例を見ていきましょう。

回帰分析の発展例

回帰分析は単純にデータの傾向を直線で示すだけでなく、より複雑なデータの傾向を捉えることも可能です。

先ほどのデータの傾向を直線で示す分析を単回帰といいます。

しかし、データによっては直線で傾向を捉えることが困難な場合もあり、単回帰とは違った分析方法を採用するケースも存在します。

ここでは、回帰分析にどのような発展形があるのかを簡単に紹介します。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_02

この図は2つの変数間にアーチ上の依存関係がある例を示しています。

このようなデータを取り扱うときは、多項式回帰が適している可能性があります。

青色の線はこのデータに対して単回帰をした様子で、オレンジの線は多項式回帰による回帰線を示します。

グラフの形状を見ても、多項式回帰の方が当てはまりがいいことがわかると思います。

次に、変数が3つ以上あるデータに対する回帰分析を見ていきましょう。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_03

こちらは変数が3つあるときの回帰のイメージ図になっています。

変数が3つ以上あるデータに対して行う回帰分析は、重回帰分析が代表的です。

金利差の変化量に対して米ドル/円レートがどれくらい変化するのか、という例を先に紹介しましたが、米ドル/円レートの調査をする上で、「金利差」だけでなく「過去の米ドル/円リターン」や「ドルインデックスの変化率」といった複数の要因を考慮できるのが重回帰分析のメリットとなります。

計算方法

回帰分析では、2つの変数を目的変数説明変数に分けて考えます。

説明変数は「結果に影響を与える側の変数」で、目的変数は「説明変数によって変化すると考えられる変数」です。

例えば、「金利差の変化によって米ドル/円レートが変動する」と考える場合、

  • ●金利差→説明変数
  • ●米ドル/円レート→目的変数

となります。

グラフ上に描画される回帰直線は、以下のような数式で表されます。

yを目的変数、xを説明変数として、その関係性を数式で表したものです。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_04

αを切片といい、説明変数が0のときの目的変数の値を示します。

βを傾きといい、説明変数が1変化したときに、目的変数はいくつ変化するかを示します。

つまり、この切片(α)と傾き(β)の値を導き出すことで、回帰直線が定義できるようになるわけです。

では、それらをどのように導き出すのでしょうか?

代表的なものに、最小二乗法(OLS)があります。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_05

この計算式に当てはめて、切片(α)と傾き(β)の値を導き出すことで、データの傾向に応じた回帰直線を求められます。

この式を簡単に解説すると、各データと回帰直線の距離が最も小さくなるように切片(α)と傾き(β)の値を求める方法を表しています。

最小二乗法を使って行う単回帰をOLS回帰と呼ぶこともあります。

Pythonで回帰分析を行う方法は複数ありますが、ここではさまざまな統計モデルを扱うことができるライブラリ「statsmodels」を用います。

初めて使う場合は、事前にstatsmodelsのインストールが必要です。


pip install statsmodels

インストールが完了したら、以下のコードを実行できるようになります。


import numpy as np
import statsmodels.api as sm

# 乱数の再現性を固定
np.random.seed(42)

# 説明変数 x を作成
x = np.random.rand(100)

# 目的変数 y を作成(切片 2、傾き 3、少しノイズあり)
y = 2 + 3 * x + np.random.randn(100) * 0.2

# 切片項を追加して単回帰
X = sm.add_constant(x)
model = sm.OLS(y, X).fit()

# 切片と傾きを表示
print("Intercept:", model.params[0])
print("Slope:", model.params[1])

このコードは回帰分析の基礎的なチュートリアルとして、乱数を使ってサンプルデータを作成し、statsmodelsによってOLS回帰を実行しています。

コードを実行すると、計算結果として傾きと切片を出力します。


import matplotlib.pyplot as plt
import numpy as np

x_sorted = np.sort(x)

plt.scatter(x, y)
plt.plot(x_sorted, model.predict(sm.add_constant(x_sorted)), c='red')
plt.show()

続けてこのコードを実行することで、計算した結果を散布図と回帰直線として可視化できます。

回帰分析からわかる情報

【MT5 API 応用編④】回帰分析を使ったFX市場分析_06

この2つのデータの特性の違いを、回帰直線の形状から読み取ってみましょう。

この場合、回帰直線の傾き度合いが違うことがわかると思います。

  • ●左は傾きが小さい→説明変数の変化に対して目的変数は小さく反応する
  • ●右は傾きが大きい→説明変数の変化に対して目的変数は大きく反応する

このような特性を読み取ることができます。

では次の例を見ていきましょう。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_07

こちらの2つの違いは、ノイズの大きさです。

各データの回帰直線との距離を残差といいます。

  • ●左は全体的に残差が小さい→ノイズが少なく回帰直線がよく説明できている
  • ●右は全体的に残差が大きい→ノイズが多く左よりも不確実性が高い

このような解釈をすることができます。

残差が小さく回帰直線がデータの近くを通っているような結果を「回帰直線がよく説明できている」と表現することがありますが、どの程度の精度で説明できているかを評価するときに決定係数(R-squared)を用いることがあります。

決定係数は一部の条件を除いて、0~1の間で表されます。

  • ●決定係数が1に近い→精度よく説明できている
  • ●決定係数が0.5→目的変数のばらつきの50%を説明できている
  • ●決定係数が0に近い→目的変数のばらつきを説明できていない

このような意味になります。

調査したい対象(目的変数)と、影響しそうな要素(説明変数)を回帰分析して決定係数を確認すると、「どれくらい説明できているか、本当に影響しているのか」を調べることができるのです。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_08

この決定係数の式が意味することは、

  • ●分子:回帰式で予測しても残ったズレ
  • ●分母:平均値だけで見たときの全体のばらつき

となるので、例えば決定係数=0.8であれば、それは目的変数の変動の約80%を説明できていると考えられます。

Pythonで決定係数を出力するには、以下のコードを実行します。


print(f"R-squared: {model.rsquared:.4f}")

また、決定係数を含む多くの情報を一括で出力するには、


print(model.summary())

とサマリーを出力します。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_09

このように、さまざまな統計量が一括で出力されます。

金融データ分析への活用

ここからは金融データに対して回帰分析を行った例を紹介します。

金利差とFXリターンの分析

前述の通り、金利差と為替リターンの間には、連動しやすい経済的な理由が存在します。

では、この連動がどの程度なのかを回帰分析を用いて定量化してみましょう。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_10

グラフは、金利差として米国の10年債利回りと日本の10年債利回りの差を青で描画し、それに重ねて米ドル/円レート(赤)を表示しています。

時期にもよりますが、ある程度連動していることが見てわかります。

まず、回帰分析するために何を目的変数に、何を説明変数に設定するかを決める必要があります。

今回はトレーダーの目線で考え、「米ドル/円の月次リターンが日米金利差の月次の変化量にどれだけ影響を受けているのか」を調査します。

目的変数を米ドル/円リターン(月次)、説明変数を日米金利差の変化量(月次)として回帰分析を行います。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_11

  • ●傾き:0.048
  • ●切片:0.002
  • ●決定係数:0.173

計測する期間や条件にもよりますが、今回は上記のような結果となりました。

傾き0.048は、「金利差が1変化すると、米ドル/円リターンは4.8%(0.048)変動する」という意味であり、切片はほぼ0です。

決定係数が0.173なので、全体のばらつきの17.3%を説明できていることになります。

実際の金融データは、この結果のようにノイズが大きいことが多いですが、2つの変数がある程度連動していることは確認できました。

トレード戦略に活かすために

「米ドル/円の月次リターンが日米金利差の月次の変化量にどれだけ影響を受けているのか」を調査し、連動していることを確認しましたが、この結果を直接トレードに活かすことはできません。

そこで今度は、目的変数は米ドル/円リターン(月次)のままで、説明変数を前月の日米金利差の変化量に変更して考えます。

つまり、前月の日米金利差の変化量をシグナルにして、米ドル/円でロングやショートを仕掛ける戦略に優位性があるのかどうかを調査します。

【MT5 API 応用編④】回帰分析を使ったFX市場分析_12

  • ●傾き:0.012
  • ●切片:0.001
  • ●決定係数:0.011

先ほどの結果よりも傾向は弱まったものの、傾きが0.012(前月の金利差が1変化すると、当月の米ドル/円が1.2%変動する)となっており、わずかに連動している可能性を示唆しています。

ただし、ノイズが大きいため「偶然の結果かもしれない」という疑いを持っておくことは重要です。

この結果はノイズが大きすぎて、そのままトレード戦略にすることは難しいかもしれませんが、実際のトレードに活かすための分析を行う上では、今回のように目的変数と説明変数に時系列的なラグを与えることが有効です。

当月の米ドル/円リターンを、前月までの何かしらのデータで説明ができるのであれば、それこそがエッジになり得るのです。

【MT5 API 応用編】

本記事の執筆者:藍崎@システムトレーダー

               
本記事の執筆者:藍崎@システムトレーダー 経歴
藍崎@システムトレーダー個人投資家としてEA開発&システムトレード。
トレードに活かすためのデータサイエンス / 統計学 / 数理ファイナンス / 客観的なデータに基づくテクニカル分析 / 機械学習 / MQL5 / Python

EA(自動売買)を学びたい方へオススメコンテンツ

EA運用の注意点

OANDAではEA(自動売買)を稼働するプラットフォームMT4/MT5の基本的な使い方について、画像や動画付きで詳しく解説しています。MT4/MT5のインストールからEAの設定方法までを詳しく解説しているので、初心者の方でもスムーズにEA運用を始めることが可能です。またOANDAの口座をお持ちであれば、独自開発したオリジナルインジケーターを無料で利用することもできます。EA運用をお考えであれば、ぜひ口座開設をご検討ください。


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。

この記事をシェアする