生成AI にコードを書かせる前に、分析方針そのもの を相談するフェーズを置くと、後工程の手戻りが大きく減ります。本記事では、コード生成に進む前に通したい設計プロンプトを 5 ステップで整理します。
目次
- なぜ「設計フェーズ」を分けるか
- 5 ステップの全体像
- ステップ 1: 仮説を立てる
- ステップ 2: データの粒度を決める
- ステップ 3: 指標を選ぶ
- ステップ 4: 検証方法を決める
- ステップ 5: 罠を洗い出す
- 設計フェーズの成果物
- コード生成フェーズへの渡し方
- 設計フェーズで陥りがちな罠
なぜ「設計フェーズ」を分けるか
コード生成にいきなり入ると、次の問題が起きやすくなります。
- 出力を見て「何を見たかったか」を後から思い出すことになる
- 取得すべきデータの定義が曖昧で、何度もやり直しになる
- 後で気づいたデータリーク・サンプル選定バイアスで結果が無効になる
設計フェーズはコード生成と切り離して、自然言語で分析の枠 を決めるための工程です。生成AI を「壁打ち相手」として使います。
5 ステップの全体像
設計フェーズは次の 5 ステップに分けます。
1. 仮説 : 何を確認したいか2. データ : どの粒度のデータが要るか3. 指標 : どの指標で比較・判定するか4. 検証 : どうやって妥当性を確かめるか5. 罠 : 結果を歪める要因はどこに潜むかそれぞれ、生成AI に投げるプロンプトの型を見ていきます。
ステップ 1: 仮説を立てる
まず「何を確認したいか」を 1 文で書きます。仮説は 検証可能な形 に落とす必要があります。
分析の仮説を整理する手伝いをしてください。
【調べたいこと】日経 225 採用銘柄のうち、PER が業種中央値より低い銘柄を 1 年間保有した場合のリターンが、業種中央値より高い銘柄を保有した場合と比べて高いか。
依頼:- 仮説を 1 文に整理- 仮説の前提条件を箇条書きで列挙- 検証で答えられない範囲(限界)も列挙生成AI に整理を任せると、見落としていた前提が出てきます。返答を読んで「自分の意図と違う」「もっと狭くしたい」といった調整を加えていきます。
ステップ 2: データの粒度を決める
仮説が決まったら、必要なデータの 粒度・期間・範囲 を詰めます。
次の仮説を検証するために必要なデータを設計してください。
【仮説】(ステップ 1 で整理した仮説)
【設計観点】- 必要な指標と列名- 粒度(日次・月次・四半期)- 期間(いつからいつまで)- 銘柄範囲(母集団)- 欠損・上場廃止の取り扱い
返答形式: 表形式J-Quants API のような有限のデータソースから取れる粒度に合わせて、現実的な設計に落とすのが目的です。
ステップ 3: 指標を選ぶ
仮説とデータが決まれば、比較・判定に使う指標を選びます。複数候補を出してもらい、長所・短所を見比べます。
仮説検証に使う指標の候補を 3 つ挙げてください。
【仮説】(ステップ 1)
【データ】(ステップ 2 で整理した内容)
それぞれの指標について、次の観点で比較してください:- 計算式- 計算に必要なデータ- 結果の解釈のしやすさ- 既知のバイアス・限界
最後に、教育目的の検証として最も適切なものを 1 つ推奨してください。「推奨」を依頼することで、生成AI が選択基準を言語化します。納得できなければ、別の指標を再依頼します。
ステップ 4: 検証方法を決める
仮説・データ・指標が決まれば、検証手順を組み立てます。
次の仮説と指標を、データリークなく検証する手順を設計してください。
【仮説】(ステップ 1)
【指標】(ステップ 3)
【データ期間】2015-01-01 〜 2024-12-31(教育目的のサンプル)
依頼:- 学習期間 / 検証期間の分け方- ポートフォリオ構築のルール(銘柄数、リバランス頻度、等ウェイトなど)- ベンチマーク(比較対象)- 集計するメトリクス(累積リターン、シャープレシオ、最大ドローダウンなど)- 1 サイクルの擬似コード(コードは書かなくてよい、流れだけ)擬似コードまで返ってきたら、コード生成フェーズに進む準備が整います。
ステップ 5: 罠を洗い出す
最後に、結果を歪める可能性のある 罠 を列挙します。生成AI は「ありそうな罠」を網羅的に挙げるのが得意です。
次の検証で結果を歪める可能性がある罠を、可能な限り多く列挙してください。
【検証手順】(ステップ 4)
観点:- データリーク(将来情報の混入)- 生存者バイアス(上場廃止銘柄の扱い)- ルックアヘッドバイアス- 取引コストの省略- スリッページの省略- 業種偏り- サンプル期間の特殊性
それぞれについて、検出する方法と緩和する方法を 1 行ずつ添えてください。「検出する方法」を一緒に出してもらうのが重要です。罠の存在だけ知っていても、コード上で気づかなければ意味がありません。
設計フェーズの成果物
5 ステップを通すと、次の成果物が手元に揃います。
| 成果物 | 内容 |
|---|---|
| 仮説 | 検証可能な 1 文の主張 |
| データ要件表 | 列名・粒度・期間・銘柄範囲 |
| 指標カード | 採用指標の計算式・限界 |
| 検証手順 | 学習 / 検証分割・ベンチマーク・メトリクス |
| 罠リスト | 検出方法と緩和策 |
これらを 指示書ファイル(#7-6「プロジェクト用 CLAUDE.md / instructions の書き方」)に追記 すれば、コード生成フェーズで生成AI が同じ前提を参照できます。
コード生成フェーズへの渡し方
設計フェーズで作った成果物を、コード生成プロンプトの 入力 として渡します。
次の検証手順を Python で実装してください。
【手順】(ステップ 4 の検証手順をそのまま貼る)
【データ要件】(ステップ 2 のデータ要件)
【コード制約】- pandas 2.2 系- main 関数を持つ単一スクリプト- 罠リストの "データリーク" について、コード内で防止策をコメントで明記- バックテスト結果は CSV と PNG(累積リターンチャート)で出力設計が言語化されているので、コード側の依頼が短くなり、ブレも減ります。
設計フェーズで陥りがちな罠
設計を生成AI に任せると、次のような落とし穴が出ます。
- もっともらしい仮説に流される(自分が確認したかったことから外れる)
- 網羅的すぎて重い検証になる(教育目的なら絞る)
- 罠リストが長すぎて手が止まる(優先度を付ける)
対策は次の通りです。
- 1 ステップ進むごとに「自分の意図と一致しているか」を声に出して確認する
- 検証範囲を 時間 / 銘柄 / 指標 のいずれかで小さく絞る
- 罠は 検出方法がある罠 / ない罠 の 2 段に整理する
まとめ
- 設計フェーズは「仮説 / データ / 指標 / 検証 / 罠」の 5 ステップで進める
- 各ステップは生成AI を壁打ち相手にして言語化する
- 成果物は指示書ファイルに集約し、コード生成フェーズへ渡す
- 「もっともらしい設計に流される」リスクは、自分の意図に立ち返ることで防ぐ