生成AI にコードを書かせる前に、分析方針そのもの を相談するフェーズを置くと、後工程の手戻りが大きく減ります。本記事では、コード生成に進む前に通したい設計プロンプトを 5 ステップで整理します。

目次

  1. なぜ「設計フェーズ」を分けるか
  2. 5 ステップの全体像
  3. ステップ 1: 仮説を立てる
  4. ステップ 2: データの粒度を決める
  5. ステップ 3: 指標を選ぶ
  6. ステップ 4: 検証方法を決める
  7. ステップ 5: 罠を洗い出す
  8. 設計フェーズの成果物
  9. コード生成フェーズへの渡し方
  10. 設計フェーズで陥りがちな罠

なぜ「設計フェーズ」を分けるか

コード生成にいきなり入ると、次の問題が起きやすくなります。

  • 出力を見て「何を見たかったか」を後から思い出すことになる
  • 取得すべきデータの定義が曖昧で、何度もやり直しになる
  • 後で気づいたデータリーク・サンプル選定バイアスで結果が無効になる

設計フェーズはコード生成と切り離して、自然言語で分析の枠 を決めるための工程です。生成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 を壁打ち相手にして言語化する
  • 成果物は指示書ファイルに集約し、コード生成フェーズへ渡す
  • 「もっともらしい設計に流される」リスクは、自分の意図に立ち返ることで防ぐ