カブロボグリッドのRyan論文まとめ
ネットワーク情報システム研究室のスタートアップとして、去年同じ研究室にいたRyanがやっていたカブロボグリッドにとりあえず着手することになりました。
これはRyanによる卒論のまとめおよびメモです。
アブスト
システムトレードとは、投資を行う際に裁量を排し、売買ルールに従って取引をする方法。株取引アルゴリズムとパラメータの組み合わせ(「パラメータAとBの除がCになれば売る」など)。この探索空間は膨大。これまでは人間の感覚によるヒューリスティックな選択がされてきた。
本研究では売買ルールの全探索のためにカブロボグリッドを構築し、実装と評価をした。
1.背景と目的
システムトレードの気運が高まっている。例えばトレードサイエンス株式会社では2006年から仮想市場でのカブロボコンテストを実施しているし、野村総研では大口の注文をシステムトレードを介して証券取引所に取り次ぐシステムを開発、運用している。取引アルゴリズムはルールとパラメータの組み合わせによるが、ルール同士を組み合わせることも可能であるため、探索空間は膨大であり、これまでブルートフォースなアプローチは取られてこなかった。
そこで、グリッドを利用してアルゴリズムの探索を行うシステムを提案、実装、評価する。そのためには
1)探索アプリケーションのグリッド化
2)全体を管理するグリッドの構築
が必要であり、本研究では2を行う。
2.要素技術
A)BOINC
汎用グリッドフレームワーク。TANPAKU、SETI@HOME、BBC Climate Change Experimentなどで採用。クライアント数百万台での大規模運用も可能。
・サーバ
クライアントの状態把握、データの受け渡し、ワークユニットとリザルトの管理。
うち前者二つは提供され、後者二つは自前で用意する。
・ワークユニット
実行すべき計算を表現したルール。リザルトを抽象化したもの。
常に十分な数のワークユニットがサーバ上に存在するように、ワークユニットジェネレータにより定期的に生成される。
・リザルト
ひとつの計算を表現したもの。必ずしも計算後の結果ではない。
ひとつのワークユニットからは必ず同じリザルトが生まれるが、冗長化のためにデフォルトで五つのリザルトが生成される。
・クライアント
コアクライアント(BOINCが提供)とクライアントアプリケーション(プロジェクトが提供)。
コアクライアントは各々のマシンで直接実行できるネイティブコード形式でなければいけない。
B)カブロボ
トレードサイエンス株式会社が配布している取引シミュレーションソフトの一部。KaburoboSDK(Java)またはKaburoboBuilderLiteでカブロボを開発。2004~2006の株価データでのシミュレーションが可能。
3.カブロボグリッドの構築
サーバからクライアントへ取引ルールを渡し、配布されているシミュレーション機能で評価させる。クライアントはカブロボSDKとそのラッパー。
・株価データは本来単一でいいのだが、カブロボのインスタンスによってロックされるため、一台のクライアントマシン内で並行して走らせるために各リザルトに株価データを添付することにした。
・カブロボはシミュレーション結果を標準出力にしか出してくれないため、ファイルへリダイレクトする機構を実装。
・閉じた環境であるためリザルトの冗長度を5から2に変更。
・ワークユニットジェネレータを作成。
4.評価と考察
ネットワークとBOINCによる二つのオーバーヘッドが考えられるが、今回検証したのはBOINCのほうのみ。評価はサーバ1台、クライアント1台。結果、1リザルトあたりの処理時間はカブロボ単独148s、BOINC利用時179sとなった。(全体の18%)
5.今後の課題
ワークユニットジェネレータを改良し、より多くのワークユニットを生成できるようにする。
シミュレーションで使える銘柄を多くし、リアリティを増す。
以上。
感想など
・関連研究を明らかにしたい。
・BOINCのその他の利用例と基本的なグリッドのセオリーを調べたい。
・ヒューリスティックなアルゴリズムを利用することも検討。
・ルール同士の組み合わせが可能だというが、それなら探索空間は無限?
・もし有限ならばその大きさの概算がほしい。
・株価データを何回も送るのは通信がしんどい?そうでもない?
・今回生成できたワークユニットの数が少なかった理由は何?
・Low latencyの方向へ進めるならいじるのはワークユニットジェネレータあたりか。
・もっとクライアント数を増やして試したい。ってLow latencyするなら必然的に増やさねば。
・ということはスケジューリングや分配方法に頭をひねるべき
・そこへきてBOINCはどれほど世話を焼いてくれるのか?
・グリッドを使ったほうが人間ヒューリスティックよりもよいアルゴリズムが見つかるというのが論点ならば、計算速度だけではなく出てきた結果の有効性によって評価するべき。
・たとえばSETI@HOMEなら全世界の人間が参加しても困ることはないが、全世界の人間がこれをやりだしたらどないしまんねんという根本的な疑問。そもそもにおいて一部の人だけが使うから良いという技術?ただの個人的な倫理問題だが重要かも…。
・それにしても研究室にグリッド関連の書籍が少ない。
on April 16th, 2008 at 22:50
・関連研究を明らかにしたい。
早稲田の人が近しいことをやろうとしてたような。論文名忘れた。
京大の人で株取引アルゴリズム探索にニューラルネットを使った研究がある。
・BOINCのその他の利用例と基本的なグリッドのセオリーを調べたい。
SETI@homeのサーバをハックすべし
・ルール同士の組み合わせが可能だというが、それなら探索空間は無限?
yes.そのため、探索空間の絞り込みも考える必要があるが、それでまた一本論文が書ける。
・株価データを何回も送るのは通信がしんどい?そうでもない?
何回も株価データを送ると通信はしんどい。これは僕の技術不足。マルコさん、実装を考えてください。
・今回生成できたワークユニットの数が少なかった理由は何?
時間不足。実装してる時間がなかったです。。
・もっとクライアント数を増やして試したい。ってLow latencyするなら必然的に増やさねば。
僕が作った時点で、研究室内のPCは全部参加可能だった。
だけどワークユニットの数的に、配分がうまくいかなくなる可能性があったので、しなかった。
今回は、全世界へ公開までお願いします。
・ということはスケジューリングや分配方法に頭をひねるべき
・そこへきてBOINCはどれほど世話を焼いてくれるのか?
BOINCのパラメータをいじるだけでスケジューリング、分配方法までやってくれます。ただ、多少癖があるような。。
・グリッドを使ったほうが人間ヒューリスティックよりもよいアルゴリズムが見つかるというのが論点ならば、計算速度だけではなく出てきた結果の有効性によって評価するべき。
おっしゃるとおり。時間不足で押し出しでした。
・たとえばSETI@HOMEなら全世界の人間が参加しても困ることはないが、全世界の人間がこれをやりだしたらどないしまんねんという根本的な疑問。そもそもにおいて一部の人だけが使うから良いという技術?ただの個人的な倫理問題だが重要かも…。
それについては僕も考えた。うまくいけば(うまくいってるかわからんけど)株式市場が成り立たなくなる。
・それにしても研究室にグリッド関連の書籍が少ない。
グリッド全てをやろうとすると時間がなくなるので注意。
on April 17th, 2008 at 21:05
ありがとうなー。週明けあたりに直接聞こうと思っててん。
まぁきっとまたお世話になりますわ。