Marketceteraを使ったオンライン証券取引システムを開設しよう♪

書き掛けだった http://d.hatena.ne.jp/masayang/20071107/1194473175 に加筆修正。
SourceforgeにてMarketcetera Trading Platformなるものを発見。

Marketceteraとは?

詳しくは公式サイト(英語)を参照。

  • 取引所・ECN・証券会社などに接続し、株価データを取得したり、株式売買の注文をしたりできる。
  • 複数の取引口座を設置し、それぞれ個別でポジションを管理できる→証券会社と同じような事ができる
  • 取引画面はWebベースのものと、Eclipseベースのものとがある。後者はスクリプトによるプログラミングが可能→機械化した取引が可能
  • 上記フィーチャは全てオープンソースの部品で提供される

いきなり本物の取引所や証券会社とつなぐのは大変なので、Marketcetera側がテスト用の「取引所もどき」を用意してくれている。ありがたい。

Marketcetera構成

  • OMS (Order Management System)
    • 取引システムの本体。クライアントから発注情報を受取り、取引先(証券会社・ECN・取引所)に発信。結果を受け取る。
    • J2EEベース(Spring)
  • TradeBase
    • Webベースの取引管理システム。
    • 取引に関する統計を取れる。
    • Web画面からの発注入力も可能。
    • Railsベース。
  • Photon
    • Eclipseの上に構築した、リッチインターフェースな取引画面。
  • Integration Tools
    • OMSクライアントを構築するための部品。
    • 実体はWindowsのCOM

動作環境

  • Integration ToolsはWindowsでないと動かない模様。
  • あとはJava(1.5)とRubyが動く環境があればオッケー。
  • 自分はMac(OS 10.4.10 + Sun JDK 1.5.0.07)とLinux(Gentoo 2.6.22-gentoo-r9 + Sun JDK 1.5.0.13)で検証した。

入手方法

インストール

基本はダウンロードしたやつを解凍するだけ。
VMWareでの起動時に「Copy」ではなく「Move」を選択しないとややこしいことになる。
ややこしいことになったら説明書を読め。

OMS設定

VMWareを起動して、ダウンロードしたOMS/TradeBaseを立ち上げる。といってもLinuxのコンソール端末が立ち上がるだけ。
marketcetera/marketceteraでログインできる。rootにはsudo su -で。
そして、入手したSenderCompIDを説明書通りに設定し、VMWareを再起動すればOMSが起動される。
Tips: loginプロンプトで ifconfig と打つと(パスワード不要)IPアドレスが表示される。
Tips: loginプロンプトで status と打つと(パスワード不要)各プロセスの状態が表示される。
Tips: いちいちVMWareのコンソールに切り替えるのは面倒なので、puttyなどを使ってsshでログインするとよいかも。

SenderCompIDの入手

Marketceteraが用意する「なんちゃって証券取引システム」につなぐさいにSenderCompIDという識別子が必要になる。
登録ページから利用者登録すると、SenderCompIDがメールで送られてくる。送られてきたSenderCompIDを
/opt/marketcetera/platform/conf/oms.xml
を編集して登録する。

   <bean id="defaultSessionID" class="quickfix.SessionID">
       <constructor-arg value="fixVersion"/>
       <constructor-arg value="送られてきたSenderCompIDをここに入れる"/>
       <constructor-arg value="MRKTC-EXCH"/>
   </bean>

登録したら、OMSを再起動。

# /etc/init.d/oms restart

Photon設定

Photonを起動。メニューのEdit->Preferenceを選択し、設置したOMSにつながるようにする。JMS Server URLのIPアドレス部分をVMIPアドレスに入れ替えればよい。

トレーディングごっこ

Photonから、OMSを通じて「なんちゃって取引所」の時価情報を入手したり、株やオプションの注文をだしたりできる。でも、「なんちゃって取引所」なので損もしなければ儲かることもない。


上記は株の発注画面。左のグラフはWebブラウザGoogle Financeを呼んでいるだけ。ここは改善の余地あり。


上記はオプションの発注画面。「なんちゃって取引所」にはIBMのデータしかないので、あまりおもしろくない。また、この画面からは単純なオプション発注しかできない。合わせ技(カバードコールとか、ストラドルとか)は、Photonの「スクリプト機能」を活用する必要あり。

スクリプト機能

まだ試していないけど、PhotonはRuby言語で制御できる。OMSから拾った時価情報を処理して、自動発注をかますことも可能らしい。

どうでも良いこと

PhotonもOMSもまだまだ「おもちゃ」みたいな感じがするけど、継続して注目したい。米国の場合、証券取引所(あるいはECNなど)と取引者の間はFIXプロトコルでつなぐことになっている。そしてFIXプロトコルは公開されている。プロトコルが公開されれば(そして参加者が増えれば)、そこにオープンソース製品が誕生する可能性がでてくる。MarketceteraのOMSはまさにそれだ。

証券会社が自らMarketceteraを使うかどうかは微妙だけど、機関投資家がMarketceteraをベースに取引システムを組んでいる事例もあるらしい。この場合、「中間介在業者」としての証券会社は不要、ということになる。オープンソース製品が既存ビジネスを破壊していく、という事例になるのでは。

*1:MacではVMWare Fusionを使った