前回は、株シミュレーターを作り始めた理由を書きました。
AIにいきなり売買を任せるのではなく、まずは「AIがどんな銘柄を観察対象に選ぶのか」を毎日記録してみる。
そのための個人開発として、株シミュレーターを作り始めました。
ただ、作り始めてすぐに気づいたことがあります。
AIに判断させる前に、そもそも判断材料を集めないといけない。
人間が株価を見るときは、いろいろな情報を自然に見ています。
日経平均は上がっているのか。
TOPIXはどうか。
アメリカ市場は強かったのか。
為替は円安なのか円高なのか。
どの業種が買われているのか。
値上がり率の高い銘柄はどれか。
出来高が増えている銘柄はあるのか。
こういう情報を見ながら、なんとなく「今日は半導体が強そう」とか「地合いが悪いから無理しない方がいいかも」と判断しています。
でも、AIに判断させる場合は、その「なんとなく見ている情報」を、ちゃんとデータとして渡さないといけません。
ここが最初の大きな壁でした。
最初は、単純に株価だけ取れればいいと思っていました。
でも実際には、1つの銘柄の価格だけ見ても、あまり意味がありません。
その銘柄が上がっているとしても、市場全体が強いだけなのか。
特定の業種だけが買われているのか。
出来高をともなっているのか。
日経平均への寄与度が高い大型株なのか。
値上がり率ランキングだけで目立っている銘柄なのか。
見たい情報がどんどん増えていきました。
そこで、まずは公開されている市況情報を、個人の検証用に整理するところから始めました。
取得元や細かい処理方法は、利用条件や運用面もあるのでここでは詳しく書きませんが、日本市場の主要指標、海外市場の主要指標、為替、業種別の動き、ランキング情報などを確認できるようにしました。
ただ、実装してみると、これが思ったより地味に大変でした。
まず、データの形式がそろっていません。
ある情報は「現在値、前日比、騰落率」の形で取れる。
別の情報はランキング形式になっている。
さらに別の情報は、上位と下位が分かれている。
時刻が入っているものもあれば、日付だけのものもある。
値が文字列になっていて、数値として扱うには整形が必要なものもあります。
人間が画面で見るだけなら、それでも問題ありません。
でも、プログラムで扱う場合は違います。
「1,234.56」という文字列を数値として保存する。
「+1.23%」から記号やパーセントを外す。
取得できなかった値は無理に0にしない。
日付や時刻が古いものは、そのまま信用しない。
こういう細かい処理を入れないと、あとでAIに変な情報を渡してしまいます。
特に気をつけたのは、取得に失敗したときの扱いです。
データが取れなかったときに、何も考えずに前回の値を使ってしまうと、AIは古い市況を見て判断してしまいます。
逆に、欠損値を0として扱うと、それはそれで市場が大きく動いたような意味になってしまうかもしれません。
なので、取得できなかったものは取得できなかったものとして記録する。
成功したか、失敗したか。
何件取れたか。
どの処理でエラーが出たか。
こういうログを残すようにしました。
このあたりから、単なる「株価を見るページ」ではなく、ちゃんとした取得処理に近づいていきました。
最初は手動でボタンを押して、市況データを取得する形にしました。
ページを開いただけで外部アクセスが走ると、確認もしづらいし、意図しないタイミングでデータ取得が走ってしまいます。
そこで、画面を開いただけでは取得しない。
「データ取得」ボタンを押したときだけ取得する。
取得した結果は保存して、別の画面では保存済みデータだけを見る。
この形にしたことで、調査と確認がかなりやりやすくなりました。
その後、日本市場、海外市場、業種別の動き、日経平均への寄与度、ランキング情報などを分けて確認できるようにしていきました。
この時期の作業ログを見ると、ほとんどが「マーケットデータ確認」です。
何度も確認して、少しずつ扱える情報を増やしていった感じです。
派手なAI機能を作っているというより、土台をひたすら固めている時間でした。
でも、あとから考えると、この土台作りがかなり大事でした。
AIに何かを判断させるとき、ついプロンプトやモデルの性能に目が行きます。
もちろんそれも大事です。
でも、AIに渡すデータが古かったり、欠けていたり、意味がずれていたりすると、どれだけ良いモデルを使っても判断は怪しくなります。
株シミュレーターの場合も同じでした。
AIに「どの銘柄を観察するか」を考えさせる前に、
その日の地合い、ランキング、業種の動き、価格の鮮度をできるだけ整理して渡す必要がありました。
この段階では、まだAIに観察対象を選ばせるところまでは本番運用できていません。
ひたすら市況データを集めて、表示して、保存して、確認する。
正直、地味です。
でも、この地味な部分がないと、後のAI選定も、検証ログも、全部ふわっとしたものになってしまいます。
作っていて感じたのは、AI開発というより、まずは「AIに渡せる材料を整える開発」だったということです。
AIに考えさせる前に、考えるための材料を用意する。
その材料が本当に今日のものなのか、欠けていないか、数字として扱えるかを確認する。
株シミュレーター作りの第2段階は、そんな市況データ集めとの格闘でした。
次回は、集めた市況データやランキング情報を、どうやってAIに渡す形に整えていったのかを書いてみます。
※この記事は、個人開発している株価シミュレーターの作業記録です。
公開されている市況情報を、個人の検証用に整理している内容です。
特定の銘柄の売買を推奨・勧誘するものではありません。
実際の投資判断は、ご自身の責任でお願いします。