Javaの勉強がてら、カブロボを作ろうと奮闘中。
カブロボっていうのは株式の自動売買を行うプログラムのことで、マネックスが協賛してコンテストもやっている。
コンポーネントを組み合わせてかんたんに作る手法もあるらしいのだけど、現段階ではまだ公開されていないし、せっかくなので自分なりの考えと、一般の自動売買論を組み合わせて拡張してみた方がおもしろいだろうと、Javaって見ることにした。
幸いにもうちの環境にはJavaの開発環境が整っていたりするので、難なくSDKを展開してプログラムできるようになった。
仮想資金の5000万円を元手に、ドローダウンをできるだけ押さえ(最大30%)た安定的な運用を行い、リターンを得るという、ちょっと素人が手出しするには難しい感じもしてくるけども、ま、この辺は考えなくてもシミュレーターが結果を出してくれるので、適当にパラメーターをいじって詰めていけばいいかなと。
条件がある。
カブロボが実行(orderメソッド)されるのは前場と後場の前の2回だけ。場中は動作しない。この実行時間は3分以内と定められているので、あまりにも複雑なロジックを組んでしまうのはダメ。仮に組んだ場合は、処理の高速化をする必要が出てきてしまう。
後場のあとで最大8分間与えられ、この中で翌日に注文する銘柄の候補を選定(スクリーニング)する(screeningメソッド)。
注文は当日のみ有効で、約定の如何にかかわらず、取引終了時点ですべての注文は破棄されてしまう。つまり、出合えない。
取引は指し値、成り行き、逆指し値が可能。空売りもおk。注文条件には、即時、寄り付き、引けの3つが可能。
リアルタイムで株価を得られないので、このあたりは組み合わせがきまって来そうな気もするな。
ま、こんな感じだ。
SDKには主要なテクニカル分析のための関数がすでに用意されてあるので、テクニカルゴリゴリな人はすぐにでも開発に向かえる。
しかし、せっかくだからスクラッチで作ってみたいと思うじゃない。
カブロボサイトからリンクされているIBMのサイトには「月齢」を用いて売買をやるという、何ともユニークなロボットが紹介されていた。
ルールに「再現性を求めるため、乱数の使用は不可」というものがある。このため、売らない的な要素を含んだ売買はできないけど、月齢は確かに、その日その日で決まってくるからいいよな。
こうなれば、たとえば六曜とか高島暦とか、そういうマニアな動きを使って売買するのもおもしろいだろうな。
「さんりんぼう」は建設株売り。とか。
今回の目的はカブロボの制作を通して、Javaの理解を深めようというものである。あわよくばコンテストで勝ち残って、歴史に名を刻もうではないか。
ということで、制作状況は追ってこの場で紹介していこうと思う。時間がないので、ぼちぼちとは行かないが。
