マルチエージェントシステムによる金融シグナル発見の自動化と最適化
本文の状態
日本語全文を表示中
詳細モードで約15分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
NVIDIA Developer Blog
NVIDIA は、マルチエージェントシステムを活用して金融市場からのシグナルを自動的に発見・最適化する手法を発表した。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
定量的金融において、研究者は資産、デリバティブ、およびその他の金融商品を取引するためのアルゴリズムを構築します。その作業の重要な部分はシグナル(信号)を見つけることです。これは、将来のリターンを予測する可能性のある、不揃いな市場データ内のパターンです。これらのシグナルは、価格や出来高データ、経済指標、ファンダメンタルズ、あるいはニュースセンチメントのような代替ソースから得られることがあります。
長年にわたり、クオンツ(定量的)企業は主に手作業でシグナルを発見し、テストしてきました。伝統的に、定量的研究者は数百の潜在的なシグナルについて、仮説を立て、コードを書き、バックテストを行い、改良するという作業を手動で行う必要があります。このワークフローは断片的であり、データサイエンティスト、開発者、アナリストの間を移動するため、ミリ秒単位で動く市場において大きな遅延を生み出しています。現在、AI はこのワークフローの一部を自動化し、研究サイクルを加速させることができます。NVIDIA による 定量的シグナル発見エージェント開発者の例 は、NVIDIA Nemotron オープンモデルファミリーと NVIDIA NeMo エージェントツールキット オープンソースライブラリを用いて構築されたエージェントアーキテクチャを使用して、シグナル発見を自動化する方法を示しています。
このブログ記事では、NeMo エージェントツールキットを使用して信号発見のためのエージェントシステムを構築する完全な例をご紹介します。
シグナル発見のためのエージェントシステム
エージェント型 AI は、人間の専門知識と自動化された効率性の間のギャップを埋めています。私たちは NeMo Agent Toolkit を用いてシグナル発見エージェントのシステムを設計し、手作業による地道な作業から、自己進化型の自律的なループへとシグナル発見を変革しました。その結果、エージェント型システムの設計、テスト、最適化が痛みなく行えるプロセスとなりました。
このシステムは、3 つの専門化されたエージェントを調整します:
- シグナルエージェント:市場データから潜在的なアルファシグナルを特定する。
- コードエージェント:シグナルの説明を実行可能な Python コードに変換する。
- 評価エージェント:バックテストを実行し、論理的評価を適用してシグナルの提案を反復的に洗練させる。
NeMo Agent Toolkit によるマルチエージェント型シグナル発見ループ
NeMo Agent Toolkit は、複雑な研究タスクを計画し、ツールを使用して Python コードを実行し、バックテスト結果を振り返って自身の仮説を洗練させるインテリジェントなエージェントを構築するためのオーケストレーション層を提供します。私たちが提案するシステムは、作成、実行、洗練の継続的なサイクルで相互作用する 3 つの専門化されたエージェントから構成されています。NeMo Agent Toolkit はこれらのエージェント間の「ハンドオフ」を管理し、シグナル定義やバックテスト結果などのコンテキストがワークフロー全体を通じて保持されるように保証します。

