自動取引
自動取引システムをどうやってテストしけばいいかの個人的整理メモ。 基本的に日時での取引戦略を前提にしているの+あくまで実装前の妄想なのでご注意ください。
stock trading testing
とかstock traiding continuous integration
とかで調べてもバックテスト系の話しか出てこない。
調べ方を変えてMLOpsの検証周りの話が応用できそうなので、そこら編からアイディアを持ってこれそう。
S/N比が小さすぎて短いスパンでのモデルの精度検証は難しいが、データ周りの検証は参考にできることが多いのではないか。
基本、だけど一人でユニットテストを整備しながら開発していくのは相当モチベーションが高く無いと維持できない。 特にデータが絡み始めるとテストのしにくさが極端に上がるし、Try and Errorを繰り返す分野なので維持コストが結構高い。 ある程度ステートレスな部分と重要な部分に労力割いて整備していくのがいいかもしれない。
データの書き換え無しに一通り問題なく回るか、を検証する。あたり前だがロジックが妥当かどうかまでは検証できない。 一方で簡単に実装できて、かつ機械損の回避という観点ではコスパは良さそう。
学習処理時と予測処理時で同一の日のデータを生成してみて問題なく動くかどうか比較する。 ただこれはそもそもtrainとpredictで可能な限りデータ生成部分を共通化するような設計にするべき。 共通化するというよりも、 学習時も予測時も同一のパイプラインでデータを生成するべき。
GoogleのMlOpsの文書読んでて大事そうだったので追加。 これはテストというよりはというよりは事後的なモニタリングにあたるが、使っているデータが妥当だったかコホート検証する感じ。 何はともあれ学習・予測に使ったデータはストレージして、事後的な検証を走らせることができるようにする。
こんな感じで整備していく。
ユニットテストに関しては設計と密に話が結びつきそうなので、そこの整理ができ次第まとめる。