ブログ

Blog

絞り込んで表示する

2020.6.09 - 

MAGELLAN BLOCKSの数値回帰を使って相場予測に挑戦!(2)

グルーヴノーツ コンサルタントの吉村です。
今回は、前回の記事に引き続き相場予測を行っています。

今回、2部構成の後編になります。
・前編:相場予測の対象とする商品を選んでデータの準備
・後編:MAGELLAN BLOCKSにて予測モデルを作り収益が上がるかシミュレーション

今回は以下の5.モデルを作って予測するから進めていきましょう。

  1. 商品を決めて何を予測するか決める
  2. データ分析して限月をまとめる
  3. 予測因子に短期・中期の移動平均を追加する
  4. 時系列にする
  5. モデルを作って予測する
  6. シミュレーションの説明をする
  7. 儲かるシミュレーションなことを説明する


5.モデルを作って予測する

前回の記事にて(トレーディングとして)テクニカルな因子と、データの時系列化まで行い下図のようなデータを作成しました。


このデータに合わせてMAGELLAN BLOCKSのモデルジェネレーターにて予測モデルを作成します。流れは下記のようになります。 (具体的な操作を知りたい方は過去の記事 電力需要予測をMAGELLAN BLOCKSでやってみた最小手で需要予測をやってみる をご一読ください)

  1. モデルジェネレーターにて数値回帰タイプを選択
  2. トレーニングデータ設定にて時系列型を選択
  3. 時系列の数を6にする
  4. 時系列の種類を9にする
  5. モデルジェネレーター作成を完了する
  6. 作成したデータから学習用データ(2011〜2018年)を抽出する
  7. 抽出したデータにてトレーニングを開始する

注意点としては、 #2,3,4の時系列型について設定する部分ですね。
日sin〜終値20日移動平均の9項目と、データの日付+5日前のデータで6日分の時系列型となります。


トレーニングが終わると数値回帰として誤差が表示されます。
今回は誤差が 124 と出ました。

トレーニングデータ期間の平均終値が4,000円/gなので、5日後の予測としては値動きとしてちょっと大きい気がしますね。 しかし収益を上げる目的での相場予測で重要なのは実際に儲かるのかです。(なんかコンサルらしくない話になってきた)



それでは実際に予測してみましょう。



2019年の5日後の終値を予測した値と、実際の5日後の終値をグラフにしました。 グラフにしてみたところ予測値は若干波形は似ているものの、それなりにズレがでますね。

予測誤差を元にRMSEを計算してみると、111円/gとなりました。 トレーニング時の誤差より小さいですが、まだ大きい気がしますね。
そして続いて、肝心のシミュレーションをやってみましょう。



6.シミュレーションの説明をする

今回どういうシミュレーションをするのかを説明いたします。
実はこのパートが、前後編で一番お伝えしたいところになります。
シミュレーションとして考えたトレーディングは、下記の考え方で組み立てています。

  • 5日後の相場が上がるのか下がるのかを予測する
  • 上がるのであれば買いで入り、下がるのであれば売りで入る
  • 5日後より後は分からないので必ずポジションを手放す
  • ポジションを持っている間に、設定したロスカット幅に達した場合はポジションを手放す



まずこちらがシミュレーション用のシート全体になります。 ◯の数字で1つずつ説明いたします。



まず左上①の unit は、1回の売り買いで白金を何g取引するかという数字です。 今100と設定しているので、1回に100g取り引きします。 取引する価格が2,800円/gであれば、280,000円分購入するという意味になります。



続いてその下②の limit は、ロスカットする際の値動き幅の上限です。 今28と設定しているので、28円を超えるロスとなる値動きが起きる場合には自動的にロスカットすることになります。

例えば上がると予測して2,800円で買いで入った場合に、5日間の間に2,772円まで下がった場合にはロスカットで自動的に売ります。
逆に下がると予測して2,800円で売りで入った場合には、5日間の間に2,828円まで上がった場合にロスカットで自動的に買います。



