# 【初心者向け】ドル円予想AIをPythonを使って構築してみよう！

> 当サイト【スタビジ】の本記事では、ドル円予想をするAIモデルをPythonで構築していきたいと思います！最近はかなり円安ドル高が進んでしまい、多くの人がドル円相場に興味を持っていることでしょう。そんなドル円相場を予想する簡易的なAIモデル…

- URL: https://toukei-lab.com/dollar-yen-ai
- 公開: 2025.01.22 / 更新: 2025.11.09
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、ドル円予想をするAIモデルをPythonで構築していきたいと思います！最近はかなり円安ドル高が進んでしまい、多くの人がドル円相場に興味を持っていることでしょう。そんなドル円相場を予想する簡易的なAIモデルをPythonで作っていきたいと思います！
:::

こんにちは！データサイエンティストのウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です。

最近非常に振れ幅の大きいドル円相場。

2022年の頭ごろから一気に円安ドル高が進み一時期は落ち着きを見せるもさらに上昇して一時はドル円160円を超える時期もありました。

![ドル円](/wp-content/uploads/2025/01/a02d15f37b5136e9230fa8985007ca52.jpg)

ドル円の動きによって多くのビジネスや収入が影響を受けるため、ここまでボラティリティが大きいと困りますよね・・・

僕自身も日本円とドルの収入を得ながらジョージアという国でラリを使って生活しているので、日本円とドルだけでなくラリとの為替レートも日々気にしながら生活しています。

この記事では、そんな関心の大きいドル円レートの予想AIを簡単に作っていきたいと思います。

複雑なモデルではないので予測精度は期待できません。あくまでもモデル構築の参考にしてください。

それではいってみましょう！

## ドル円の値動きをPythonで取得

まずPythonでドル円の値動きを取得していきましょう！

こちらはPythonのライブラリであるyfinanceを使えば取得できます。

なお、ここでは[Google Colab](/google-colaboratory)を利用していきますので最初からyfinanceがインストールされていますが、他の環境を使う場合はあらかじめ以下のようにpip installしておいてください。

```python
pip install yfinance
```

それでは、以下のようにコードを記述していきましょう！

```python
import pandas as pd
import matplotlib.pyplot as plt
import yfinance as yf

# データの取得
start_date = "2020-01-01"
end_date = "2025-01-01"
ticker = "JPY=X"  # Yahoo Financeのドル円ティッカー

data = yf.download(ticker, start=start_date, end=end_date)
display(data)
```

結果は以下のようになりました。

![ドル円](/wp-content/uploads/2025/01/cb64b5a2eb166104ffbd0dfe5cc27f41.jpg)

1日ごとにドル円のデータが取得されているのが分かると思います。

カラムがいくつか存在しますが、Closeが終値、Highが高値、Lowが安値、Openが始値、Volumeが出来高を表しています。

コードのtickerというのは取得対象のデータのコードを表していて、JPY=Xと入れることでYahooファイナンスのドル円データを取得することができます。

他にも株価データは各企業のティッカーコードが決まっているので、それを入力することで株価を取得できます。

株価分析に関しては以下の記事を参考にしてみてください。

<https://toukei-lab.com/python_stock>

続いて取得したドル円データを可視化していきましょう！

いくつかある指標の中から今回は終値（Close）を抽出して利用していきます。

可視化コードは以下のようになります。

```python
data = data[['Close']]
data.rename(columns={'Close': 'USD_JPY'}, inplace=True)

# ドル円の値動きを可視化
plt.figure(figsize=(12, 6))
plt.plot(data.index, data['USD_JPY'], label="USD/JPY", color="blue")
plt.title("USD/JPY Exchange Rate Movement")
plt.xlabel("Date")
plt.ylabel("Exchange Rate")
plt.legend()
plt.show()
```

結果は以下のようになりました。

![ドル円](/wp-content/uploads/2025/01/7df2d71ab6b9626e2fd642581616e43a.png)

2020年から直近までのドル円データを取得して動きを可視化することができました。

こう見ると改めて、物凄い勢いで円安ドル高が進んでいるのが分かると思います。

## 特徴量を作成しドル円の値動きを予想するAIを構築

それでは続いて特徴量を生成し、ドル円の値動きを予想するAIを構築していきましょう！

今回は、過去の値動きを元に次の日のドル円を予想するシンプルなAIを構築していきたいと思います。

それではコードを書いていきましょう！

まずは以下のようにライブラリをインポートしてください。

```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error, r2_score
import yfinance as yf
```

今回はモデルとしてはシンプルな[線形回帰モデル](/%e5%9b%9e%e5%b8%b0%e5%88%86%e6%9e%90)を使っていきます。

また評価指標としては[平均絶対誤差（MAE）](/rmse_mae_mse)と[決定係数（R2）](/r_squared)を利用していきます。

<mark>※時系列分析においてR2は高くなりやすいため補助的な指標として使うのがオススメです</mark>

そのため、それらを利用するのに必要なライブラリをあらかじめインポートしています。

続いて先ほど実行したようにデータを取得していきます。

```python
# データの取得
start_date = "2024-01-01"
end_date = "2025-01-01"
ticker = "JPY=X"  # Yahoo Financeのドル円ティッカー
data = yf.download(ticker, start=start_date, end=end_date)
data = data[['Close']]
data.rename(columns={'Close': 'USD_JPY'}, inplace=True)
```

そして、こちらのデータに対して特徴量を追加していきます。

今回はシンプルに過去5日間分のデータを特徴量として追加します。

以下のようにコードを記述しましょう！

