大きな構成

今作っているシステムのシミュレータの構造変更をしようと思って、ぼんやりと妄想をめぐらせる。やっぱり部品をつけかえできるような感じがいいなあーとか、今パラメータをHUBに相当するモジュールに渡しているけど、仕掛シグナルのパラメータやら利食いのパラメータやらごちゃごちゃでこれを整理したいなーとか。

  • 中心になるのはHUBモジュール。ここが時系列データを受け取って、仕掛モジュールが「仕掛けろ」と言えば仕掛て、手仕舞いモジュールが「手仕舞え」と言えば手仕舞い
  • HUBはそれぞれのモジュールの結果をイベントとして駆動していく状態マシンとして実装。
  • 仕掛と手仕舞い指値やら成り行きやらをパラメトライズしてそれぞれのモジュールからHUBに返す。
  • HUBはもらった仕掛・手仕舞い指示を市場サービスモジュールにお願い。市場サービスモジュールは約定できたかできなかったかを返す。
  • 約定できたら、結果を履歴・統計サービスに渡してDBに登録。都度各種投資指標を更新。今儲かっているのか、損しているのか、どれぐらいの割合なのか、ばらつきはどんなもんか、等々を統計情報として提供。個々の明細はDBにPsudo Tradeとして登録。
  • 仕掛モジュールはシグナルモジュールとフィルターモジュールの2つで構成。それぞれの判断に基づいて仕掛けるかどうかを決める。ここでは買いなのか売りなのか判断。あとエントリーレベルとして指値でいくか、成り行きでいくか。指値の場合は具体的な値段まで判断して戻す。
  • 手仕舞いモジュールは利食いモジュールと損切りモジュールの2つで構成。それぞれ利食いをするべき価格と損切りを行うべき価格を戻す。「何が何でも明日手仕舞いで!」という場合は価格ではなく「成り行きで!」という指示を戻す。一定のレベルを確保したい時は指値−不成引けもOK。
  • つーか、カブコムで使える全ての指示ができるようにしたい。もちろん前場後場の価格がわからないのでそれに依存するやつは実装できないけど・・・
  • 手仕舞いモジュールで出てきた手仕舞いのレベルで市場サービスに反対売買の指示をだす。約定すれば終わりだし、約定しなければ継続。
  • これが1つのマーケット(銘柄)について。多数のマーケットの処理が必要ならHUBのインスタンスをそれぞれのマーケット毎に生成してぶんぶん回す外側のロジックを記述する。
  • 資金管理戦略を実装するとすれば、この外側になる。個々のHUB経由で、Psudo Tradeの結果、どんな成績を残しているのかを元にリスクを評価。シグナルが出た時いくら投資するか判断。
  • HUBの中で実行するトレードをPsudo Tradeとしているのは、資金管理戦略と合わせた実際の投資行動に近いお金の動きと、純粋に仕掛と手仕舞いのシステムの振る舞いを分けて評価できるようにする為。
  • システムの振る舞いを過去の戦績として評価して「このマーケットなら投資してもいいかな」という判断を外側で実装して試したいというのもある。
  • パラメータはファイルに落として、シグナル、フィルター、利食い損切りのそれぞれのモジュールがコンストラクタで読み込み。
  • パラメータの組み合わせの総当りをやるときは、外側のモジュールでこのパラメータファイルを、一回りするごとに書き換えて、次の一回りを実行。
  • 仕掛モジュールが使うシグナルモジュールとフィルターモジュールは、HUBモジュールで作ったシグナルとフィルターのインスタンスコンストラクタで引き渡して、それを使うようにする。HUBで実際に使うクラスを宣言する記述をして、このクラス名を書き換えるのを部品の付け替えと考える。

んー、こんな感じかな。