前回は、複数のAIモデルで見方を変えて比較する仕組みについて書きました。
同じ市況データを、標準的な見方、攻め寄りの見方、防御寄りの見方、慎重な見方などで比較する。
こうすることで、AIの判断をひとつの答えとしてではなく、複数の視点として観察できるようになりました。
ここまで来ると、次に必要になるのは「毎日続ける仕組み」です。
手動でボタンを押して動かすだけでも、開発中の確認はできます。
ただ、毎日同じ時間に市況データを集めて、AIに判断させて、結果を保存するとなると、手動運用ではだんだん厳しくなります。
最初のうちは、
「今日は動かしたかな?」
「昨日は忘れてなかったかな?」
「データ取得だけして、AI実行を忘れてないかな?」
という感じになります。
これでは検証ログとして安定しません。
株シミュレーターで見たいのは、たまたま思い出した日に動かした結果ではなく、できるだけ同じ条件で毎日積み上げたログです。
そこで、Cronで自動実行する運用に進めることにしました。
Cronというのは、サーバー側で決まった時間に処理を実行するための仕組みです。
たとえば、毎朝決まった時間に処理を動かす。
平日だけ動かす。
ある処理が終わったら、その結果をログに残す。
こういう定期実行に使います。
ただ、いきなり全部をCronに任せるのは少し怖いです。
画面から手動で動かしていた処理を、そのまま自動実行に回すと、途中で何が起きたのか分かりにくくなります。
画面では見えていたエラーも、Cronだと気づかないまま流れてしまうかもしれません。
なので、まずは処理をCLIから実行できる形に整理しました。
CLIというのは、ブラウザ画面ではなく、コマンドとして処理を実行する入口です。
市況データを集める。
集めたデータを確認する。
問題がなければAI比較を実行する。
結果を保存する。
実行結果を短いログとして出す。
この一連の流れを、画面操作なしでも動かせるようにしました。
ここで大事にしたのは、処理を分けることでした。
市況データを取得する処理。
AIに判断させる処理。
AIの結果を保存する処理。
仮想売買の結果を確定する処理。
全部をひとつの巨大な処理にしてしまうと、どこで失敗したのか分かりにくくなります。
逆に、役割ごとに分けておくと、
「市況データ取得までは成功した」
「AI比較の前で止まった」
「AIは実行されたが、保存で問題が出た」
というように追いやすくなります。
また、Cronで動かす場合は、二重起動にも注意が必要でした。
前の処理がまだ終わっていないのに、次の処理が始まってしまうと、同じ日のデータが重複したり、途中の状態で上書きされたりする可能性があります。
そこで、同じ処理が同時に走らないようにする仕組みも入れました。
こういう部分は、ブログで見ると地味ですが、毎日運用するにはかなり大事です。
さらに、実行結果はできるだけ短く、あとから確認しやすい形で残すようにしました。
成功したのか。
一部だけ成功したのか。
失敗したのか。
どの日付の処理だったのか。
AIは実行されたのか。
何件成功して、何件失敗したのか。
こういう情報が残っていれば、あとでログを見たときに状況を追いやすくなります。
自動実行で一番怖いのは、失敗そのものより、失敗に気づけないことです。
処理が止まっていた。
データが古かった。
AIが実行されていなかった。
保存されていなかった。
でも画面を見ないと分からない、という状態だと運用が続きません。
だから、Cronで回すときは、処理そのものだけでなく、確認しやすさもセットで考える必要がありました。
最初は、AI比較だけを定期実行する形にしました。
その後、市況データの取得からAI比較、日次ログの保存までをつなげる親処理を作りました。
つまり、毎日決まった時間に、
市況データを集める。
必要なデータがそろっているか確認する。
問題なければ複数のAIモデルで比較する。
結果を日次ログに保存する。
という流れです。
この形になると、かなり「シミュレーターが自分で回っている」感じが出てきます。
もちろん、完全に放置できるわけではありません。
外部の市況情報が更新される時間は日によってずれることがあります。
祝日や休場日もあります。
データが取れない日もあります。
AIに渡す材料が足りなければ、無理に判断させない方がいい日もあります。
なので、自動化したから終わりではなく、自動化したうえでログを見ることが大事でした。
毎日動いているか。
見送りが多すぎないか。
失敗が続いていないか。
データ不足で止まっていないか。
想定どおりの日付で保存されているか。
こういう確認をしながら、少しずつ運用を安定させていきました。
作っていて感じたのは、Cron化は「便利にする作業」というより、検証の質をそろえる作業だということです。
手動で気が向いた日に動かすだけだと、どうしてもムラが出ます。
でも、決まった時間に同じ流れで動かすと、あとから見比べやすくなります。
AIの判断を検証するには、AIそのものだけでなく、実行タイミングや入力データの状態もそろえる必要があります。
そのために、Cronで毎日回す運用はかなり大きな一歩でした。
株シミュレーター作りの第6段階は、手動実行の実験から、毎日積み上がる運用ログへ進めるための自動化でした。
次回は、実際に運用してみて気づいた「朝に判断して当日前場で売る」モデルの違和感と、そこから「大引け買い・翌日前場売り」へ変更した話を書いてみます。
※この記事は、個人開発している株価シミュレーターの作業記録です。
公開されている市況情報を、個人の検証用に整理している内容です。
特定の銘柄の売買を推奨・勧誘するものではありません。
実際の投資判断は、ご自身の責任でお願いします。