知恵熱(´・ω・`) | ウツと株とプログラミング

ウツと株とプログラミング

うつ病で引退して、株トレーダーに。銘柄選定プログラムから始めて、現在は自動売買(アルゴリズム取引)システムを開発中(*'▽')/

天気が回復傾向にあるので、ドトールで読書しています。


読書といってもプログラミング言語の解説書ね。


早くシステムトレードを実現したくて、Python言語を頭に流し込んでいます。

プログラミング言語を覚える王道は「解説を読んで理解する」→「実際に小さなプログラムを作る」→「動かなければ原因を調べる、動いたらプログラムの一部を変更してみる」……みたいな試行錯誤をすることなんだけど、

「とりあえず、ある程度はプログラミングできるようになりました(*'▽')/」

というレベルに来た時に、本格的に解説書を通読すると良いです。そうする事で「こんな便利な方法があったんかぁ~」みたいな気付きがウジャウジャ出てきます。← いまここ。

まぁ、その後でまた試行錯誤を始めるんだけどね。

その後に秀逸なプログラム例を読む(出来れば手入力しながら確認する)とスマートなプログラマーになれると思っています。

先日『月刊・日経ソフトウエア』を読んで(そのプログラムの美しさに)圧倒されました。

スイングトレードをするに当たって今はPythonでスクレイピング/クローリングしながら毎日20000レコードくらいのデータを処理しています。

とりあえず安定的に稼働しているんだけど、「銘柄選定の為の情報を集約してExcelで表示する」という「目的ありき」でコーディングしたものだから、プログラムそのものは醜悪です。とても他人に見せらせないし、無駄も多い。

今後はプログラムそのものに株取引を任せようと思っていて、最速だと(値動きの激しい時間帯など)1秒間に4回くらい売買させることを目論んでいます。

軍資金50万円をプログラムに任せて、一日に10%の利益をあげるのが最終目標。そのために3つのプログラムを作ろうとしています。
  • Erabu君:銘柄選定を行う
  • Minoriちゃん:毎秒5レコードを処理して売買する
  • Furikaeri君:Minoriちゃんのトレード記録を分析して「より良い」トレード方法と銘柄選定方法を検討して僕(Akira)に提案する
それで僕(Akira)がErabu君とMinoriちゃんに処理の優先順位の変更指示をする……という流れで、僕もマシンも学習しようと思っています。

Erabu君のプロトタイプは今2号機で試験運用中。MinoriちゃんとFurikaeri君はこれから制作します。まずはFurikaeri君から。

Furikaeri君はレビュー目的なので市場終了後のバッチ処理なんだけど、膨大なデータ量を分析させるつもりです。Minoriちゃんも高速処理が求められるけど、Furikaeri君もそれに負けず劣らず高速処理できないといけません。

しらみ潰し的にあらゆるパターンをFurikaeri君に調べさせようと思っていたんだけど、それだと取り扱うデータ量が指数関数的に増えて非現実的だと感じ始めています。

まずは「ありえない銘柄」「ありえないパターン」みたいなものをスクリーニングしてデータを絞る必要があります。

ただ、僕(←既に高齢者)の先入観でスクリーニングすると時代に付いて行けないシステムになるかもしれません。

ということでFurikaeri君に機械学習の機会を与えるかどうかで迷っています。

Erabu君(現在は日足データを取得している)に(銘柄選定をさせた上で)1分足のデータを追加取得させようとしていますが、Minoriちゃんはコンマ秒速で取引するし、そんなMinoriちゃんに「より良い手法」を勧めるFurikaeri君は1分足よりも更に細かい(これを「粒度(りゅうど)が高い」といいます)データが必要だな。

証券取引所がデータ提供サービス(有料)を始めていて、全4000銘柄の過去1ヶ月分のティックデータを2000円弱で販売してる。これだけで約4000万レコード。レコード件数が膨大なので「Excelで処理しようとしてもマトモに動かへんで」みたいな注意書きがありました。

……とにかく先ずはPythonをもう少し詳しく勉強します。無駄なデータをスクリーニングする命令語(関数やメソッド)もあるみたいだし。

それにしても、勉強している時は僕は知恵熱が激しくて汗が出ます。まるで運動しているみたい。

それでも低気圧が来たら半分くらい忘れちゃうんだろうな。


ちょっと皮算用を……

50万円の軍資金から始めて毎日10%を稼ぐとすると、(僕がラスベガスに行ける為の)500万円(合計550万円=軍資金が11倍)になるために必要な日数は
50万円×毎日1.1倍のy乗=550万円
を満たすyを求めることになります。
1.1^y=11
ね。
yは1.1を底(真数は11)とする対数関数で求まるけど、僕のスマホの関数電卓は底の指定ができないので、常用対数で計算すると
y = log(11)÷  log(1.1)= 25.2日
ですね。50万円の軍資金が毎日1.1倍に増えるとすると、25.2日後には550万円になります。約5週間。

頑張る(ง •̀_•́)ง