Eureka!! Trade Algorithm

プログラムを書いてお金を貰うのではなく、お金を出力するプログラムを書けばいいのではないか

シミュレータ高速化後経過

 

C++版をいじっている過程で、全ての時系列データを読み込む必要はなく、シミュレート日数分だけ読み込めばいいと分かり、Ruby版へ逆輸入。結果的に14倍速くなった。

速くなった分一日のシミュレート回数も増えて、 2/12 から 4/28 までの結果が以下。

f:id:ioaxis:20170429213658j:plain

4/28 時点で 958,700 -5% ほど。コツコツドカンは健在。

利益率 : 60/94(73%), 平均利益 : 7,078円

損失率 : 34/94(27%), 平均損失 : 13,705円

 

時系列シミュレータは持ち越し有りだけど、当日のシミュレータは直ぐに結果がわかるように持ち越し無しにしてるから差異が大きいのか。そろそろ当日のシミュレータも持ち越し有りに変えようかな。となるとまた修正が必要になるな。

 

2月からの進捗まとめ

ログレベルを設定することで、単純なprint出力ではなく、欲しいログだけ出力できるように修正。 

 

上記の通り。しかしRSIと移動平均の計算日数によって計算量が膨大になって速度が恐ろしく遅くなっているような。。。

 

シミュレーションパラメータをテキストデータから読み込んで実行できるように修正。

 

 テキストデータから読み込む箇所が大きくなってきたのでクラス化。

 

 シミュレーションパラメータを乱数で決定し、繰り返し実行できるように修正。

 

 パラメータ毎に重み値を付加し、シミュレート結果が良ければ加算、悪ければ減算する。ニューラルネットワークの適用。しかし double において INF などが発生しているため修正中。

2016年シミュレータ資産推移

プライベートでいろいろあって全くこちらを更新していなかったけど、地味に続けてはいたので中間報告。

 

2016年初頭からシミュレータで分析したパラメータに従ってトレードした結果が以下。

持ち越しはせずにその日のうちに売買。

f:id:ioaxis:20170205120310j:plain

正直な所ボロ負けしてるんじゃないかと思ったんだけど、思いの外健闘していた。動かすだけ動かしてメンテナンスしてなかったので。

 

2016年9月に急騰した場合は買わないという戦術を追加した結果は以下。

f:id:ioaxis:20170205120506j:plain

2016年9月から2017年1月の4ヶ月間で100万が103万にww

ドローダウンが少ない戦術(持ち越さない、指値売り/買戻し)を重視しているため大きく負けることはないけど勝つこともないな。

 

シミュレータ動かすのに1ヶ月あたり1時間位かかるので高速化したい。

# イザナミは12年分を分析するのに1分かからないらしい。

Ruby から C++ に移行したいし、C++ 化に伴って GPU 演算を使った C++AMP も試したい。でも家の端末もかなり古くてGeforce5xxだからそこまで強力じゃないかも。

今さくらVPSの最安値サーバーだからもっと高性能のサーバー使いたいよね。メモリが500MBだから仮想メモリ参照してページングが凄い。それだけでどれだけ変わるのかも試したい。

今CPUが常に100%でCPUがボトルネックみたい。サーバがシングルコアだから、マルチコア対応したら単純計算でコア数に速度が比例する。どこかで Read/Write のボトルネックも出てくるだろうし、並列化設計難しそうだけど。

 

今動かしている Ruby トレードシステムに新しい分析指標を追加したいし、何よりも見てくれを良くしたい。現状ひたすら文字が流れるだけだから。

 

したいことは山積みだけど仕事もあるし、休日は純粋に休みたい気持ちもあるから、どれもこれもは無理だろうな。

現在のトレードアルゴリズムに対するシミュレータ結果分析

初期値鋭敏性により最初に設定したパラメータ次第で結果が全く異なるため、過去一年分に対して様々なパラメータ設定をしたシミュレート結果をグラフ化してみた。

 

f:id:ioaxis:20151123170119p:plain

 

パラメータ次第では最高パフォーマンス +60%, 最低パフォーマンス -70% といったところ。

しかし全体的に見てマイナスの方が多い。プラスは全体の 20%ほど。平均的に見れば -20% あたりだろうか。

総パラメータ組み合わせ数4000弱に対して700回ほどシミュレータ回した結果が上記だから、おそらくこれ以上シミュレータ回しても同じようなグラフになると思う。

 

とは言え先ほど株式が分割しているのを検知できず損切りしてしまうバグを発見したため、その原因を排除すればもう少しまともなパフォーマンスになるだろうか。

 

Ruby のシミュレータのバグを細かく直し続けるか、一気にシミュレータを C++ 化してしまうか悩み中。。。

読書本一覧

ゾーン 「勝つ」相場心理学入門

  • 読書中
ゾーン ウィザード・ブックシリーズ

ゾーン ウィザード・ブックシリーズ

 

 

マーケットの魔術師 米トップトレーダーが語る成功の秘訣

  • ファンダメンタルよりもテクニカル派が多い
  • 投資界での著名人の投資法が参考になる
  • ランダム・ウォーカーと対をなす本に思える
マーケットの魔術師 ? 米トップトレーダーが語る成功の秘訣

マーケットの魔術師 ? 米トップトレーダーが語る成功の秘訣

  • 作者: ジャック・D.シュワッガー,横山直樹,Jack D. Schwager
  • 出版社/メーカー: パンローリング
  • 発売日: 2001/08/01
  • メディア: 単行本
  • 購入: 9人 クリック: 87回
  • この商品を含むブログ (35件) を見る
 

 

