はじめに
こんにちは、アルゴリズムトレードに挑戦中のIT系会社員です。
今回は「どの仮説を検証するか」を決めるまでの思考プロセスをまとめました。最初は5つの仮説を考えたんですが、実際に検討してみると「これは実装できない」「そもそも前提が間違ってた」みたいなことが分かってきて…最終的に2つの仮説に絞り込み、さらに新しい仮説も浮上したという話です。
そもそも何をやりたいのか
アルゴリズムトレードで実現したいことは3段階あります。
第1段階:翌日の株価が上がるか下がるかを予測(2値分類)
まずはこれ。シンプルに「明日の株価、上がる?下がる?」を当てたい。
なぜこれをやるか?
- 予測できれば:寄り付きで成行買い → 引けで成行売りで利益が取れる
- まずは「方向性」だけでも当たればいい
第2段階:どこまで変動するかも予測(回帰)
変動幅まで予測できれば、最安値・最高値で指値注文ができるようになる。
第3段階:リアルタイムな株価の動きをもとに取引を行う
最終的にはこれを目指したい。リアルタイムで株価を分析して、 APIで自動注文する本格的なアルゴリズムトレード。 取引量が増えれば、リターンも期待できそう。
本記事では第1段階目を挑戦するための思考過程になります。
最初に思いついた5つの仮説

「株価が上がるか下がるかを決める要因って何だろう?」と考えて、とりあえず5つの仮説を立てました。
仮説1:アメリカ株の動向に連動する
日本株(特に日経平均などの指数)は、前日の米国市場の影響を受ける(とよく聞く)。S&P500が大きく上がった翌日、日本の指数(日経平均やTOPIX)も上がるのでは
仮説2:先物価格を見れば予測できる
株価は先物価格に向かうって聞いたことがある。先物の価格やPTSなどを見れば翌日の値動きが予測できるのでは
後でも記述しますが、この時点では先物とかPTSについてよく分かってなかったです
仮説3:ニュース(決算など)の影響
良いニュース・悪いニュースで株価は動く。ニュースを自然言語処理(AI)で分析すれば、翌日の株価が上がるか下がるか予測できるのではないか
良いニュースが出ても材料出尽くしと市場から判断されて下がる場合もあるのでそこまで単純でもないかも
仮説4:取引参加者の属性を意識する
その銘柄を誰が取引しているか(機関投資家か個人投資家、長期目線か短期目線、年齢層)によって、適切な予測手法が変わるのでは
これ単体で上げ下げを予測するというより、これによって新たな仮説が生まれたり手法を取捨選択ができそう。サポート的な感じです。
仮説5:前日の値動きから時系列分析
過去の株価パターンから将来を予測する。上昇トレンド中なら翌日も上がりやすい?反転のタイミングは学習できる?
実際に検討してみて分かったこと

AIと相談しながら、これらの仮説が「本当に実装できるのか」を検証しました。その結果がこちら。
仮説1:実装できそう
結論:実装可能。
yfinanceというPythonライブラリなどで、S&P500と日経平均などの過去のデータが取得できる。予測用のAIモデルを作るというより、相関があるか確認したり、もし仮説通りに予測した場合の正解率は何%になりそうかなど統計チックな話になります。
また別記事に記載します
仮説2:そもそも前提が間違ってた ため 棄却
結論:株式市場の仕組みを勘違いしていた。
何を勘違いしていたか: 「寄り付きの値 = 前日の引け値」だと思っていた。だからPTSや先物を見れば「翌日の寄り付き」が予測できると考えていた。
実際はどうだったか: 寄り付きは需給で決まる。PTSの価格は、すでに実質的な寄り付き価格として市場に織り込まれている。
つまり、PTSを見ても「翌日の予測」にはならない。すでに反映されているものを見ているだけ。
また、先物も満期日は月単位が最小であり、日次のものはないためこれをもとに次の株価の上げ下げを予測するのは難しい。
株式市場の基本的な仕組みを理解していなかった。恥ずかしい!
仮説3:実装できそう
結論:実装可能。
Embeddingモデル等でテキスト情報をベクトルに変換できる(金融用もあるらしい)。それを入力とした機械学習モデルを学習させることができそう。
ニュースソースはBloombergやReutersの英語ニュース、またはYahoo!ファイナンスの日本語ニュースを検討中。
仮説1より決めるべきこと(Embeddingモデルや学習させる機械学習モデルは何にするか、何のニュースを使うかなど)が多いので、もう少し詳細を詰めたい。
仮説4:データが取れないため 棄却(ただし新発見あり)
結論:元の仮説は棄却。でも検討中に新しいアイデアが浮上。
なぜ棄却したか: 取引参加者の詳細属性(年齢、投資期間、機関投資家か個人投資家か等)は、日次で取得できない。そもそもそんなデータは公開されていない。(冷静に考えればされてたら怖い)
でも検討中に気づいたこと: 日次で取得できる情報の中で「信用情報」がある!(週ごとも)
- 信用倍率
- 信用残高 / 売買高レシオ
- 日証金の速報値
- 回転日数
これって、需給面からのアプローチじゃないか?
→ これが新仮説6(後述)として浮上しました。
仮説5:時系列分析が今回の目的に合わなそうなため棄却
結論:今回の目的には合わない。将来的には使えるかも。
なぜ棄却したか:時系列分析は「株価がどう動くか(変動幅)」の予測に向いていると思われる。でも今回の目的は「上がるか下がるか(方向性)」の2値分類。 目的が違うため、今回は除外。
(そもそも前日の値動きに次の日の上げ下げに関わりそうな情報が隠れていると思えない)
ただ、時系列データを入力とした分析は第3段階目で役立ちそうなため第2段階あたりでやっておきたい。
前日の値動きで最終的な上げ下げが分からなくても、どれくらい上下しそうかぐらいは読み取れそう。そう考えると、段階を進むごとに難易度が上がっていくというより、別種の難しさに変わるイメージなのかも
新たに浮上した仮説
仮説6:信用情報から需給を読む → 検討中
仮説4を検討している途中で気づいた新しいアプローチ。
仮説内容: 信用倍率、信用残高、回転日数などの需給バランスから、株価の上下を予測できるんじゃないか?
取得可能なデータの例:
- 信用倍率
- 信用残高 / 売買高レシオ
- 日証金の速報値
- 回転日数
状態: まだ着想段階。信用情報をもとに投資判断したことないため勉強が必要。
まとめ:次は仮説1の実装へ
まずは仮説1の実装を完了させようと思います。
アルゴリズムの作成・実装し、取引に活かせそうかの分析をした後、また思考過程や結果をブログで公開するつもりです。気長にお待ちください。
正答率が何%になるか、楽しみです。