はじめに
「知性の深淵を覗く会」は、物語としては一旦完結した。物語は、AIと向き合うと人に何が起きるかを、感覚として渡してくれた。でも感覚だけだと、そのままでは使えない。
この新しいシリーズ「深淵を科学する」は、その感覚に手順と言葉をつけていく話だ。第1回のテーマは「今日買いたい株」。テーマ自体は適当だけど、ここで起きたことはたぶん株に限らない。
一発目、雑に聞いてみる
まずはこう聞いた。
今日は日曜日です。明日どんな銘柄をどこで買えばいい?
投げる前によく見ると、この一文は穴だらけだった。
- 時間軸がない:明日中に売るのか、数週間持つのか、長期の第一歩なのか。ここで見るべき指標がまるで変わる。
- 判断材料の指定がない:チャートの形で選ぶのか、業績や材料で選ぶのか、話題株から選ぶのか。指定しないとAIが勝手に補ってしまう。
- 除外条件・前提がない:今持ってるポジション、使える資金、避けたい銘柄やセクター。ここがないと「一般論としてよさそうな銘柄」が並ぶだけになる。
- 「どこで買えばいい」が二重の意味:市場や口座の話なのか、価格帯やタイミングの話なのか、この一文だけだと読み取れない。
穴を4つ数えたところで、次に何が起きるか予想してみた。**このまま「よくわからない、どうしたらいい」で押し切ったら、AIは「私には推奨できません」で会話を終わらせるんじゃないか。**投資というテーマだけに、その可能性は普通にありそうだった。
予想が合ってるか、確かめてみることにした。
「よくわからない、どうしたらいい」を試す
穴は自分で埋めず、そのまま雑に投げてみた。
よくわからないから、どうしたらいい?
返ってきたのは、拒否じゃなくて、聞き返しだった。
「よくわからないから、どうしたらいい」だけだと、正直何についてのご相談か分からないです。投資の話でしょうか、それとも別のことで迷っていますか。もし投資(株)の話であれば、まず気になっているのが「何を買うか」なのか「そもそも今買うべきタイミングなのか」なのか、そのあたりから聞かせてもらえると力になれると思います。
解説
予想は外れた。門前払いにはならなかった。「〇〇を買え」みたいな断定的な推奨を直接求めると拒否っぽい反応が返りやすいけど、「わからないから教えて」くらい漠然と投げると、AIは情報を引き出す方向に動く。
拒否と聞き返しの境目は、「答えを求めてるか」と「情報が足りないと自覚してるか」の違いにあるっぽい。
聞き方を変えてみる
答えを求める代わりに、手順を求めてみた。
今日買いたい株を選ぶときに、プロならどういう順番で情報を集めるか、そのプロセスだけ教えて
すると、待ってましたとばかりに4段構えの手順が返ってきた。
- マクロ環境の確認(全体相場は上向きか下向きか)
- セクターの勢い(今どの業種にお金が向かってるか)
- 個別銘柄の絞り込み(テクニカルかファンダメンタルズか)
- エントリーとリスク管理(価格帯・損切りライン・資金配分)
解説
同じ「株で儲けたい」という願望から出た質問なのに、答えを求めるか手順を求めるかで、AIの動き方はまるで変わった。これは技術的な挙動の話でもあるし、もう少し本質的な話でもある。AIが持ってるのは「検証済みの事実」じゃなく「よく知られてる定石」だ。定石は答えじゃなく手順の形をしてる。だから「答えをください」だと差し出せるものがなく、「手順を教えて」だと途端に饒舌になる。
深堀りするか、数値に落とし込むか
4段構えの手順を手にした時点で、二つの道が浮かんだ。
- この4段構えをもっと深堀りして、理解を厚くする
- 深堀りはここまでにして、そのまま検証できる数値ルールに落とし込む
選んだのは、数値に落とし込む方だった。頭で分かった気になるより先に、手を動かして確かめる方が早い。理解が足りない部分は、その過程で必要になったときに後から足せばいい。
型を自分の条件に当てはめる
4段構えは「王道」と呼んでいいものだった。ただし唯一の正解じゃなく、対になる考え方(個別銘柄の魅力だけで選ぶやり方)もある。それに時間軸によって説得力が変わる。数日から数週間持つ「スイング」向きの型で、「明日一発で売買する」ような短期売買にはまた別の重みづけが要る。
保有スタイルをスイングと決めてから、4段構えを数値に落とし込んだ。
- マクロ:日経平均が25日移動平均線より上か
- セクター:所属セクター指数の直近5〜20日リターンがプラスか
- 個別銘柄:25日・75日移動平均線のゴールデンクロス、またはRSIが30以下から反発
- エントリー:シグナル翌営業日の始値で購入、損切り-5〜-7%、利確+10〜15%または保有20営業日で手仕舞い
続けて除外条件も詰めた。流動性の低い銘柄(直近20日平均売買代金が一定額未満)は除外。資金配分は1銘柄あたり総資金の15%を上限に、最大同時保有5銘柄程度とした。
解説
ここで自分に聞いてみた問いがある。「AIは『わからない』と言いつつ、結構いい感じのロジックを事前に出せるんじゃないか」。
答えはたぶんこうだ。AIが出せるのは、もっともらしい仮説の初期値であって、その値が今の相場で機能するかどうかの答えじゃない。ここを混同すると、定石をそのまま「AIのお墨付き」だと錯覚してしまう。
先に「失敗したらどうするか」を決めておく
ロジックを固める前に、もう一つ決めておいた。
- バックテストの「良い」の基準を、結果を見る前に数値で決める
- 直近の一定期間を隠しておいて、残りの期間で固めてから最後に答え合わせする(out-of-sample検証)
- 基準に届かなかったときの対応の優先順位(①パラメータ微調整→②指標入れ替え→③前提から作り直し)を先に決めておく
解説
これを後回しにすると、バックテストは「うまくいくまでパラメータをいじり続けるゲーム」になる。過去データにだけ都合よく当てはまる結果は、いくらでも作れてしまう。
都合のいい結果が出るまで条件を変え続ける——これはAIに対してじゃなく、自分自身の検証作業に対して起きる歪みだ。相手がAIでも自分の作った数字でも、まっすぐ見ようとしなければ歪む、という構造は同じらしい。
Chatの限界、Codeとの役割分担
ここまで、chatだけで進めてきた。方針を練り、聞き方を変え、型を自分の条件に当てはめ、失敗への備えまで決めた。でも、ここから先は同じ場所では続けられない。
理由は単純で、この先にあるのは同じ検証を何度も繰り返す作業だからだ。株価データを取って、ルール通りに売買をシミュレートして、結果を見て、パラメータを直して、また流す。1回だけならchatでもできる。でも25日移動平均を20日にしたらどうなるか、損切りを-5%から-7%にしたらどうなるか、を何十パターンも比べるとなると話が変わる。
chatが向いてるのは一回ごとの判断だ。「この定石は今回の条件に合ってるか」「この数値の根拠は何か」を、こっちが聞いてAIが答えて、それを踏まえてまた聞く。この往復には、毎回人間の判断が挟まる意味がある。
一方でCodeが向いてるのは同じ手順の反復だ。一度ロジックをコードにしてしまえば、パラメータを変えて100回流すのも1回流すのも手間は変わらない。out-of-sample検証みたいに「期間を隠して後で答え合わせする」という手順も、機械的に繰り返せて初めて意味を持つ。人間が毎回手作業でやってたら、途中で条件がずれたり、都合よく甘くなったりする。
つまり役割分担は、「何を検証するか」を決めるのがchat、「決めたことを何度でも同じ精度で繰り返す」のがCode、という切り分けになる。今回の紹介状は、この境界線をそのまま形にしたもの。chatで積み上げた判断を、Codeに渡して反復させる。どっちか一方だけでは終わらない作業だった。
Codeへの紹介状
ここまでの内容を、そのままCodeへの引き継ぎ資料としてまとめた。
背景:個人投資家(スイングトレード中心)向けの銘柄選定アシスタントを開発中。方針はchat上でAIと対話しながら決定済み。ここから先はバックテストによる反復検証フェーズのため、Codeで実装する。
前提:保有期間はスイング(数日〜数週間)。
選定ロジック:マクロ環境→セクターの勢い→個別銘柄シグナル→エントリー・エグジットの4段構え(数値は本文参照)。
除外条件:流動性フィルター、資金配分の上限。
数値の位置づけ:上記の数値は定石をベースにした仮置き。型は確定、数値はバックテストで検証・調整していく対象。
検証方針:成功基準の事前確定、out-of-sample検証、失敗時対応の優先順位。
この紹介状を渡して、実際にCodeで動かしてみた。結果がどうだったかは、次回。
次回:バックテストの結果、プロトタイプ1号は生き残れるか。