終わりなき旅~自律神経失調症と生きる~

自立神経失調症と生きるミスチル好きの普通のサラリーマン。雑記ブログ

【XGBoost】為替を予測するプログラムを作ってみました

おわりんです。

久しぶりの投稿になります。僕は、初心者ですがプログラムを書いて何かを動かすことが好きです。今回は、機械学習を勉強したいと思って何をしようかなと思ったのですが、どうせならと思い「為替を予測するプログラム」を書いてみました。

予測モデルの作成

為替を予測するためのモデルを作成し、そのモデルを用いて、現在の為替データから将来の為替を予測するプログラムを作ることにしました。(教師あり学習)

方法は、まずネットで、為替データを入手 → そこから特徴量を作成 → 20日後の為替データをxgboostを用いて学習させた。約30年分ほどのデータを学習して作りました。詳細は、後述しますが、ここではイメージだけ伝えました。

イメージ図

アルゴリズムxgboostについて(実装に使った言語はpython)

正直、プログラム経験初心者なため、あまり理論はわかっていません。なので、アルゴリズムの説明などは他の動画や、サイトを引用させて頂きました。


www.youtube.com

www.dskomei.com

何を予測するのか(目的変数:予測したい変数のこと)※イメージ図③

今回20日先の為替(終値)を予測することをしました。

何日先を予測するかは変数にしているので、調整可能です。

ネットで為替データを入手(1970年くらい~今)※イメージ図①

・始値、高値、安値、終値

ダウンロード先(csvファイルでまとめてダウンロードできるので便利なサイトです!

https://stooq.com/q/d/?s=usdjpy&c=0

 

特徴量に抽出(説明変数:目的変数を説明することができる変数のこと)※イメージ図②

始値、高値、安値、終値のデータから特徴量を作成する。

・移動平均線(長期、中期、短期)・・・始値、高値、安値、終値で全て計算

・ボリージャーバンド・・・±2σ、10日

・RSI(長期、短期)

・曜日(月~金)

などいろいろ学習させた。移動平均の期間などは、変数にして調整可能にした。

XGBooostが作る決定木モデルをGraphvizで可視化

決定木

決定木を可視化してみました。様々な特徴量からどのように分類しているのかが見えてきます。理解は全くできませんが。。こんなこともできるのですね。python便利です。いろいろパッケージ化されているので、そこまで知識がなくてもなんとなくできてしまうようです。機械学習というものが身近になってきていると感じます。

ドル為替データと予測値比較:左    特徴量の重要度:右

このモデルがどの程度なのか、しばらく将来の実績データとともにウォッチングしてみようと思います。

予測結果(2023/12/17時点の予測)

予測した結果から、ポジションをもって一週間後に売るということを繰り返していますが、今の所、トレンドは基本あっていて、ずっと利益がでています。

まだ1か月程度なので偶然の可能性が高いと思っていますが、なんかびっくりしてます。。

 

あまりよくわからず実装して作ってみたが、どのくらいの精度がでるか、もう少し売り買いを続けてみて様子をみようと思います。将来の為替を予想できたらいいのになぁ。

直近の予測結果

予測では、ドル/円は、このまま来年に向けても円高に向けて動くようです。

※あくまでも予測なので、一切責任は問いません。

基本どの通貨でもシミュレーションできるのですがとりあえずドルで様子見してみたいと思います。

過去の予測履歴

はたしてどうなるやら。。

※23/12/22時点の予測を追加

12/22に予測したデータと実績データ

※23/12/29時点の予測を追加

12/29に予測したデータと実績データ

※24/1/12時点の予測を追加(ここからモデル改変)

ある1日の為替データと特徴量から将来を予測していたが、1日→3日分の為替データから将来(2週間後)を予測するようにモデルに変えた。

24/1/12に予測したデータと実績データ

※24/1/28時点の予測を追加

24/1/28に予測したデータと実績データ

※24/2/2時点の予測を追加

24/2/2に予測したデータと実績データ

※24/2/11時点の予測を追加

24/2/9に予測したデータと実績データ

予測では今後152円まで上がっているが、そこまで上がるのかなぁ。

今の所、週単位のトレードではおおむね予測ついてるかも。。

レバレッジ低めて投資していますが、この3カ月+で予測できています。

※24/2/16時点の予測を追加

24/2/16に予測したデータと実績データ

どんどん上がるなぁ。。

※24/2/22時点の予測を追加

24/2/22に予測したデータと実績データ

※24/3/1時点の予測を追加

24/3/1に予測したデータと実績データ

※24/3/8時点の予測を追加

24/3/8に予測したデータと実績データ

 

※24/3/19時点の予測を追加

24/3/19に予測したデータと実績データ

※24/4/26時点の予測を追加

24/4/26に予測したデータと実績データ

過去にない円安が続いてます。学習データとしても150円付近のデータは少ないので予測もあてにならない状況です。為替介入や、金利政策など外部要因に大きく振れるので純粋に数値だけでは予測は難しいと言える状況だと思います。一旦この辺でウォッチングをやめようと思います。