おわりんです。
久しぶりの投稿になります。僕は、初心者ですがプログラムを書いて何かを動かすことが好きです。今回は、機械学習を勉強したいと思って何をしようかなと思ったのですが、どうせならと思い「為替を予測するプログラム」を書いてみました。
- 予測モデルの作成
- アルゴリズムxgboostについて(実装に使った言語はpython)
- 何を予測するのか(目的変数:予測したい変数のこと)※イメージ図③
- ネットで為替データを入手(1970年くらい~今)※イメージ図①
- 特徴量に抽出(説明変数:目的変数を説明することができる変数のこと)※イメージ図②
- XGBooostが作る決定木モデルをGraphvizで可視化
- 予測結果(2023/12/17時点の予測)
- ※23/12/22時点の予測を追加
- ※23/12/29時点の予測を追加
- ※24/1/12時点の予測を追加(ここからモデル改変)
- ※24/1/28時点の予測を追加
- ※24/2/2時点の予測を追加
- ※24/2/11時点の予測を追加
- ※24/2/16時点の予測を追加
- ※24/2/22時点の予測を追加
- ※24/3/1時点の予測を追加
- ※24/3/8時点の予測を追加
- ※24/3/19時点の予測を追加
- ※24/4/26時点の予測を追加
予測モデルの作成
為替を予測するためのモデルを作成し、そのモデルを用いて、現在の為替データから将来の為替を予測するプログラムを作ることにしました。(教師あり学習)
方法は、まずネットで、為替データを入手 → そこから特徴量を作成 → 20日後の為替データをxgboostを用いて学習させた。約30年分ほどのデータを学習して作りました。詳細は、後述しますが、ここではイメージだけ伝えました。
アルゴリズムxgboostについて(実装に使った言語はpython)
正直、プログラム経験初心者なため、あまり理論はわかっていません。なので、アルゴリズムの説明などは他の動画や、サイトを引用させて頂きました。
何を予測するのか(目的変数:予測したい変数のこと)※イメージ図③
今回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時点の予測を追加
※23/12/29時点の予測を追加
※24/1/12時点の予測を追加(ここからモデル改変)
ある1日の為替データと特徴量から将来を予測していたが、1日→3日分の為替データから将来(2週間後)を予測するようにモデルに変えた。
※24/1/28時点の予測を追加
※24/2/2時点の予測を追加
※24/2/11時点の予測を追加
予測では今後152円まで上がっているが、そこまで上がるのかなぁ。
今の所、週単位のトレードではおおむね予測ついてるかも。。
レバレッジ低めて投資していますが、この3カ月+で予測できています。
※24/2/16時点の予測を追加
どんどん上がるなぁ。。
※24/2/22時点の予測を追加
※24/3/1時点の予測を追加
※24/3/8時点の予測を追加
※24/3/19時点の予測を追加
※24/4/26時点の予測を追加
過去にない円安が続いてます。学習データとしても150円付近のデータは少ないので予測もあてにならない状況です。為替介入や、金利政策など外部要因に大きく振れるので純粋に数値だけでは予測は難しいと言える状況だと思います。一旦この辺でウォッチングをやめようと思います。