時系列解析を利用して株価、FXの未来の価格予想 実践編
先日の記事
"時系列解析を利用して株価、FXの未来の価格予想 事前準備"
abitra.hatenablog.com
今回実践編って事で日経225を機械学習を行い将来の価格予測を行いました。
時系列解析を利用して日経225の未来の価格予想
概要としては日経225の終値を解析して近い将来(一年後まで)の価格を予測するといった感じの事を行っています。
※本記事の内容は2019年9月13日現在の状況となります。
事前準備
日経225価格データを収集
収集先のデータとしてYahoo financeを利用しています。
"Nikkei 225 (^N225)"
finance.yahoo.com
上記サイトからCSVをDLしています。
学習期間
2009/9/13 ~ 2019/9/12
※2009年からにした理由は特にありません。
何となく10年でキリが良かったので。。。
ソースコード
import numpy as np import pandas as pd from fbprophet import Prophet import matplotlib.pyplot as plot data = pd.DataFrame() file_name = 'N225.csv' data2 = pd.read_csv(file_name, skiprows=1,header=None, names=['ds','Open','High','Low','Close','y','Volume']) data = data.append(data2) m = Prophet() m.fit(data) future_data = m.make_future_dataframe(periods=365, freq = 'd') future_data = future_data[future_data['ds'].dt.weekday < 5] forecast_data = m.predict(future_data) fig1 = m.plot(forecast_data) fig2 = m.plot_components(forecast_data) plot.show()
このコードだけで時系列解析出来るなんてpythonは神か!!
(ライブラリが素晴らしいだけかもですがw)
時系列解析を利用して日経225の未来の価格予想 結果
1年後の価格は現在より下になるかもね。
2019-09-12 => 21759.609375円
2020-09-11 => 21020.437566円
途中結果
15日後
2019-10-03 00:00:00 => 21249.2円
30日後
2019-10-24 00:00:00 => 21240.1円
45日後
2019-11-14 00:00:00 => 21618円
60日後
2019-12-05 00:00:00 => 21885.8円
100日後
2020-01-30 00:00:00 => 21601.2円
200日後
2020-06-18 00:00:00 => 21354.5円
1年後
2020-09-11 00:00:00 => 21020.4円
もし運用するとしたら
10月頃に買って12月頃に売る様な戦略がいいのかなーと。
こんな感じの戦略を立てるかなーと。
備考&注意点
今回の機械学習の精度を確認していないので上記方法を鵜呑みにするのはNGです。
もし上記方法で実際運用するのであればバックテスト等で精度を確認してから行うのがベター
併せて10月頃買いで入っての戦略は現在の状況ですので10月になったら状況も変わるのでその都度、学習させて直近の状況を確認しないとダメかなーと。
感覚的には有効な精度は30-50日迄な感じ。
近く有効な精度の確認と平均的な日数など検証してみたいと思います。
これってビジネスになるんじゃね?
今回は日経225のみの検証ですがこれって各株価や為替などの時系列解析データ公開したら皆助かるんじゃ。
投資助言になるのかな。もし国内でライセンスなどが必要な場合は外国法人で行えばいいのかな。うーん。
なんか上手いことデータ提供など行えばビジネスになりそうな予感。
詳しい方いればコメント頂けると助かります。
その他
iphone 11 買っちまったぜー
現在使っている機種はiphone 6 なのでもう5年位かな。
しかも購入したのではなく親族からのお下がり(中古)。
赤色のやーつ。
ついでにケースも。
正直 iphone 6 でも利用は問題ないのですがねーゲームしないし、動画もiphoneでは見ないし。
購入を決意した理由は写真です。
iphone 11は夜でも写真がきれいに撮れる&超広角の写真が撮れる感じなので購入を決意しました。
本当はPixel 3を考えていましたがapple watchやらを考えるとiphoneになってしまうんですよね。
apple watchがなければandroidに行くのですが。。。悩ましい。
時系列解析を利用して株価、FXの未来の価格予想 事前準備
自分メモ
勉強がてら時系列解析を行ってみました。
時系列解析を利用して株価、FXの未来の価格予想(準備編)
時系列解析とは?
検索にて"時系列解析 とは"のtopページの引用
時系列解析は、過去のデータから未来を予測するという手法です。
たとえば、一年前に魚が豊漁だったら、今年も豊漁になりやすいとか、そういう関係性があるのかというところを調べて予測に活用します。もちろん、回帰分析 のように別の要因の影響を取りこんで予測モデルを作ることも可能です。
機械学習の一つになります。
FXや株取引でこの時系列解析を利用すると将来の株価やFXの価格が予測出来るんじゃないのかなーって事で今回練習です。
時系列解析といってもモデルは色々ある様です。
ARモデル(自己回帰モデル)
MAモデル(移動平均モデル)
ARMAモデル、ARIMAモデル、SARIMAモデル
ARCHモデル、GARCHモデル
状態空間モデル
どれが株価やFXに向いているのかは完全に把握していませんがARCH、GARCHモデルがいいとか何とか。
詳しい方いませんか?w
今回は勉強といいますか実際ちゃんと出来るかどうかの確認なので細かい事は気にせずとりまやってみるの精神です。
時系列解析用のライブラリをインストール
利用するライブラリは"Prophet"です。facebookが開発したライブラリ。
pip install fbprophet
公式には↑これで出来る様なことを書いていますが私の環境では出来ません。
pystanでエラーになります。
pystanをアンインストールしたりインストールしたりを何度かしてもダメでした。
File "c:\users\hogehoge\appdata\local\programs\python\python37\lib\site-packages\pystan\api.py", line 13, in <module> import pystan._api # stanc wrapper
ここでエラーになる。。。
公式又は他のサイト等を拝見する限りanacondaを利用してインストールしろと案内されています。
※最初anacondaでインストールする事に抵抗があったので何か方法ないのかなーって探しましたがダメでanacondaで入れました。
でcondaであればすんなり入ります。
anacondaのpystanをみるとバージョンが2.17.1.0なのでもしかしてーって事で通常?の方のpystan (2.19.0)を削除して2.17.1でインストール。
pip install pystan==2.17.1.0
この後
pip install fbprophet
これでOKになりました。
pystanの中身を確認していないのでなんともですがfbprophetでつまずく方は一度pystan==2.17.1.0にて様子をみてみるといいかもしれません。
公式チュートリアルでテスト
公式ページ
https://facebook.github.io/prophet/docs/quick_start.html
import pandas as pd from fbprophet import Prophet #ライブラリ読み込み df = pd.read_csv('../examples/example_wp_log_peyton_manning.csv') #データのCSV読み込み df.head() m = Prophet() m.fit(df) future = m.make_future_dataframe(periods=365) #365日後までのデータ生成 future.tail() forecast = m.predict(future) forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
実際書いて動かしてみたコード
表を生成
fig1 = m.plot(forecast) fig2 = m.plot_components(forecast)
これでテスト完了。
感想
なんかそれっぽい結果が出てる気がしますw
■ 注意点
最初powershellで動かしていたのですが表が表示されないんですよねー
Prophetはplotを利用して表を表示しているような感じだったのでmatplotlibを利用してplotするのかなーって事でpyplotを加えてみたりしましたがダメ。
少し色々試したのですがダメでjupyter notebookを利用したらすんなり表示。
結果が違う。
本家の
https://facebook.github.io/prophet/docs/quick_start.html
の方のは
のデータは
3269 2017-01-19 8.170046 7.431801 8.840703
となっているのですが私が作成した結果は
3269 2017-01-19 8.160103 7.482307 8.904917
となります。
本家のデータ
私が作成したデータ
うーん。この差は何だろう。
誰か分かる人教えて欲しいっす。
なんでだろうな。。。
2019/9/2 - 2019/9/7のバイナリーオプション自動売買結果
バイナリーオプション自動売買結果報告です。
不定期ですがバイナリーオプションの自動売買の結果を報告させて頂きます。
今回から始めるので今後継続して結果報告していくか不明ですw
良い報告だけしても意味ないのでマイナスの時の報告が多くなりそうです。
2019/9/2 - 2019/9/7のバイナリーオプション自動売買結果
2019/9/2 - 2019/9/7はマイナスです。
勝率 40.82%
win 20回
lose 29回
幸先悪いです。一か月を通じてプラスになればと考えていますので一週間の結果は気にしない様にはしていますがやっぱり不安にはなりますねー
敗因 負けた理由の考察など
そもそもの勝率が低い週って事もあるのですが指標発表などの時間帯も自動売買を動かしており無駄な負けが増えた可能性があるかな。
フィルターなしでエントリーしていたら?
勝率ですが約54%程でした。
win 70回
lose 60回
対策など
フィルターの再設定などを考える必要があるかもです。
時間フィルターなどは過去のフォワードテスト数カ月分の実績で設定していますが直近一カ月の実績に重きをおくなどすると結果が変わるかもですが、どうしようかなー
ハイローオーストラリア エントリー キャプチャー
※キャプチャーはデモ口座。
FX pythonとパターン認識(機械学習)でハイローオーストラリアとFXを攻めてみる 思考編
現在先日宣言した通りpythonのアレコレを楽しんでいます。
めちゃくちゃ便利なライブラリがたくさんあっていいですねーもっと前からpythonやっときゃ良かった。
youtubeでも初心者向けに説明している動画も多数あるのでこれからプログラム取引始める人はpython一択かと考えます。
本記事は思考だけです。
近くプログラム書いてバックテストしてみたいと考えます。
pythonのライブラリなどを色々弄ってる段階なのでしばらく時間掛かるかなーと。
pythonとパターン認識(機械学習)でハイローオーストラリアとFXを攻めてみる
pythonと言えば機械学習やディープラーニング。
↑これだけではないのですが、私の場合はほぼこれを利用したいが為にpythonを利用する予定です。
バイナリーオプションのエントリーで前から行ってみたかった手法の一つして画像によるパターン認識によるエントリーがあります。
pythonだとある程度簡単に構築出来るかもーって事で事前の思考をまとめてみたいと考えます。
具体的な方法としてはチャートパターンの画像から○○分後の価格を求めてみたいと考えています。
価格といっても正確な価格ではく現在よりも高いか低いか程度が分かればOKの認識。
※通常は始値、終値、高値、安値の数値から次足又は○○分後の価格を予測するのが一般的なのかなーと考えます。
何故チャートの画像でエントリー?
裁量でエントリーする場合はチャートの形はとても重要でチャートの形を見てエントリーを判断しています。
ラインやインジゲーターなども重要なのですが今回はチャート画像での判断の結果を取得したい。
本来は数値から求めるのが一般的な気がしますが、この方法は色々な方が行っているのでちょっと違った方法で試してみたい。
数値よりもチャート画像の方が何となくパターン化出来そうな気がするんですがどうなんでしょうかね。
気がするだけなかもしれませんがw
株とPython─自作プログラムでお金儲けを目指す本。の購入
ついにといいますか薄々考えていましたがプログラムのメイン言語をrubyからpythonに変更予定。
それに伴い以下の本を購入
株とPython─自作プログラムでお金儲けを目指す本 (技術の泉シリーズ(NextPublishing))
購入はこちら =>
私の場合はwebサイトを作りたくて覚えたruby(rails)で、特に考えもなく取引のシステム等々でもrubyを利用していましたが色々使いたいライブラリでrubyが使えない事が多いんですよね。
※無理やりrubyから呼び出したりする事も出来るのかと考えますが、頑張る方向が間違ってますよねー
今なら kindleで購入 キャンペーンで972円で買えます。(55%オフ)
なぜPythonの選択理由。と機械学習、自動売買
Pythonを選択理由としては使いたいライブラリが豊富って事が一番ですかね。
実行速度やプログラム言語としての特性など色々あるのかとは思いますが、正直分かりませんw
ガチのプログラマではないので詳しくないのですが不具合なく動いてくれれば問題ない認識。
インターネット経由で取引を行うのでローカルの実行速度早めてもなーって感じでしょうか。
大量のデータを扱って尚且つ何かしらサービス提供する前提であれば他の言語などが良い場合もあるかと考えますが個人で使うのであればpythonで十分なのかなーって。
またTwitterやブログでフォローしている人の多くがpythonを利用しているので彼らからのソース恩恵を受けたいってのも理由。
備考
今回の"株とPython─自作プログラムでお金儲けを目指す本"の購入は久しぶりにkindleで本を購入しました。
購入ページ => https://amzn.to/2ljBTka
私は本を中古でメルカリなどで購入する事が殆どです。
本にお金を掛ける事に抵抗は少ないのですが定価購入すると少し負けた気持ちになるんですよねw
むしろ中古の前オーナーの書き込み、落書きが何となく好きですし、少し使い込まれた本の方が抵抗なく読める感覚です。
ただ実物の本は場所を取るので何ともですが。。。
今回はセールで55%offでメルカリよりも安く買えるのでkindleにって感じ。
カスタマーレビュー割合をみるとkindle購入者が多かったのでkindleで購入したのも理由の一つかな。
小説や物語などはkindleでも良いと思いますが技術書だとkindleどうなんだろうと考えてしまい今迄積極的に手を出せてませんでした。
EA開発 バイナリーオプション検証 制作(作成)代行 無料で行いますキャンペーン
ゆる応募です。
以下完全な思いつきでブログ記事書いてますw
EA開発 バイナリーオプション検証 制作(作成)代行 無料で行いますキャンペーン
タイトルそのままんまの意味なのですがEA開発及びバイナリーオプションの検証を無料で行いたいと考えています。
※バイナリーオプション検証は自動売買のシステム提供までは行いません。
アラートツールの作成又はバックテストの検証などになります。
なぜ無料で行うの?
深い意味はないのですが自身でも色々検証してきて新しい風(ネタ)を入れたいって感じでしょうか。
有料でもいいのですがガチのプログラマではないので有料程の責任は取れないので。
誤魔化しなしで言うと無料で作成するんだし責任とか取れないし文句は言わないでねー。って感じ。w
また無料で作成して良いEAやバイナリーオプションのバックテスト結果が出れば利益でるので無料で受けてもOKって事。
ガッツリ制作を行うとかではなく私の空いた時間で作業を行う予定でいます。
EA開発 バイナリーオプション検証 制作(作成)代行の条件など
何でもかんでも無料で作成するのは難しいので簡単な条件として。
1. 既存のEAや何かしらをコピーする様なEAは作成しません。
例えばゴゴジャンの○○と同じEAを作ってとかはご遠慮下さいませ。これはNG。
○○っていうアラートのEAを持っているんだけどバイナリーオプションのバックテストで検証したい。であればOK。
その場合は有料のEAを購入するのはつらいのでこっそり提供下さいませ。
2. 明らかなロジック破綻及びMT4で実現出来なさそうなものは難しいです。
3. 取引及びエントリーのタイミングを説明出来ないのは難しいです。
プログラムは良くも悪くも書いた通りしか動かないのでねー状況を察して良しなには出来ません。
4. ツール系(例:ライン自動描写とか、コピーツール、日本時間表示)はどうしようかな。。。裁量系のツール開発は乗り気しないのですが一応内容お伺いします。
とはいえご連絡を頂いて内容を確認して詳細を詰めていく感じになると考えているので、こんな感じのを考えてるって位の内容を頂けると幸いです。
開発及び話の進め方など
基本メールまたはline等でやり取りを行えればと考えています。
電話嫌いなので電話はNG。
直接会って話がしたい方はその旨ご連絡下さいませ。
私は千代田区に住んでおりますので近くのホテルのラウンジ等でコーヒー奢って頂けるのであればお会いします。
会社員ではありませんので平日であれば基本いつでもOKですw
保証及び責任について
構築したEA及びプログラムに対して保証等は出来ませんのでご了承下さいませ。
また作成したEA等で損失などが出ても責任等持てません。
不具合等があれば修正はしますが保証までは出来ません。
保証や責任を求めるのであれば専門の制作会社さん等に依頼した方が幸せになれるかと考えます。
作成したEAやプログラムの権利
作成したEA及びプログラム等は依頼者のみに提供します。
提供はMQ4ではなくEAになります。
プログラムの権利は基本は私の権利とさせていただきます。
もちろん作成したものを勝手に販売等などは行いません。
オプション
もし素晴らしいくてヤベーEAなどが出来た場合は一緒に販売又はサービスとして提供しませんか?
一緒に儲けましょうw
依頼するにあたっての備考など
1. 依頼は先着順を考えております。
2. 依頼頂いてもお受けしない場合もございます。
3. 依頼を受けたとしても個人的な状況によりキャンセル等をお願いする場合もあるかもしれません。
4. 何人とかの制限は考えていません。また期限も今のところ考えていません。
興味がなくなったら止めますが、それまではやる感じ。
EA制作及びバイナリーオプション検証の依頼方法
hogehogekatoジーメールまでご連絡下さいませ。
お気軽にこんな感じの自動売買を考えているのですがどうですか?といった感じでも大丈夫です。
※メールを頂いても必ず制作する保証は御座いませんのでご了承下さいませ。
その他
個人的にはFX及びバイナリーオプション(ハイローオーストラリア)を取引するのも好きですが、ビジネスを作るのも好きなのでFX又はバイナリーオプションに関連するビジネスの構築などの話もウェルカムです。
まぁ上で色々書きましたが、儲かるのであれば何でもやるのであまり深く考えずにご連絡頂いて大丈夫です。
まずは依頼内容が本当に儲かるのかFX及びバイナリーオプションのバックテストを行いますので。
直近の自動売買のエントリー結果 一部 2019年8月30日
バイナリーオプション(ハイローオーストラリア)自動売買構築の注意点 その1
半分自分用メモ
本記事はハイローオーストラリア(バイナリーオプション)の内容となります。
ハイローオーストラリア側はプログラム自動売買はNG行為なので自己責任でーって感じです。
ハイローオーストラリア 本番環境とデモ環境との違い
webサイトの作りから言えば違いはほぼ無いです。
デモ口座で作成した自動売買プログラムは本番環境でも動きます。
その上でデモ口座と本番口座の自動売買の注意点など。
注意点 1
ハイローオーストラリアにログイン直後のサイトの遷移には少し気を付けた方が良いかもです。
デモ環境ですと"5000円のキャッシュバック"の案内がありますが本番ではその案内がなくなります。
案内がなくなるのは別に良いのかと考えますが、問題はその案内がなくなった事よりサイトが読み込み前に自動売買の注文処理が走るので時間選択または通貨ペア選択辺りのクリック選択が出来なくてエラーになる可能性が高くなります。
htmlタグの存在を確認していてもエラーになります。
対応方法としてはsleep処理などしてサイト読み込みまで待ってやればOK
サイトの負荷具合にもよりますが2-3秒待ってやれば大丈夫なんじゃないかなーと。
注意点 2
約定拒否への対応
デモで約定拒否はさほど起こりませんが本番環境ではよくある事。裁量でも自動売買でも同じ。
対応としては約定するまでエントリーする。又は約定拒否されたらその取引は諦める。
個人的には○○回約定拒否されたらそのエントリーを諦めるって方法を取っています。
深追いすると想定価格外で約定する可能性もあり良い結果にならない可能性が高くなります。
裁量であればプライスアクションや様子を見ながら調整出来たりするのかもですがプログラムによる自動売買では判断が難しいです。
もう一方の約定拒否されたらその取引を諦める。も有効と考えています。
約定拒否=エントリー出来なかった= 損失 ではないです。
機会損失にはなりますが金銭的な損失はないです。
本来プログラムによる自動売買は約定拒否されたらその取引のエントリーを諦めるのが良いと考えます。
取引の機会は何回もあるのでねー金銭的な損失が出なければ勝ちといった考えも出来るかと。
直近の自動売買のエントリー結果など 2019年8月28日