続いて③の終値が並んでいるところですが、
・当日:当日の相場が閉まったときの終値(事実)
・5日後終値予測:5日後の相場が閉まったときの終値の予測(未来の予測)
・5日後結果:5日後の相場が閉まった時の終値(未来の事実)
となっています。

そしてその右にある 5日後予測-終値 が上がるのか・下がるのかを見極めるところです。
ここがプラスの数字ならば5日後には今より上がると考えて 買い で入り、 マイナスの数字ならば5日後には今より下がると考えて 売り で入ります。



続いて④の始値ですが、当日は使いません。ついでに出しているだけです。
大事なのが 翌日の始値 です。この上記③の終値予測による買いor売りで入る判断を元に、翌日の始値で取り引きをします。

具体的に書くと1行目の2019-01-04の例であれば、「当日の終値が2,800円で、5日後の終値の予測が2,876円で76円上がると予測する。 よって翌日の100g買い注文を成行で入れるので、始値の2,795円で取り引きが成立した。」と言うことになります。
やっと買えました。続いてロスカットの説明に進みます。



⑤の安値と下げ幅について説明いたします。

当日から1〜5日後の安値が並んでいますが、当日は併せて表示しているだけで使われません。 大事なのが1〜5日後の安値と、右側にある下げ幅が④で約定した翌日の始値と安値の下げ幅になります。 そして最大下げ幅が1〜5日のなかでの最大下げ幅です。

この最大下げ幅が買いで入った場合に、②のlimitで設定した下げ幅より大きい場合にロスカットします。



⑥の高値と上げ幅は安値・下げ幅の逆ですね。
最大上げ幅が売りで入った場合に、limitで設定した上げ幅より大きい場合にロスカットします。



⑦の5日後の終値値動きはロスカットが発生しなかった場合に、5日後に確定する収益となる値動きです。 要するに③の5日後終値 - ④の翌日始値のことです。この値動きに①のunitを乗じた金額が収益となります。

具体的に書くと、2019-01-04には2,795円で100gを279,500円にて購入しました。 5日後まで保有していましたがロスカットは発生せず、5日後の終値は2,867円だったのでその金額で売れました。 値動きが72円となるため、2019-01-04に購入した白金100gは、5日後に7,200円の収益が出たことになります。

後はこれを繰り返すだけで、毎日取り引きを行うシミュレーションが可能となります。



7.儲かるシミュレーションなことを説明する

この考えで毎日取り引きを続けると、下図のグラフのように最初だけマイナスになりましたが、 3月にはしっかりプラスがでて、12月の終わりには233,500円の収益を積み上げて1年を終えることが出来ました。 毎日取り引きを行い5日間は保有するので、30万円×5日で150万円は軍資金が必要となります。 年間の利回りが15%となり、十分な投資シミュレーションと言えるでしょう。

今回、白金の相場予測として過去データを元にMAGELLAN BLOCKSでシンプルな形のモデルで儲かるモデルを作ることが出来ました。 もちろん2019年が結果の出やすい相場だった可能性もあり、他の年でも必ず同じ結果が得られるわけでは有りません。 実際に実業務に落とし込むには予測因子もより丁寧に検討し、複数パターンのモデルを作成のうえ検証を十分に行う必要があります。

グルーヴノーツではデータの収集から因子の抽出・モデル作成および検証の進め方についても、 経験豊富なコンサルタントがお手伝いをさせていただくことが可能です。 相場予測に限らず実業務への適用を検討している企業のご担当者様はお気軽にお問い合わせいただければ幸いです。

 


※本記事は、金融商品の売買または取引を推奨し、勧誘するものではありません。
※本記事または本シミュレーション方法は、将来の投資収益等を示唆または保証するものではなく、その内容の正確性、完全性、有用性等を保証するものではありません。また、投資成果が確実に得られることを当社が保証するものではありません。
※本記事に掲載された情報や「MAGELLAN BLOCKS」を利用することで生じたいかなる損害(直接的、間接的を問わず)について、当社は一切の責任を負いません。