```python
# 特徴量の作成
lags = 5
for i in range(1, lags + 1):
    data[f'lag_{i}'] = data['USD_JPY'].shift(i)
data.dropna(inplace=True)
```

このコードでは、1\~5までshiftメソッドでずらして新たな特徴量として追加しています。

そして最終的にdropnaで欠損値が発生するレコードを除去しています。

どんなデータになっているか見ておきましょう！

```python
display(data)
```

![ドル円](/wp-content/uploads/2025/01/c5984044bac00f081f7fbe2d869317b7.png)

ちゃんとカラムとしてlag_1からlag_5までが入っているのが分かると思います。

そしてこれらのデータを使ってモデル構築、予測をおこなっていきましょう！

```python
# モデルの訓練
X = data.drop('USD_JPY', axis=1)
y = data['USD_JPY']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, shuffle=False)

model = LinearRegression()
model.fit(X_train, y_train)
```

ターゲットである当日のドル円の値はyに格納し、それ以外はXに格納しています。

そしてtrain_test_splitメソッドを使ってデータを学習データとテストデータに分割しています。

test_size=0.2なのでテストデータの割合が2割になるように分割します。

そしてshuffle=Falseなのでデータをランダムに分割するのではなく前から順番に分割しています。

というのも、時系列データをランダムに分割してしまうと<mark>**「未来の知り得ない情報で学習して過去を予測する」**</mark>という、現実では起こり得ないことが起こってしまうからです。

さて、分割したデータのうち学習データを使って線形回帰モデルを構築しています。

## ドル円予想AIモデルを使って予測をしてみよう！

それでは、構築したドル円予想AIモデルを使って実際に予測をしてみましょう！

コードは以下のようになります。

```python
# 予測
predictions = model.predict(X_test)

# 結果の評価
mae = mean_absolute_error(y_test, predictions)
r2 = r2_score(y_test, predictions)
print(f"MAE: {mae:.2f}")
print(f"R2: {r2:.2f}")

# 結果の可視化
plt.figure(figsize=(12, 6))
plt.plot(y_test.index, y_test, label="Actual", color="blue")
plt.plot(y_test.index, predictions, label="Predicted", color="red")
plt.legend()
plt.title("USD/JPY Prediction")
plt.xlabel("Date")
plt.ylabel("USD/JPY Rate")
plt.show()
```

まずモデルに対してテストデータを投入し、実際に予測値を算出しています。

その上でMAEとR2を計算し[Matplotlib](/matplotlib)でグラフを描画しています。

Matplotlibの使い方については以下の記事で詳しく解説していますのでチェックしてみてください！

<https://toukei-lab.com/matplotlib>

結果は以下のようになりました！

:::box
MAE: 0.76\
R2: 0.82
:::

![ドル円](/wp-content/uploads/2025/01/ab77502079a34574164dad8d63de50e9.png)

今回

結果は、MAEが0.76なので1日の平均誤差が1以内。これは現在のボラティリティの高さの中では上手く予測できている方なのか？

## ドル円予想AI　まとめ

ここまででドル円予想AIの構築方法について見てきました。

今回構築したモデルは非常にシンプルです。

実はこのモデル、シンプルに過去5日間の平均値を予測値として出力するアルゴリズムに負けちゃってたりします（MAE：0.57、R2：0.90）。

他にもたくさんの特徴量を投入したり、外部の経済的な指標も特徴量に含めて、モデルを改良していくことで精度はよくなっていきます。

ぜひ精度改善をしてみましょう！

さらに詳しくAIやデータサイエンスの勉強がしたい！という方は当サイト「スタビジ」が提供する[スタビジアカデミー](https://toukei-lab.com/achademy/)というサービスで体系的に学ぶことが可能ですので是非参考にしてみてください！

:::box
**AIデータサイエンス特化スクール「スタアカ」**

![スタアカ（スタビジアカデミー）のトップページ](/wp-content/uploads/2026/10/achademy-top.jpg)
:::

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1,280円/月（全コースが受講し放題）<br>
プレミアムプラン：129,800円（通常149,800円・買い切り）</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>統計学・機械学習・ディープラーニングを網羅的に学ぶ<br>
生成AI（LLM・RAG・プロンプトエンジニアリング）を学ぶ<br>
SQLとPythonを組み合わせて実データを使った様々なワークを行う<br>
実践的なビジネスフレームワークを学ぶ<br>
マーケティングの実行プラン策定</td>
</tr>
</tbody>
</table>

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「[スタアカ](https://toukei-lab.com/achademy/)」！！

当メディアが運営するスクールです。

月額1,280円のライトプランで、統計学から機械学習・生成AIまで全コースが受講し放題です！

<mark>プレミアムプランでは、24時間以内の質問対応と現役データサイエンティストとの1on1（30分×4回）を実施します！</mark>

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください！

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

<mark>そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコース</mark>になっています！

Pythonが初めての人でも学べるようなカリキュラムにしておりますので是非チェックしてみてください！

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったりする盛りだくさんの内容になってます！

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定**\
**・生成AIのAPIを使ってチャットボットやAIエージェントを作る**
:::

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/" note="＼今すぐ試す／"}

他のAIも作ってみたい方は、以下の記事もチェックしてみて下さい。

:::ref
・**[Pythonを使って文章に対して感情分析をしてくれるAIを作ってみよう！](/sentiment_analysis)**\
・**[LangChain・LangGraphを使ったAIエージェントの作り方を分かりやすく解説！](/ai-agent)**\
・**[自分の声のクローンを音声AIで生成してPythonから呼び出して使う方法！](/voice_ai)**
:::