Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)

Avatar for tomo tomo
December 26, 2025

投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)

2025/12/26に開催されたマケデコセミナー「投資戦略を量産せよ 2」の資料です。

Avatar for tomo

tomo

December 26, 2025
Tweet

More Decks by tomo

Other Decks in Technology

Transcript

  1. Strictly Confidential. 経歴も久しぶりにお話しておきます。 改めての自己紹介 2 北山 朝也 (きたやま ともや) AlpacaTech株式会社 取締役兼ソリューション事業部

    部長 ・オルタナティブデータ推進協議会 理事 ・マーケットデータ分析コミュニティ「マケデコ」主催 10年間ソニーに在籍し、2015年よりAlpacaに参画。20以上の 金融機関、例えばMUFG、東京海上などとAI研究開発プロ ジェクトをリード。 AlpacaJapanの代表取締役を経験後、2024年生成AIビジネス が大きく立ち上がるタイミングでAlpacaTechでソリューショ ン事業部を立ち上げ。生成AIを活用した投資戦略設計や金融 商品のマーケティング、DXプロジェクトを多数推進。 過去にリリースされたAIプロダクト 債券運用にAI、東京海上日動 1カ月後金利予測 東京海上日動 中小企業向けに為替 AI予測 三菱UFJ銀行 アルパカ技術とブルームバーグが持つリアルタイム 市場データを融合した新たな価格予測アプリ ブルームバーグ 進化したロボアドバイザー「FOLIO ROBO PRO」 FOLIO
  2. Strictly Confidential. 前回イベント「投資戦略を量産せよ!!!」のおさらい 2025/7/3に開催された「投資戦略を量産せよ!!!」で2つの発表を通して 以下の問題点が共有されました。 4 • AlphaMiner : 定量・定性的な投資戦略構築エージェントの開発

    from いとう(https://x.com/k1ito ) • 株価予測の最強アーキテクチャはどれだ?AIエージェントによる探索 from UKI(https://x.com/blog_uki) LLMにオーガニックに投資戦略を考えさせるとバラエティが出ない(似たようなアイディアしかでない) → アルファの生産ラインとして考えた場合、バラエティをどのように出すかが課題となる
  3. Strictly Confidential. 通常のLLMの使い方だと、どうして似たようなアイディアが集まるのか? • そもそもLLM単体のブレストは、参照できる情報が(学習コーパス+プロンプト+過去におもい ついたアルゴ)に限定されている ◦ データ自体に新規性があればシンプルな分析でいけるのでデータを揃えるアプローチはあり だが、データの拡張は別トピックとする •

    LLMの基本は次トークン予測(確率の高いものをそれっぽく並べる)なので、放っておくとよく 見える・説明しやすい・無難な解に収束する ◦ このパターンにはまるとたとえば短期リバーサル+αを利用するモデルとかが作られてしま いバラエティがでない • 生成物をバックテスト等で選抜する仕組みが必要 ◦ あまりにもバックテストをしすぎると最適化をしてしまうが、少なくとも自分のアイディア のフィードバックがないとアイディアの評価ができない 「投資戦略を量産せよ!!!」の雑談パートで中川教授をお招きしてその理 由について一緒に考察しました。 5
  4. Strictly Confidential. AlpacaTechが開発したコンペ型AIエージェントフレームワークMixSeekとは AIエージェントのフレームワークとして投資戦略のバラエティをだしたい 「MixSeek」の開発に着手: OSSとして基本部分は公開「MixSeek」で検索 6 • AIエージェントによるチームの組成。チームを束ねるAI エージェントを「リーダーエージェント」、チームに所

    属する専門家のエージェントを「メンバーエージェン ト」として、各チームがタスクを実行(専門家が必要な 理由は後ほど) • 各チームは自分たちの成果物を提出。サブミッションし た成果物は評価・スコアリングされる • 評価結果はスコアが管理されるリーダーボードに掲載。 これらの結果を元にプロンプトが生成され次のラウンド が開始。 • Pydantic AIを採用し複数のモデルをエージェント化 一貫した方法で利用可能 ◦ LLMの挙動をLogfireで分析できるのがかなり便利 慣れ親しんだKaggleの フォーマットを採用
  5. Strictly Confidential. 投資戦略量産のMixSeek稼働条件 ユニバース: プライム銘柄対象 データのスプリット train: 2015~2021 valid: 2022~2023

    test: 2024~2025(ここはEvaluatorが評価に利用するのみで一切エージェントは見れない) 利用可能なデータ ohlcvデータ return(train期間のみ) Evaluatorの評価方法 testデータに対してTime Series API経由で評価する手法を採用 これによりモデルはズルをするのが非常に難しくなる 翌open2closeリターンと単一の提出シグナルとの日次順位相関を計算(当日終値までみて、翌日のOpen2Closeを あてるいわゆる寄り引けの問題) 機関投資家が狙わないリターンなので難易度が適切と想定 最終評価値は日次順位相関係数のシャープレシオ ボラティリティの影響があるので、リスク控除するべきだが問題を簡略化 MixSeekの停止条件 最大ラウンド到達(設定可能、現在は4) ラウンド継続判定を行うLLMに、改善が見込めないと判断された場合 タイムアウト設定値(設定可能、現在は1時間)を超過した場合 分析のためのコード実行方法 コード実行機能をメンバーエージェントのみに提供しておき、リーダーはメンバーに定性的に「こんな感じで 分析して」という指示を投げることでリーダーエージェントのコンテキストを汚染することなく試行錯誤でき る TimeSeries APIを利用し、翌open2closeリターンを狙うモデルをまずは量産 11
  6. Strictly Confidential. TimeSeries APIの説明 NanoBananaにお願いして生成してもらったTimeSeries APIの説明 (内容は抽象的ですが概ねあってます) 12 • 実務的にはデータ分析をきちんとAIエージェントに行わせるにはコンペ型の設計以外は難しい

    • TimeSeries APIはKaggleが長い歴史の中で生み出した時系列データをリークなしでコンペ可能にするほぼ唯一の 方法であり、これで評価する以外に良いアプローチがあるならKaggleが採用しているくらいには安定 • さらにTimeSeries APIの中でCPCVする方法なども検討中
  7. Strictly Confidential. 評価に利用するモデル MixSeekで今回の課題にチャレンジするリーダーボードで競い合うモデル達 13 会社 モデル 100万トークン あたりのコスト (入力トークン

    ) コメント OpenAI GPT 5.2 $1.75 言わずと知れた絶対王者 ChatGPTの最新版(Proではない) Google Gemini 3.0 Flash Preview $0.5 最近追加されたので急遽追加。実はコーディングでは Gemini 3.0 Proより優秀らしいので期待が大きい。 Claude Sonnet 4.5 $3.0 みんな大好きClaude Codeで設計に使っているいるやつ。 Haiku が怪しい結果だったので、コスト的には一個上のモデルだが参 加。 Claude Haiku 4.5 $1.0 みんな大好きClaude Codeで実装に使っているいるやつ XAI Grok 4.1 reasoning $0.2 他のAIだと回答しないことも言ってくれるイーロン・マスクの言論 の自由を体現したようなやつ • こうやってみるとGemini 3.0 FlashとGrok 4.1 reasoningのコストパフォーマンスがいかれていることがわかる • GPT 5.2 Pro/Gemini 3.0 Pro/Opus 4.5のような一番上のモデルはそもそもイテレーションを回すという性質上、 実行時間が長いためタイパが非常に悪いので今回は採用しない(なにか違う用途では利用するかも)
  8. Strictly Confidential. 全体スコア評価 Gemini 3.0 Flashが圧倒的な強さを見せて優勝、2位はGrok 4.1 reasoning! 15 モデル

    最終スコ ア 最終的に提出した戦略 特徴 Gemini 3.0 Flash Preview 0.24🥇 Gapリバーサルを流動性と 価格位置で重み付け Round 1で「Gap + MA乖離」の逆張りがいきなりハイスコア (0.24)を記 録。以降、このロジックをベースに「流動性」や「ボラティリティ」によるフィル タリングや重み付けで洗練を続けた。 Grok 4.1 reasoning 0.20🥈 出来高急増時の価格変動を 逆張り Round 1はエラーで脱落、Round 2はマイナス。しかしRound 3で「出来高 ランク」ではなく「出来高急増時の逆張り」に転換して 0.20の高スコアを記 録。 Sonnet 4.5 0.15 朝のギャップ(期待)と日中の 動き(現実)の不一致 「非対称モメンタム」「極度の売られすぎ」など、毎回ユニークな仮説を検 証。Round 4では「ギャップと日中値動きの不一致(裏切られた期待)」に 着目し、Train上で高Sharpeを記録しました。 GPT 5.2 0.12 1日リターンと5日トレンドの 乖離 Round 1はマイナススタート。Round 2で「出来高ショック×日中リターン」 でプラス転換。Round 4では「短期と中期の方向感のズレ」に着目しました が、他チームに比べるとスコアは伸び悩みました。 Haiku 4.5 スコアなし - 1時間で提出が完了しなかったので Sonnet 4.5が参戦。
  9. Strictly Confidential. エージェント毎のレビュー 16 項目 🥇Gemini 3.0 Flash Preview 🥈Grok

    4.1 reasoning Sonnet 4.5 GPT 5.2 アプローチの 違い 「王道の深化」 初期の有望な「Gap逆張り」を維持 し、フィルタリング条件(流動性・ ボラ)を精緻化して精度を高める方 針。 「一点突破からの安定化」 初期のエラー躓きから、「出来高× 価格変動」の有効性を見出し、その ロジックを磨き上げ、出来高は排 除。 「多角的な仮説検証」 「流動性アービトラージ(順張り)」や 「期待と現実の不一致」など、ラウ ンドごとに全く異なるユニークな仮 説を試す。 「広範な定量的探索」 多数(10個程度)の候補シグナルを 並列で作成・検証し、数値的に最も 良いものを選択する数撃ちゃ当たる 方式。 分析スタイル 堅実・構造的 基本指標の確認→仮説構築→バック テスト→改善というPDCAサイクルが 非常に教科書的で手堅い。 実装・現物重視 コードの実行結果(ASCIIアートでの 分布可視化など)を重視し、データ の「形」を見て判断するスタイル。 ストーリー重視 「裏切られた強気」「期待通り弱 気」など、市場心理を言語化し、そ れをコードに落とし込む定性的な分 析が強い。 エンジニアリング重視 Polarsの機能を駆使して複雑な特徴量 (Z-score乖離など)を効率的に計算 ・比較することに長ける。 検証ポイント 条件付き確率 「どのような条件下(高ボラ、出来 高急増)で逆張りが効くか」という 条件の絞り込みに注力。 シグナル分布 シグナルの偏りや極端値の挙動、ラ ンク付けの妥当性など、出力データ の健全性を重視。 市場環境・安定性 期間別(2020年コロナショック等) や市場局面(上昇・下落)ごとのパ フォーマンス差を執拗に確認。 統計的有意性 IC(情報係数)の平均と標準偏差 (Sharpe)を指標ごとに横並びで比 較し、数値で判断。 スコア改善の 仕方 積み上げ型 ベースロジックを変えず、重み付け や除外条件を追加することで、確実 なスコアアップを狙う。 修正・チューニング型 有望なロジック(出来高増幅)を見 つけたら、その計算式やパラメータ を微修正して最適化する。 ピボット(転換)型 スコアが悪ければ前の仮説を捨て、 全く新しいロジックに切り替えて ホームランを狙う。 選択型 毎回複数の案を出し、その中から最 もTrainデータでの成績が良いものを 選び直す。 新しいアイデ ア 深掘り 既存アイデア(逆張り)に対して、 「流動性」や「価格位置」という補 助線を引いて深さを出している。 発見重視 「出来高ランク」から「出来高によ る価格変動の増幅」へと、データか ら得られた知見でアイデアを進化 豊富 「流動性遅行」や「ギャップの不一 致」など、毎回視点の異なる新しい アイデアを投入している。 組合せ 「短期リターン」と「長期トレン ド」の乖離など、既存指標の組み合 わせで新しい視点を作ろうとしてい る。
  10. Strictly Confidential. リサーチはLLMの性格が反映される模様 • Gemini 3.0 Flash Preview : 一度のミスで戦略を捨てず、修正してさらに磨きをかけることが勝因。明ら

    かにツールの利用に関しての粘り強さが2.5から増している印象を受けた。 • Grok 4.1 reasoning: 初期のエラー連発から立ち直り、確実に動くシンプルなロジックに行き着く粘りを 見せた。 • Sonnet 4.5: 単にスコアが出るだけでなく、その中身(内訳や年次安定性)まで粘り強く分解して確認す る慎重さがあった • GPT 5.2: 一つのアイデアに固執せず、常に複数の選択肢から最適解を選ぼうとする切り替えの判断が特 徴だったがスコアには結びついていない。 違いはどこから生まれるのかを上位2モデルで考察 Gemini 3.0 Flash Previewは、長いコンテキストの中から「最も重要な情報(=Round 1で0.24という高スコア が出た事実)」を特定し、それを保持し続ける能力(Long Context Reasoning)に長けている可能性がある。 新しいことよりも、ハイスコアが出た過去の事実を受け止める性格 Grok 4.1 reasoningは比較的新しいモデルであり、複雑な推論よりも「動くコードを書く」「簡潔に答える」 ことに重きが置かれている可能性がある。エラーが出た際に、複雑な修正をするよりも「よりシンプルな方 法(出来高のみ)」に切り替えるというエンジニア的な強さを随所で見せていた 基本的にはツールをうまく使ったコードを複数回実行してその結果を考察する粘り強さを見せたモデルが勝 てている模様(発想力というよりツール利用のうまさ、実装力、諦めない反復力が重要になっている) 各LLMのエージェントの性格や粘り強さがスコアに如実に反映される 17
  11. Strictly Confidential. Gemini 3.0 Flash Previewにより作成された投資戦略: 1位モデル def generate_signal(ohlcv: pl.DataFrame,

    additional_data: dict[str, pl.DataFrame]) -> pl.DataFrame: """ 翌日のイントラデイ・リターンを予測する平均回帰シグナル。 当日朝のギャップと直近 5日間の乖離率を組み合わせ、その反転を狙う。 """ # 1. 調整後価格の算出と銘柄ごとの時系列計算 # 調整後始値 = 始値 * (調整後終値 / 終値) df_features = ( ohlcv.sort(["symbol", "datetime"]) .with_columns([ (pl.col("open") * pl.col("adjustment_close") / pl.col("close")).alias("adj_open") ]) .with_columns([ # Gap: (当日調整後始値 / 前日調整後終値 ) - 1 (pl.col("adj_open") / pl.col("adjustment_close").shift(1).over("symbol") - 1).alias("gap"), # MA5_Dev: (当日調整後終値 / 5日移動平均調整後終値 ) - 1 (pl.col("adjustment_close") / pl.col("adjustment_close").rolling_mean(window_size=5).over("symbol") - 1).alias("ma5_dev") ]) ) # 2. 日次での横断的ランキングとシグナル合成 # 欠損値(初期行)を除外してからランクを計算 df_signal = ( df_features .filter(pl.col("gap").is_not_null() & pl.col("ma5_dev").is_not_null()) .with_columns([ pl.col("gap").rank().over("datetime").alias("rank_gap"), pl.col("ma5_dev").rank().over("datetime").alias("rank_ma5_dev") ]) .with_columns( # 負の相関(逆張り)のため、ランクにマイナスを掛ける # ギャップの影響を重視 (0.7:0.3) (-(0.7 * pl.col("rank_gap") + 0.3 * pl.col("rank_ma5_dev"))).alias("signal") ) ) # 3. 必要な列のみを抽出して返す return df_signal.select(["datetime", "symbol", "signal"]) 19 サブミッション時のLLMのモデル説明(その まま) 分析の結果、翌日のイントラデイ・リターン (open2close)に対して、当日の「窓開け(ギャップ)」 および「短期的な価格の過熱感(移動平均乖離)」が強い 負の相関を持つことが確認されました。つまり、大きく窓 を開けて上昇した銘柄や、直近5日間で急騰した銘柄は、 翌日の日中において反転下落しやすい傾向があります。 本シグナルでは、これら2つの指標を以下の手順で組み合 わせます: 1. 価格の調整: 分割などの影響を排除するため、 ` adjustment_close ` を用いて始値を調整し、実質的な価格変 化を算出します。 2. マルチスケール・リバーサル: - Gap: 前日終値から当日始値への変化率(短期的な ショック) - MA5 Deviation: 5日移動平均からの乖離率(週単位の トレンドの行き過ぎ) 3. 横断的ランキングと合成: 日次で全銘柄をランク付け し、両者の加重平均をとることで、特定の銘柄固有のボラ ティリティに左右されない堅牢なシグナルを作成します。 ギャップの反転力がより強力であったため、Gapに大きな ウェイト(0.7)を置いています。 このロジックは、市場の「行き過ぎ」を複数の時間軸で捉 え、翌日の日中のリターンを予測する、シンプルながらも 日本株市場の特性を突いた強力な戦略です。
  12. Strictly Confidential. Grok 4.1 reasoning作成された投資戦略: 2位モデル def generate_signal(ohlcv: pl.DataFrame, additional_data:

    dict[str, pl.DataFrame]) -> pl.DataFrame: df = ohlcv.sort(["symbol", "datetime"]) df = df.with_columns( pl.col("adjustment_close").shift(1).over("symbol").alias("prev_clo se") ) df = df.with_columns( ((pl.col("open") / pl.col("prev_close").fill_null(1)) - 1).alias("gap") ) df = df.with_columns( pl.col("gap").rank(method="dense").over("datetime").alias("ranks") , pl.col("gap").count().over("datetime").alias("total") ) df = df.with_columns( (1 - (pl.col("ranks") / pl.col("total"))).alias("signal") ) return df.select(["datetime", "symbol", "signal"]) 20 サブミッション時のLLMのモデル説明(そのまま) trainデータ分析で、Overnight Gap = (当日 open / 前日adjustment_close) -1 のクロスセク ショナルdense rankと翌open2close returnの Spearman相関係数が全候補中最強負(-0.0194 mean corr, sharpe -0.2386)。 これを逆転: signal = 1 - (gap_rank / total) で、高gap(朝高スタート)銘柄を低期待とし、 低gap(朝安スタート)を高期待とする「ギャッ プ・リバーサル」単一シグナル。高gapは期待 織り込み済み調整、低gapは割安キャッチアッ プという個性的・面白い逆張り仮説。 train sharpe≈0.24相当で過去 RSI(0.061)/volume(0.058)を圧倒、test有効期 待。追加データ未使用robust。前回script準拠 で動作確認済み。
  13. Strictly Confidential. まとめ • 冒頭の課題であった似たようなアイデアしか出ない問題に対し、異なるLLM(Gemini, Grok, Claude, GPT)を競わせることで、アプローチの多様性を強制的に生み出すことにいったん成功 • ただし、生み出したモデルは同一軸の評価なので、結果的に安定的に動作する似たような投資戦

    略の評価が高まった。実運用ではモデル自体の相関を下げる必要があるので、メタモデルに対す るスコア的なNumeraiのようなアプローチも必要と想定。MixSeekの設計であればこの部分も Leaderboardがあるので容易と想定 • モデルごとの個性がそのまま戦略の特性として現れることも示された。今回の勝者である Gemini/Grokに共通したのは、エラーや初期の不調に対して試行錯誤を繰り返し、動くコード・ 有効なロジックに着地させるエンジニアリング的な粘り強さだった。 • 最新の軽量モデル(Flash/Reasoning系)は、コストパフォーマンスだけでなく、タスク完遂能力 においても実務レベルに達しつつあることがわかった。 • 結果を見るとLLMがやっとここまでデータ分析業務が可能になったという感想。今回の世代でこ のアプローチを現実的なコストで開始する土台は整った! やっとコードを粘り強く実行して分析を行うレベルまでLLMが進化した 21
  14. Strictly Confidential. マケデコ次回予告 1. 今年のマケデコアドベントカレンダーは 非常に素晴らしい記事が多く、J−Quants ユースケース・アドベントカレンダーか らの有志でぜひ発表イベントを来年2月く らいに開催させていただきます! 2.

    J−Quants V2/MixSeekという題材が揃い ましたので、マケデコ第2回ハッカソン を来年の3月-4月に企画致します! MixSeekは今回のパッケージの一部を切り 出してだれでも利用可能とする予定です ので、お楽しみにお待ち下さい! 来年前半は2つのマケデコイベントを企画致します!!! 22