近年、個人投資家で自動売買を導入している人が増えてきていて、高度なデータ分析を取り入れたアルゴリズムを使われることもあります。
この記事では画像認識と強化学習で自動売買システムの事例を紹介します。
データの流れ
まずシステムの全体の流れを図で簡単に説明します。
HYPER SBIは株の取引きをするソフトウェアです。
①では取引が行われる板の文字を画像認識で読み取る機能(OCR)
②は①のOCRの学習モデルを作る機能
③はOCR結果を解析して他プレイヤーの買い圧力や売り圧力を推定する機能で、強化学習の特徴量として使います
④は強化学習の学習モデルを作る機能
⑤は強化学習モデルで推論する機能
⑥はLINE notifyを使って⑤の結果を通知
⑦は⑤の結果でトレードする機能
になります。以降は各機能を簡単に紹介していきます。
①板の画像認識 OCR ②OCRの学習モデル
板とはこういうものです。この画像を読み取る方法については過去の記事で説明してあります。OCRの学習モデルは画像認識のディープラーニングで作っていてその点についても以下の記事で触れてあります。
株の自動売買のための板OCR
OCRの推論は0.5秒ごとくらいのタイミングで推論したいので通信を介さないようにHYPER SBIを起動してる環境で行っています。windowsでtensorflowを動かすのは設定が面倒でした。
https://bizlog.tech/windows-maxpath-change/
でパスの260文字制限の解除して、
https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads
でVisual C++をダウンロードしてできるようになりました。
③板解析
前セクションで添付した動画でピコピコと数字が変化したり光ったりしています。これは大半がアルゴリズムで、ごくまれに人間が注文を出すことによって動いています。大口投資機関でアルゴリズムを導入していないところはまずないと言っていいと思います。アルゴリズムということは何らかの規則に従って取引していますので、どういう規則で動くのかを推定しています。私の予想では、時間をトリガーにして作動するアルゴリズム、ニュースをトリガーにして作動するアルゴリズム、株価の急騰急落で作動するアルゴリズムなどがいると思っています。
推定方法についてはこの記事では触れません。
④⑤強化学習
③で取得した特徴量をインプットに強化学習を行います。強化学習については過去の記事でまとめておきました。
株の自動売買アルゴリズムを強化学習でつくる
推論時はAPIサーバをたてて、5分ごとに推論するリクエストを送っています。
⑥⑦通知
買うか買わないかの戦略をLINEで通知します。LINE notifyを以下の記事を参考にすれば10分くらいでメッセージボットをつくれます。
PythonでLINE Notifyへ通知を送る
LINE notifyアカウントを使えば以下のような感じでトレード戦略を通知して、人間はただそれに従うのみという運用です。
費用
システムのインフラも含めて毎月3万円くらいで運用できています。二人で開発していますが人件費は0円です。
データ量
使っているデータは①で記したような板の録画データ約2年分です。
株では高い価値の情報を持っていることが非常に重要です。価値はその情報を知っている人の少なさと業績インパクトの大きさの掛け合わせで効いてくると考えると、容易に手に入らない録画データは価値が高く、その点で差別化を図ろうという狙いです。
最後に
機械学習できる人はアルゴリズムトレードに挑戦してみてほしいです。死に物狂いで身につけたでしょうから有効に活用すべきです。ただし、安易な気持ちで参戦すべきではないとも思っています。アルゴリズムを使っていない投資家は、機械学習で処理しづらいような情報を頭の中で処理できるという点でアルゴリズムトレードとは違う強さを持っています。アルゴリズムを使う人(主に機関投資家)はクオンツが勝つ方法をひたすら研究してるので単純に強いし、資金が半端ないので反対の行動をしたら十中八九負けます。うまく自分の武器を見つけてかろうじて生き残るためのデータ分析をやっていきましょう。
次回はまた別の研究を紹介していきます。
作ったコードはここで管理しています。
OCR
https://github.com/shiibashi/board_ocr
板録画・LINE通知
https://github.com/shiibashi/board_monitor_private
強化学習(学習・推論API)
https://github.com/shiibashi/daytra