現状の整理と今後の計画 (1)

mmbotを調べた直後の昨日はmmbotからやると言ってましたが、ultraistterさんの戦略を調べたせいでultraistterさんの真似から挑戦したくなってきてしまいました。影響されやすい……。今後何をやっていくか頭を整理させてみようと思います。

最初の目標

まず、最初の目標としては、とにかく「プラスの収益を上げるbotを実稼働させる」でいこうと思っています。実際に動かしてみることで分かってくることは多そうです。とはいえお金が減るのは悲しいので、稼ぎは少なくて良いので、とにかく負けず、ほんのちょっと勝つ、ぐらいをまずは目指したいと思います。

そのために何からはじめる?

askとbidを両方入れるmmbotではなく、ultraistterさんを真似してLとSで別に考えるbotでいこうと思います。

1つ大きいのは、在庫管理が必要ない点です。mmbotの戦略の情報を無料の範囲で調べていると、どうも在庫管理はかなりヒューリスティクス的なアプローチになっていることが多く気になっていました。しかし、ここを真面目に学習なり最適化なりするのはなかなか簡単じゃないなと。それに対し、ultraistterさんアプローチでは、ポジションを手放すまでを単体アクションだと考えて、それを報酬としているので、状態を考える必要がなく、学習が非常にシンプルになっています。(正確には、証拠金からくるポジションのボリュームの合計の上限があり、そこからくる機会損失がモデリングできてないことになりますが、良い妥協なように思います。)

強化学習?教師あり学習?

最初から強化学習でいくか、まずは教師あり学習で分類でいくかは悩みどころです。

強化学習:ultraistterさんを見習い、行動(ロング,ショート,ノーポジ)と行動に使うパラメータ(INの指値位置、利確幅、損切り幅、各種タイムアウト)の組み合わせを出力させる。

分類:「ロング,ショート,ノーポジ」だけを分類させる。「INの指値位置、利確幅、損切り幅、各種タイムアウト」は決め打ちにする。

一見、色々なパラメータをNN任せにできるので楽そうな強化学習のほうが考えることが少なそうです。しかし、結局、強化学習でも、どのようにモデリングするかという問題が実は結局出てくるように思います。例えば、指値位置は、絶対値で出させることは恐らくなく、適応的なスケーリングをしているんじゃないかなと。というかツイートでMultiDiscreteと仰ってるので、少なくとも、何個の行動に分けるか、各行動はどの値なのか、というの考えないと行けないですよね。そういうスケーリングのさせ方を考えて調整して……ということをどちらにせよするとなると、まずは分類からいくほうが楽かもしれないですね。

分類から行く利点は、学習の設定がシンプルなので準備がしやすいことが1つ。また、強化学習とは異なり使える機械学習アルゴリズムが多いので、特徴量エンジニアリング等も楽になるという利点もありそうです。

データは?特徴量は?

ultraistterさんは、5分のwindowの約定情報を長らく使ってらっしゃったようでした。データとしてつい色々なソースを使いたくなっちゃいますが、まずは約定情報のみでいくという縛りを課してやってみるのは良さそうです。

特徴量として何を使ってらっしゃるのかは一周した限りあまり分かりませんでした。ここの試行錯誤は必要そうです。

これからやること

データ集め: realtime APIを貯める環境は最低限できているが、レイテンシ把握できるよう、受信の実時間を保存できるようにする。

学習データを作れるようにする:windowをずらしながら特徴量を作り、正解ラベル付けをする。

検証を実装する:leakしないように検証データを切り出し、検証できるようにする。

学習の試行錯誤をする:主に特徴量エンジニアリングをすることになるかなと思いますが、勝てそうな結果が出てくるまで試行錯誤になりそうです。

botを実装する:realtime APIを受け取りながら、リアルタイムで特徴量を作って、機械学習器の推論をかけて、結果を見てアクションをする。

しばらく我慢してやらないこと

遅延やSFDなど例外的な状況への対応:まずは人間の監視のもとでのみ実行すれば良いかなと思うので、例外的な状況に対する対応は限定的でも良いかなと。

数時間ごとのモデルの再学習:これもまずは手動で。

バックテストの実装:これは、現段階で果たして可能&必要だろうか?発注をまだ1度もしていないため、発注後の挙動が全く分からない。ちょっと最低限のbotが出来た段階で少し動かして、遅延等がどうなるのかを把握しないと、あまり意味のあるものが作れなそう。













この記事が気に入ったらサポートをしてみませんか?