シグナルジェネレーター
このエージェントは創造的な脳として機能し、NVIDIA NIM を通じて nemotron-3-nano-30b-a3b を使用して新しいシグナル表現を仮説立てます。エージェントの中核となる目的を定義するために、以下のシステムプロンプトを設計しました:「あなたは一流のヘッジファンドに所属するシニア・クオンツ研究者です。リクエストに基づいて {config.num_signals} 個のユニークな株式選別シグナルを生成してください」。
論理的に妥当な結果を生み出し、数学的な「ハルシネーション(幻覚)」を防ぐために、構築ブロックとして構造化された数値計算ライブラリを提供しました。各計算機は、名前、署名、意味を含む辞書形式です。今回の例では、算術演算、数学関数(abs, clip, power)、ランク付け、時系列データ(ログ収益率、モメンタム、デルタ)などからなる 66 の異なる演算子が含まれています。例えば、「Rank_Add」は、価格やボリュームなどの2つの異なるデータセットを共通の 0 から 1 の百分位スケールに正規化し、それらを合計する処理を行います。解釈と Python コードを提供することで、エージェントがさまざまな市場シグナルを組み合わせて、単一のバランスの取れたスコアを作成できるようにしています。
{
"name": "Rank_Add",
"signature": "Rank_Add(x: pd.DataFrame, y: pd.DataFrame) -> pd.DataFrame",
"meanings": "DataFrame x の要素の量子化値と、DataFrame y の対応する要素の量子化値の合計を返します。"
}
翻訳全文
仮説が形成されると、コードエージェントは自然言語のアイデアを実行可能な Python コードに変換します。NeMo Agent Toolkit エコシステムにおいて、このエージェントはツール呼び出しとコード生成のために特別に調整されています。シグナルエージェントから受け取った設計図に基づき、歴史的な価格・出来高データに対してシグナルを計算する Python コードを生成します。ここで、calculator.json の演算子実装が自動的にインライン化されるため、結果として得られるモジュールは自己完結型でポータブルなものになります。
評価エージェント
このエージェントは、コードエージェントから受け取った生データを処理し、シグナルが価格変動をどの程度予測できるかを定量化する情報係数 (Information Coefficient) およびランク IC (Rank IC) メトリクスを計算します。定量研究において、ランク IC とは、シグナル値の順位と、その後の資産リターンの順位との間の相関関係です。
標準的なピアソン IC と異なり、ランク IC は外れ値に対してより頑健であり、資産の相対的な順序に焦点を当てます。これはランキングベースの取引戦略を構築する上で不可欠な機能です。
通常、「良好」な機関向けグレードのシグナルは、平均ランク IC が 0.02 から 0.05 の範囲にあります。0.05 を一貫して上回るものは非常に強力なシグナルとみなされ、高頻度取引やニッチなモメンタム戦略でよく見られます。
ユーザーは、評価エージェントが生成されたシグナルをいつ受け入れるかを判断するための許容閾値を設定できます。バックテストにおいてシグナルのパフォーマンスが最適でない場合、評価エージェントは最適化の提案を生成し、それを次のイテレーションにおけるシグナル生成エージェントにフィードバックします。これにより、各 subsequent なシグナル生成が前回のものよりも洗練される自己改善ループが形成されます。
なぜ信号発見の自動化に NeMo Agent Toolkit を使うのか?
この特定のユースケースにおいてツールキットを使用することは、複数の利点をもたらします:
設定駆動型ワークフロー
ツールキットは、プロジェクトを堅牢なスクリプトから柔軟な研究プラットフォームへと移行させるのを支援します。エージェント間の相互作用をハードコードするのではなく、システムロジック(ペルソナ、ツール、制約を含む)を YAML 設定ファイル内で完全に定義します。このモジュール性により、異なるタスクに対してモデルを簡単に交換することが可能になります。例えば、仮説生成には推論能力の高いモデルを割り当てつつ、コードエージェントにはより高速でコスト効率の良いモデルを使用しても、基盤となるソースコードを変更する必要はありません。
私たちの実装では、config.yml が信号発見実験全体の唯一の真実源として機能します。IC 閾値から最適化ループの深さに至るまで、すべての重要なパラメータを一元管理します。これにより、定量的研究者は YAML ファイルを編集するだけで、前方リターン期間の調整や IC 要件の厳格化など、高速で反復的な作業が可能になります。
llms:
signal_generator:
_type: nim
model_name: nvidia/nemotron-3-nano-30b-a3b
temperature: 0.8
max_tokens: 3000
code_generator:
_type: nim
model_name: nvidia/nemotron-3-nano-30b-a3b
temperature: 0.0
max_tokens: 2000
optimization_advisor:
_type: nim
model_name: nvidia/nemotron-3-nano-30b-a3b
temperature: 0.5
max_tokens: 1000
workflow:
_type: signal_optimizer
signal_generator_llm: signal_generator
code_generator_llm: code_generator
optimization_advisor_llm: optimization_advisor
ic_threshold: 0.02
p_value_threshold: 0.05
max_iterations: 3
num_signals: 2
forward_periods: 5
組み込みの観測機能 (observability)
Arize Phoenix のトレーシング機能は、長期実行される定量的ワークフローにおける NIM パワー型の信号発見エージェントに観測性を付与します。信号発見には高遅延ループが伴うため—複雑な価格・出来高数式の生成、ベクトル化されたバックテストの実行、フィットネス評価の実施などです—Phoenix により、LLM の推論トレースをリアルタイムで可視化することが可能になります。

