概要
そういえば株取引アルゴリズムを修士学生の時に作っていました。デイトレードのシステムは日々乃ちゃん、スイングのシステムは待鳥すいちゃんという名前がついてました。
試しにもう一回動かせるかと思ったのですが、流石に3年前のプログラムなので動きませんでした。
https://github.com/hamko/stocks
日々乃ちゃんと待鳥ちゃん
日々乃ちゃんは、デイトレード用の売買レコメンデーションシステムです。デイトレードを1分足で観測して、順張りブレイクアウトをLevenberg-Marquardtアルゴリズムで検出します。これによって天井を突破した時のタイミングをいち早く検出することができます。お金が余っていれば、そのタイミングで株を買うことを提案します。逆に天井をした方向に突破したタイミングを検出して、株を売ることを提案します。損切り・利食いにも対応しています。以下の画像のように、毎日5, 6通のメールをこまめに送ってきます。元気な子ですね。
待鳥すいちゃんは、全銘柄のファンデメンタル解析を行います。PBR, PER基準の妥当株価から、割安な株を毎日報告します。市場全体の過熱感や、優良な成績を出している企業の過熱感も解析して報告します。一日一回、場が開く前に報告してくれます。知的な子ですね。
どれくらい儲かる提案ができるのか
日々乃ちゃんは、100万円元手で、1/21-2/7で44000円の儲けがでる提案ができているそうです。まあこの間暴落とかなかったので何とも言えないですね。
待鳥ちゃんの方は解析していないです。
システム
日々乃ちゃんのシステムは、1分ごとにYahoo Financeからスクレイピングしてデータを得ます。その後、30分程度のデータから下限・上限の包絡線を計算します。計算方法は、コスト関数e(x)=y-(ax+b)*(y>ax+b?10:1)に対してLevenberg-Marquardtアルゴリズムを使ってフィッティングさせます。これを繰り返し、傾きaの微分がしきい値以上であればブレイクアウト、といった要領で天井突破を検知します。下限検知というのは、こんな感じのものを想定してください。
待鳥ちゃんのシステムは、1日ごとにPERによる妥当株価と現在の株価を比較して、現在の株価が標準偏差σに対してどれくらい乖離しているかを解析します。いろいろな株価と妥当株価と標準偏差を観察しつづけると、市場に出ている総額が大きい場合、大体2σを超えるとほぼ過熱状態で1ヶ月単位で妥当株価か悪くても+1σまで戻ることがわかりました(確か日経平均は1週間くらいだったような)。従って、このような基準でスイングトレードの提案システムを組みました。
モチベーション
昔から不労所得には興味がありまして。
修士学生の時、僕はロボット製作販売で個人事業主で開業していました。小銭を稼ぐループが回ってきたところで、数百万円が銀行口座に入っている状態でした。昔から不労所得には興味がありまして、ぜひこれを株で増やしたくなるのは自然なことです。そこで松井証券に200万円ほど突っ込んで、現物の株取引をしていました。ものすごく1日中張り付いていればデイトレで損する気はしないのですが、一日中グラフを見ているというのも問題です。スイングでもファンデメンタルをインターネットで探しまくって、指標を眺めるというのはアレですし、僕は忘れっぽいのでこの日に売ろうと思っても忘れてしまいます。一番効いたのは、ギリシャ崩壊に伴う株暴落に2日ほど気づかず、30万ほど失ってしまった経験です(当時の収入的にはそこまで痛くなかったので、まあ勉強代だねと思っていたのですが、今はお金が欲しいです)。
そういえば僕はプログラミングが少しできるのでした。このような時間的金銭的ロス、機会損失を最小化するために、自動取引ないしは売買レコメンデーションシステムを構築すればよいと思ったのは自然なことだと思います。
最近機械学習を勉強しているのですが、どうしても応用が見えずにモチベーションが保てずにいました。いろいろ応用はあるだろうと思いますが、どう考えても、株自動取引にしか僕は興味が無いようです。それで思い出して、こんなポエムを書くに至りました。
本当はこの記事は書くべきではない
個人的には、技術ブログというのは一定の成功を持って発信すべきだと思います。本当は、この記事を書くことでインターネット上に無意味なゴミが溢れてしまうという罪悪感があります。一方で、ブログというものは成功をしていなくても書いてもよいだろうと思いますし、僕がどういうハムスターなのかを発信することは、今後意味があるだろうと思ってこのブログを書きました。ある種の日記です。
こういう都合があるので、僕はこの記事を真面目に書いていません。タイピングゲームだと思って書きました。