臆病者のための株入門

  • 文庫本ながらハードカバー並の情報量
  • 初心者に一番薦めたい一冊
臆病者のための株入門 (文春新書)

臆病者のための株入門 (文春新書)

 

 

欲望と幻想の市場 伝説の投機王リバモ

  • ジェシー・リバモアの伝記的な一冊
  • 投資の勉強本というよりも読み物の側面が強い
欲望と幻想の市場―伝説の投機王リバモア

欲望と幻想の市場―伝説の投機王リバモア

 

  

フラッシュ・ボーイズ 10億分の1秒の男たち

  • 取引業者間の戦いを描いた小説的な一冊
  • 個人投資家にとってあまり勉強になるものではない
フラッシュ・ボーイズ 10億分の1秒の男たち

フラッシュ・ボーイズ 10億分の1秒の男たち

 

 

伝説のトレーダー集団 タートル流投資の魔術

  • トレードアルゴリズムの参考になりそうな情報が多い一冊
  • ムズい
伝説のトレーダー集団 タートル流投資の魔術

伝説のトレーダー集団 タートル流投資の魔術

 

 

損して覚える株式投資

  • 初心者向けの一冊
  • 「臆病者のための株入門」の方がお薦め
損をして覚える株式投資 (PHP新書)

損をして覚える株式投資 (PHP新書)

 

 

 

ウォール街のランダム・ウォーカー 株式投資の不滅の真理

  • ファンダメンタル派、長期投資派の一冊
  • テクニカル派、短期派に対して非常に攻撃的
  • Buy and Hold を強く推奨している
ウォール街のランダム・ウォーカー―株式投資の不滅の真理

ウォール街のランダム・ウォーカー―株式投資の不滅の真理

 

 

2時間で丸わかり 株式投資の基本を学ぶ

  • ファンダメンタルで勝負したい人にお薦め
<2時間で丸わかり>株式投資の基本を学ぶ

<2時間で丸わかり>株式投資の基本を学ぶ

 

 

 

上昇チャートを見極める極意 最強の実践道場

株鬼流最強の実戦道場 上昇チャートを見極める極意

株鬼流最強の実戦道場 上昇チャートを見極める極意

 

 

株で富を築く バフェットの法則 不透明なマーケットで40年以上勝ち続ける投資法

株で富を築くバフェットの法則[最新版]---不透明なマーケットで40年以上勝ち続ける投資法

株で富を築くバフェットの法則[最新版]---不透明なマーケットで40年以上勝ち続ける投資法

 

 

 

スタバ株は1月に買え!

 

たった7日で株とチャートの達人になる

たった7日で株とチャートの達人になる!  改訂版

たった7日で株とチャートの達人になる! 改訂版

 

 

 

システム概要

環境

・運用環境 : さくらのレンタルVPS(Ubuntu)

・開発環境 : MacBookAir

    - C++, Java : Eclipse

       -- Xcode でも開発してたが、自動生成関係は Eclipse が強い印象

    - Ruby : Emacs(VPS上で直接編集)

 

RealTimeTrader

・開発言語 : Ruby

・投資対象銘柄の値動きを監視して売買

 

StockAnalyzer

・開発言語 : Ruby

・株価情報を更新し、最適な投資対象銘柄を選択する

 

TradeSimulator

・開発言語 : Ruby(現在 C++ 化作業中)

・過去の株式時系列データに対して、現在のトレードアルゴリズムのパフォーマンスを計測する

Rubyスクリプト的に開発するには規模が大きくなりすぎ、また1年分をシミュレートするのに2~3時間程かかるため C++ に換装中

   - 下記は C++ 版クラス図概略

f:id:ioaxis:20151123165021p:plain

 

StockChecker

・開発言語 : Java(Android)

・仕事中は株価を確認できないため、約定や異常検知をバイブレーションで知らせる

    - 優先度は低いため開発停止中

f:id:ioaxis:20151123165535p:plain

 

はじめに

投資は自己責任で。

 

自己紹介

  • 30手前のSE
  • それなりに使える言語 : C++, Java, Ruby, VBA
  • 特にお金をつかうような趣味もなく、ただ銀行に貯金しておくのももったいないと思い株式投資を始める
  • 元々個人でのシステム開発は好きだったため、現在は株式自動売買システムの開発とトレードアルゴリズムを研究中

 

投資遍歴

  • 2014/2 : 株式投資開始
  • 2014/8 : 分析スクリプト稼働開始しそれなりにプラス
  • 2015/4 : 買い、空売りともに好調 敗北を知りたいと思い始める
  • 2015/5 : 投資先の企業がネガティブ材料により急落するも、狼狽売りになると考え持ち越し
  • 2015/7 : 欧州リスクに引き釣りこまれる
  • 2015/8 : チャイナショックに引き釣りこまれる

 

システム遍歴

  • 2014/4 : 投資銘柄分析スクリプト開発着手
  • 2014/8 : 分析スクリプト完成
  • 2015/2 : 自動売買システムおよびシミュレータ開発開始
  • 2015/7 : 自動売買システムおよびシミュレータ一応完成
  • 2015/9 : Ruby で開発したシミュレータが大規模化したため C++ 換装開始

 

システム概要 

ioaxis.hatenablog.com

 

読書本一覧

ioaxis.hatenablog.com