ChatNVIDIA() の呼び出し全体を通じて推論のトレースとトークン使用量を追跡することで、ボトルネックがモデルのロジック生成にあるかどうかを特定し、各ステップにおけるエージェントの思考プロセスについてより深い洞察を得ることができます。この透明性は、エージェントが数学的には妥当だが経済的な意味を持たないシグナルを出力する「沈黙した失敗」をデバッグするために不可欠であり、プロンプト戦略と発見サイクルの計算コストの両方の最適化を可能にします。
例:モメンタムベースのシグナルのマイニング
モメンタムベースのシグナルは、取引において最も一般的に使用されるものの一つです。これは、直近で好調な資産が上昇軌道を継続する傾向があり、逆に低迷している資産は下落を続けるという経験則に基づいています。このプロンプトに対してワークフローを実行してみましょう。
nat run --config_file configs/config-optimization.yml --input "momentum signals"
nat run コマンドは、YAML 設定ファイルに基づいてワークフローを起動し、生成と最適化のループを実行します。
026-04-24 14:34:02 - INFO - signal_discovery_workflow.signal_discovery_optimization_workflow:353 - === Iteration 1/3 ===
2026-04-24 14:34:02 - INFO - signal_discovery_workflow.signal_discovery_optimization_workflow:355 - Generating signals...
2026-04-24 14:34:10 - INFO - signal_discovery_workflow.signal_discovery_optimization_workflow:360 - Generating code...
2026-04-24 14:34:13 - INFO - signal_discovery_workflow.signal_discovery_optimization_workflow:366 - IC(相関係数)の評価中...
2026-04-24 14:34:13 - INFO - signal_discovery_workflow.signal_evaluator:391 - シグナル関数 2 つを検出:['signal_volume_adjusted_momentum', 'signal_20_day_price_rank_momentum']
2026-04-24 14:34:15 - INFO - signal_discovery_workflow.signal_evaluator:457 - signal_volume_adjusted_momentum:|IC| = 0.0103
2026-04-24 14:34:18 - INFO - signal_discovery_workflow.signal_evaluator:457 - signal_20_day_price_rank_momentum:|IC| = 0.0138
2026-04-24 14:34:18 - INFO - signal_discovery_workflow.signal_evaluator:472 - 最良のシグナルを選択:signal_20_day_price_rank_momentum(|IC| = 0.0138)
2026-04-24 14:34:19 - INFO - signal_discovery_workflow.signal_discovery_optimization_workflow:371 - 平均 IC:-0.0138、p 値:7.202971903375044e-07
2026-04-24 14:34:19 - INFO - signal_discovery_workflow.signal_discovery_optimization_workflow:413 - 最適化フィードバックを生成中...
signal_discovery_workflow.signal_discovery_optimization_workflow:353 - === イテレーション 2/3 ===
...
signal_discovery_workflow.signal_discovery_optimization_workflow:353 - === イテレーション 3/3 ===
...
3 回の最適化イテレーション後、以下の生成されたシグナルが得られました:
シグナル 1:ExpVolume-調整済みモメンタム
数式:Div(TS_Return(Close, 10), Decay_Exp(Volume, 10))
意味:指数加重ボリュームでスケーリングされた10日間の価格リターン。取引活動が持続した際に増幅されるモメンタムを分離する。
カテゴリ:モメンタム
データフィールド:終値、出来高
演算子:除算 (Div)、時系列リターン (TS_Return)、指数減衰 (Decay_Exp)
検索期間:[10]
シグナル 2: ランク調整済みリターンモメンタム << SELECTED
数式:Rank_Mul(Rank(Close), Rank(TS_Return(Close, 10)))
意味:価格の相対的な立ち位置と直近のリターンの強さを組み合わせ、価格ランクが高くかつ強い上昇モメンタムを示す銘柄を強調する。
カテゴリ:モメンタム
データフィールド:終値
評価指標 (対象:signal_rank_adjusted_return_momentum):
平均 IC: -0.0134
IC 標準偏差:0.1483
IC IR: -0.0906
T 統計量:-5.3655
P 値:0.000000
期間数:3504
正の IC レシオ:46.38%
本デモンストレーションでは、シグナルエージェントが、私たちが提供した数学演算子の構造化ライブラリを用いて、2 つのモメンタムベースの銘柄選定シグナルを生成しました。
最初のシグナルである「ExpVolume-Adjusted Momentum」は、各銘柄の 10 日間価格リターンを計算し、それを同じ期間における出来高の指数加重移動平均で除算します:
分母は、スパンが 10 の再帰的な指数加重平均です:
直感的には、10 日間の価格リターンは、流動性が低い場合や取引量が少ない場合に発生した場合の方が、より大きな重みを持つと考えられます。同じ価格リターンを示す 2 つの株式がある場合、弱まっていく指数加重移動平均(EWMA)ボリュームを持つ方が、より大きなシグナル強度を受け取ります。
2 つ目の指標である「ランク調整済みリターンモメンタム」は、2 つのクロスセクションランクを組み合わせます。すなわち、各株式の価格ランクと、その 10 日間のリターンのランクを掛け合わせることで、両方が同時に高い場合にのみシグナルが大きくなるように設計されています。
日におけるクロスセクションランクとは、S&P 500 銘柄全体における当日の分位値(quantile)です。
これは、価格が非常に高く、かつ直近で強いモメンタムを示している株式を特定するものです。この積算手法は、どちらかの次元だけで中位に位置する銘柄を乗法的に減衰させるため、単独でランクを使用する場合よりもシグナルを鋭敏にします。
評価者は、両方のシグナルを S&P 500 の将来リターンに対してバックテストし、「Rank-Adjusted Return Momentum」がより強力な候補であると選択しました。その結果、平均 IC は -0.0134(IC の標準偏差は 0.1483、情報比率は -0.091)、t 統計量は -5.37、3,504 営業日間にわたって極めて微小な p 値(p-value)が得られました。
46.4% の正の IC レシオは、このシグナルが否定的であるケースの方が頻繁であることを裏付けています。一方、$|IC|$ は 0.02 という許容閾値をわずかに下回っているため(したがって 2 回の反復後の結果は「ベストエフォート」ですが)、非常に有意な負の符号は、このシグナルが一貫した予測情報を担っていることを意味します。高価格・高モメンタムの株式は体系的に先行してパフォーマンスが低下し、これは教科書的なショート・モメンタム/リバースルパターンです。
定量的シグナル発見エージェント開発者の例
私たちは、新しいアルファの源泉を発見するための非常にスケーラブルで柔軟性があり強力なエンジンを構築する方法の例をすべて解説しました。この定量的シグナル発見エージェントの開発者用例は容易に拡張可能です。
- 入力文字列を変更することで異なるカテゴリのシグナルを試すことができます。例えば「ボラティリティ・シグナル」、「平均回帰シグナル」、あるいは「ボリュームと価格の乖離シグナル」などです。
- エージェントごとにモデルサイズを組み合わせることができます。より高度な推論能力を持つモデル(nemotron-3-super-120b-a12b)をシグナルエージェントに割り当ててアイデア創出を豊かにしつつ、コードエージェントとアドバイザーには小規模な nemotron-3-nano-30b-a3b を使用します。これは YAML 内の 1 行の変更だけで実現可能です。
- template/calculator.json を編集することで独自の演算子を追加できます。貴社の独自技術指標や代替データ変換を投入するだけで、シグナルエージェントが次回の実行時に自動的にそれらを発見します。
- 独自のデータを組み込むことができます。含まれている S&P 500 の CSV ファイルを、ご自身の対象銘柄群(アジア株、暗号資産、ETF など)に置き換えたり、ファンダメンタルズやセンチメントなどの新しいデータフィールドを追加したりできます。
- ic_threshold、max_iterations、forward_periods といった最適化基準を、ご自身の投資スタイルに合わせて調整してください。
スタートガイド
build.nvidia.com を訪問し、NVIDIA Brev またはご自身のクラウドインフラストラクチャを使用して、GPU アクセラレーション環境でノートブックをデプロイしてください。GitHub の quantitative signal discovery agent notebook を利用することも可能です。
関連記事
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み