金融市場分析における群知能

@zostaff
英語2026年7月11日
120K
51
6
2
137

TL;DR

本記事では、金融最適化のためのツールキットとしての側面と、エージェントベースモデリングを通じて市場ダイナミクスを理解するためのフレームワークとしての側面、その両面から群知能を探求します。

群れ知能と金融市場:単純なエージェントの分散型コロニーが閉形式数学を打ち負かす方法、そして市場そのものが史上最大の群れである理由

量的金融の核心には奇妙な二重性が存在します。一方にはエンジニアの夢があります:クリーンな目的関数、凸な実行可能集合、最適性を証明できる閉形式解。もう一方には実際の市場があります:非線形、非定常、局所的最小値、ファットテール、レジームシフト、そして自己の行動が予測しようとしている対象そのものを変えてしまうフィードバックループに満ちています。

群れ知能は後者の側に位置します。これは、エレガントさや証明を諦める代わりに、市場が実際に報いるものを得るための手法群です:醜く、高次元で、欺瞞的なランドスケープを罠にかからずに探索する能力、そしてそれを、個々には問題を理解していないほど単純なエージェントで実現する能力です。

この記事では、このストーリーの両面を扱います。前半は、金融問題に向ける最適化ツールキットとしての群れ知能です:ポートフォリオや戦略チューニングのための粒子群最適化、ルーティングや組み合わせ選択のための蟻コロニー最適化。後半は、より深く、より居心地の悪いアイデアです:市場そのものが群れであり、エージェントベースモデルによって、均衡モデルでは決して生成されない創発的なバブル、暴落、群れ行動をシミュレーションできるのです。

数式、コード、図解が随所に含まれます。すべて具体論です。

私のリソース:

TG チャンネル:

https://t.me/zostaffsmartarc

GitHub:

https://github.com/zostaff

ここでトレード:

https://polymarket.com/?r=zostaff

パート 0:「群れ知能」の本当の意味

群れとは、単純なエージェントが局所的なルールに従い、中央制御装置を持たずに、集団として知的でグローバルな行動を生み出す集団です。典型的な例は生物学的なものです:フェロモンによって最短経路を見つける蟻のコロニー、3つの局所ルールで結束を維持する鳥の群れ、花のパッチに採餌者を割り当てるミツバチのコロニー。

このパラダイムを定義し、それが金融に適合する理由を説明する3つの特性があります:

  1. 分散化。 どのエージェントも全体像を持ちません。各エージェントは局所情報と、少量の共有シグナルに基づいて行動します。これは、完全な注文フローを見ることができる参加者がいない実際の市場を反映しています。
  2. 社会的誘引を伴う確率的探索。 エージェントは半ランダムに動きますが、群れが価値を見つけた場所に引き寄せられます。この探索と活用のバランスは、まさに局所的最適値で溢れたランドスケープ(リスク調整後リターン曲面がそうであるように)で必要とされるものです。
  3. 創発性。 興味深い行動はどのエージェントにもプログラムされていません。それは集団レベルで現れます。最適化においては、勾配法が陥る罠から逃れることを意味します。市場モデリングにおいては、単一の「合理的な」エージェントが意図しなかったバブルを意味します。

古典的な手法との対比こそが要点です。勾配降下法は微分可能な目的関数を必要とし、最も近い最小値(多くの場合、誤った最小値)を見つけます。凸最適化は凸性を必要としますが、取引コスト、カーディナリティ制約、ドローダウン制限を追加すると、金融の目的関数が凸性を持つことはほとんどありません。群れ手法はこれらを一切必要としません。目的関数をブラックボックスとして扱います:候補を入力し、数値を受け取る、それだけです。

パート 1:粒子群最適化

1.1 メカニズム

1995 年に Kennedy と Eberhart によって導入された粒子群最適化(PSO)は、探索空間を飛び回る粒子の集合として群れをモデル化します。各粒子 i は位置 x_i(候補解)と速度 v_i を持ちます。自身が訪れた中で最も良い位置(pbest_i)を記憶し、任意の粒子が見つけた最も良い位置(g、グローバルベスト)を知っています。

各ステップで、すべての粒子は速度を 3 つの衝動の重み付き和として更新します:

text
1v_i(t+1) = w · v_i(t) 慣性:今までの動きを継続
2 + c1 · r1 · (pbest_i − x_i(t)) 認知:自身の最良位置に戻る
3 + c2 · r2 · (g − x_i(t)) 社会:群れの最良位置へ向かう
4
5x_i(t+1) = x_i(t) + v_i(t+1)

ここで、w は慣性重み、c1 と c2 は加速係数、r1 と r2 は次元ごとに独立に抽出される [0,1] の一様乱数です。このランダム性が探索の原動力であり、これがないと群れは決定論的に収束します。

3 つの力は幾何学的に見る価値があります。単一の粒子は、自身の運動量によって押され、自身のパーソナルベストに向かって引っ張られ、グローバルベストに向かっても引っ張られています。その結果のベクトルが、実際に次に進む方向です。

zostaff - inline image

1.2 なぜ局所的最小値を回避できるのか

その魔法は、認知項と社会項の間の緊張関係にあります。初期段階では、粒子は散らばっており、パーソナルベストは大きく異なるため、群れは広く探索します。良い領域が発見されるにつれて、g が全員を引き寄せますが、各粒子の慣性と個人的な記憶により、g に即座に崩壊することはありません。群れは周回し、オーバーシュートし、決定する前に近傍を探索します。多峰性の曲面では、これは、粒子がより良い盆地に偶然たどり着いた場合に、群れがそこそこの局所的最小値を放棄できることを意味します。

以下は、ラストリギン関数(原点に大域的最小値があり、その周りを欺瞞的な局所的最小値の格子が取り囲む、標準的な拷問テスト)での PSO です。群れが散乱、クラスタリング、収束し、グローバルベストの適合度が 6 桁低下する様子を見てください。

zostaff - inline image

その曲面のどこかにドロップされた勾配法は、接触した最初の局所的な谷で死にます。群れはそうではありません。

1.3 応用:現実的な制約下でのポートフォリオ最適化

マルコウィッツの平均分散最適化には閉形式解があります。しかし、現実的な要素を追加すると、その解は成り立ちません。カーディナリティ制約(「最大 20 銘柄まで保有」)、最小ポジションサイズ、取引コストペナルティ、回転率制限はすべて、凸性と整数性を破壊します。こここそが PSO が真価を発揮する場面です。

ロングオンリーポートフォリオのシャープレシオを最大化したいとします。各粒子はウェイトベクトルであり、シンプレックス(非負、合計 1)に修正して評価します。

python
1import numpy as np
2
3rng = np.random.default_rng(0)
4n = 8 # 資産数
5mu = rng.normal(0.08, 0.04, n) # 期待年間リターン
6A = rng.normal(0, 1, (n, n))
7cov = (A @ A.T) / n * 0.04 # 有効な共分散行列
8rf = 0.02 # リスクフリーレート
9
10def neg_sharpe(w):
11 """目的関数:負のシャープレシオ(最小化)。ウェイトをシンプレックスに修正。"""
12 w = np.clip(w, 0, None) # ロングオンリー
13 s = w.sum()
14 if s == 0:
15 return 1e9
16 w = w / s # 合計を1に
17 ret = w @ mu
18 vol = np.sqrt(w @ cov @ w)
19 return -(ret - rf) / (vol + 1e-9)
20
21# ---- PSO ----
22P, ITERS = 30, 100
23w_inertia, c1, c2 = 0.72, 1.49, 1.49
24
25X = rng.random((P, n)) # 位置 = 候補ポートフォリオ
26V = rng.normal(0, 0.1, (P, n)) # 速度
27pbest = X.copy()
28pbest_val = np.array([neg_sharpe(x) for x in X])
29g = pbest[pbest_val.argmin()].copy()
30
31for _ in range(ITERS):
32 r1, r2 = rng.random((P, n)), rng.random((P, n))
33 V = w_inertia * V + c1 * r1 * (pbest - X) + c2 * r2 * (g - X)
34 X = np.clip(X + V, 0, None)
35 val = np.array([neg_sharpe(x) for x in X])
36 improved = val < pbest_val
37 pbest[improved] = X[improved]
38 pbest_val[improved] = val[improved]
39 g = pbest[pbest_val.argmin()].copy()
40
41w_opt = np.clip(g, 0, None); w_opt /= w_opt.sum()
42print("best Sharpe:", round(-pbest_val.min(), 3))
43print("weights:", np.round(w_opt, 3))

これを実行すると、シャープレシオは約 3.5 となり、合計が 1 になるスパースで妥当なウェイトベクトルが得られます。重要な点は数字そのものではありません。neg_sharpe が*何でも含み得るということです。取引コスト項 `- lambda np.sum(np.abs(w - w_prev))` を追加する、正規化前に最小のウェイトをゼロにしてハードなカーディナリティ上限を追加する、バックテストから計算したドローダウンペナルティを追加する。これらのどれも計算したい勾配を持たず、どれも PSO を止めません。オプティマイザーは目的関数の内部を見ません。「このポートフォリオはあのポートフォリオより優れているか?」と尋ねるだけです。

1.4 応用:ハイパーパラメータと戦略チューニング

2 つ目の主要な用途は、取引戦略のチューニングです。戦略にはパラメータがあります:ルックバックウィンドウ、エントリー/イグジット閾値、ストップロス距離、ポジションサイジング係数。目的関数は、コスト控除後のリスク調整後リターンなどのバックテスト統計量です。この曲面は非常に非凸で、不連続(閾値の 1 ティックの変化がトレードを反転させる可能性がある)であり、評価にコストがかかります。PSO はバックテスト全体をブラックボックス目的関数として扱い、パラメータ空間を直接探索します。

代替手段と比較してどうでしょうか? 遺伝的アルゴリズム(進化的交叉と突然変異)は最も近い競合であり、多くの場合同等です。ランダムサーチは正直なベースラインであり、驚くほど頻繁にグリッドサーチを上回ります。典型的な戦略チューニング目的関数では、社会的誘引項が評価を盲目的にサンプリングするのではなく、重要な場所に集中させるため、群れは両方よりも速く収束し、より良い最適値に到達する傾向があります。

zostaff - inline image

ここでの注意点は現実的であり、実務者はこれを内面化しなければなりません:バックテスト目的関数への収束が速いということは、オーバーフィッティングへの収束が速いということです。PSO は、過去のサンプルのノイズを完全に説明するパラメータセットを喜んで見つけます。ウォークフォワード検証、アウトオブサンプルホールドアウト、パラメータ複雑性へのペナルティは、オプションの飾りではありません。それらは、リサーチ上のアーティファクトと、実際の市場との接触に耐える戦略との違いです。

パート 2:蟻コロニー最適化

2.1 メカニズム

1990 年代初頭に Dorigo によって提唱された蟻コロニー最適化(ACO)は、答えが経路または離散的な選択である組み合わせ問題に取り組みます。実際の蟻は、歩きながらフェロモンを分泌することで短い経路を見つけます。短い経路は単位時間あたりにより頻繁に移動され、より多くのフェロモンを蓄積し、より多くの蟻を引き寄せます。これは正のフィードバックループです。重要なのは、フェロモンが蒸発することであり、これによりコロニーは古くなった経路を忘れ、環境が変化したときに適応できます。

人工蟻は、グラフ上でステップバイステップで解を構築します。ノード i で、蟻は確率的に次のノード j を選択します。その選択は、エッジ上のフェロモン tau_ij と、発見的な望ましさ eta_ij によってバイアスされます:

text
1(tau_ij)^alpha · (eta_ij)^beta
2P(i -> j) = ----------------------------------------
3 許容される k に対する (tau_ik)^alpha · (eta_ik)^beta の合計

alpha は、蟻が蓄積されたフェロモンをどの程度信頼するか(集合的記憶の活用)を制御し、beta は、即時の発見的手法(貪欲な局所的な品質)をどの程度信頼するかを制御します。すべての蟻が完了した後、フェロモンが更新されます:

text
1tau_ij <- (1 - rho) · tau_ij + 蟻全体の delta_tau_ij の合計

rho は蒸発率です。デルタ tau_ij の堆積は、より良い解を構築した蟻ほど大きくなるため、良いエッジは強化されます。蒸発は早期のロックインを防ぎ、ACO を非定常問題(つまり、市場)に適応させるものなのです。

zostaff - inline image

2.2 ACO が金融で適合する場面

PSO は連続問題用であり、ACO は離散問題および経路形状の問題用です。金融では、これには以下が含まれます:

  • グラフ探索問題としての資産選択。 ユニバースからどのサブセットを保有するかを選択する問題で、エッジは相関やセクター間の遷移をエンコードし、フェロモンはどの組み合わせが歴史的に良好なリスク調整後リターンを提供したかを学習します。
  • 注文ルーティングと執行。 大きな親注文を複数の取引所とタイムスライスに分割してマーケットインパクトとコストを最小化することは、自然に経路問題となります。フェロモンは、歴史的に良好なフィルを達成したルーティング決定を強化し、蒸発により、ルーターは取引所の流動性が日中シフトするのに適応できます。
  • 取引ルールの構築。 各ノードは条件または指標であり、グラフを通る蟻の経路は複合ルールです。コロニーはルール構造の組み合わせ空間を探索し、バックテストで良好な結果を示したルールチェーンを強化します。

上記の図は執行ケースを示しています:アイドル状態の現金は執行されたフィルに到達する必要があり、コロニーは、歴史的にコストを最小化したルート(現金→AAPL→NVDA→フィル)を強化し、エッジの太さは蓄積されたフェロモンに比例します。

PSO と同じオーバーフィッティングの警告が、同様の強さで適用されます。過去のデータでルールチェーンを完璧に強化したコロニーは、未来を発見したのではなく、過去を記憶したにすぎません。

パート 3:市場としての群れ

3.1 概念的な逆転

パート 1 と 2 では、群れ知能を市場に向けるツールとして使用しました。パート 3 では、より深い主張をします:市場はそれ自体が群れであり、間違いなく人類が構築した中で最大かつ最も影響力のある群れなのです。

定義特性をもう一度見てみましょう。分散化:何百万もの参加者、中央制御装置なし、それぞれが部分的な局所情報に基づいて行動。単純な局所ルール:ほとんどの参加者はゲーム理論を収束まで実行しているわけではありません。彼らはヒューリスティック、モメンタム、恐怖、隣人の行動に従っています。創発性:バブル、暴落、フラッシュクラッシュ、ボラティリティクラスタリング、ファットテールのリターンは、誰かによって設計されたものではありません。それらは相互作用から創発します。

この再定義が重要なのは、支配的な理論的伝統である効率的市場仮説と合理的期待均衡が、これらの現象を内生的に生成するのに苦労するからです。これらのモデルでは、価格はファンダメンタル価値にノイズを加えたものに等しく、大きな乖離には大きな外生ショックが必要です。しかし、市場はニュースがなくても暴落します。1987 年の暴落、2010 年のフラッシュクラッシュ、無数の小規模なエピソード:ファンダメンタルズが静かに推移している間に、価格は激しく変動しました。均衡モデルは、誰も特定できないショックを仮定することでこれを説明します。群れモデルは、それを創発的現象として説明します。つまり、相互作用するヒューリスティックエージェントのシステムの正常な振る舞いとして説明するのです。

3.2 エージェントベースモデル

エージェントベースモデル(ABM)はこれを具体化します。シミュレーション市場に異種エージェントを配置し、各エージェントに単純な行動ルールを与え、取引させ、価格に何が現れるかを観察します。最も影響力のある設計は、ファンダメンタリスト-チャーティストモデル(Brock と Hommes、Lux と Marchesi など)です。

  • ファンダメンタリストは、価格はファンダメンタル価値に回帰すると信じます。価格が価値を下回れば買い、上回れば売ります。単独で行動する場合、彼らは市場を安定化させます。
  • チャーティスト(トレンドフォロワー)は、最近の動きは継続すると信じます。価格が上昇しているから買い、下落しているから売ります。単独で行動する場合、彼らは不安定化させます。

決定的な要素はスイッチングです:エージェントはタイプに固定されていません。彼らは最近より収益性の高かった戦略を採用し、隣人が何をしているかに群がります。これが離散選択メカニズムです:トレンドフォローが最近報われた場合、チャーティストの割合が上昇します。この単一のフィードバックループだけで、実際の市場が示し、均衡モデルが示さない、様々なスタイライズドファクト全体を生成するのに十分です。

以下は、対数価格空間における、利益駆動型スイッチングを伴う最小限だが完全なファンダメンタリスト-チャーティストシミュレーションです:

python
1import numpy as np
2
3rng = np.random.default_rng(4)
4T = 520
5log_fund = np.log(100.0) # 一定のファンダメンタル価値
6logp = [log_fund, log_fund] # 対数価格、2期のラグが必要
7frac_chartist = [0.5] # チャーティストである人口の割合
8beta = 6.0 # 選択の強度(エージェントが切り替える速さ)
9
10for t in range(1, T):
11 lp, lp1 = logp[-1], logp[-2]
12 dev = lp - log_fund # 価格のファンダメンタルからの乖離
13 mom = np.clip(lp - lp1, -0.2, 0.2) # 最近のモメンタム(過去の対数リターン)
14
15 # 各ルールの、最後の実際の動きに対する実現収益性
16 actual = mom
17 pi_c = np.tanh(60 * mom * actual) # トレンドが継続すればチャーティストが正解
18 pi_f = np.tanh(60 * (-0.05 * dev) * actual) # 回帰すればファンダメンタリストが正解
19
20 # 離散選択:エージェントは最近収益性の高かったルールに流れる(ロジット)
21 ec, ef = np.exp(beta * pi_c), np.exp(beta * pi_f)
22 target = ec / (ec + ef)
23 target = np.clip(target + 1.8 * abs(mom), 0, 1) # 大きな動きはトレンド追従の群れを引き寄せる
24
25 # 群れ行動の慣性:群衆は瞬時にではなく、徐々にシフトする
26 share = np.clip(0.55 * frac_chartist[-1] + 0.45 * target + rng.normal(0, 0.025), 0.02, 0.98)
27
28 # 価格への影響:チャーティストはモメンタムを外挿し、ファンダメンタリストは価値へ引き戻す
29 dl = share * 0.95 * mom + (1 - share) * (-0.05 * dev) + rng.normal(0, 0.014)
30 dl = np.clip(dl, -0.12, 0.12)
31
32 logp.append(lp + dl)
33 frac_chartist.append(share)
34
35price = np.exp(np.array(logp[1:]))

このコードのどこにも、市場にバブルを形成するよう指示するものはありません。「暴落」変数もありません。しかし、実行するとバブルと暴落が現れ、それらはチャーティストの割合の急増と一致します:トレンドフォローが報われ始めると、群衆が殺到し、価格はファンダメンタルから乖離し、その乖離が最終的に平均回帰を圧倒的に収益性の高いものにし、群衆は反転し、バブルは崩壊します。

zostaff - inline image

上のパネルは、100 のフラットなファンダメンタルの周りを変動する価格で、120 に向かうバブルと 80 に向かう暴落があります。下のパネルはチャーティストの割合です。群衆のトレンド追従シェアのピークは、価格の極値に先行し、それを促進します。これは、比喩ではなくメカニズムとして表現された群れ行動です。

3.3 自動的に導出されるスタイライズドファクト

実際の金融リターンには、ガウスランダムウォークモデルが再現できない、十分に文書化された統計的シグネチャがあります。エージェントベースの群れモデルは、追加の仮定なしに、これらを内生的に生成します:

  • ファットテール(過剰尖度)。 極端なリターンは、正規分布が予測するよりもはるかに一般的です。なぜなら、群れ行動がエージェントを同期させ、動きを増幅するからです。
  • ボラティリティクラスタリング。 大きな動きの後には大きな動きが続きます。チャーティスト体制が支配的である場合、ボラティリティは高く持続的です。ファンダメンタリストが支配的である場合、市場は穏やかです。スイッチングがこのクラスタリングを生成します。
  • リターンにおける線形自己相関の欠如と、絶対リターンにおける強い自己相関の共存。 市場は方向性において予測不可能ですが、乱高下においては非常に予測可能です。これはまさに ABM が生成するものです。

エレガントな均衡モデルが外生ショックを追加で必要とする一方で、単純な相互作用するエージェントのモデルが実際の市場の正確な統計的指紋を再現するという事実は、群れの枠組みが価格が実際にどのように形成されるかについて何か真実を捉えているという最も強力な証拠です。

パート 4:リファレンスアーキテクチャ

これらすべてを運用化したい場合、最適化ツールとシミュレーションレンズは 1 つのスタックに適合します。群れコアは戦略を粒子として扱い、戦略空間を探索します。適合度評価器はウォークフォワードバックテストを実行します。リスクゲートは、オプティマイザーが違反することを許されないハード制約を強制します。ACO は執行ルーティングを処理します。そして、エージェントベースシミュレーターは、合成だが現実的な市場に対して戦略をストレステストし、過去の記録には含まれていなかったシナリオを生成するために使用できます。

zostaff - inline image

フィードバックループは設計の核心です。適合度とリスクが継続的に群れを再形成します。これは、自然界で環境が継続的にコロニーを再形成するのと同じです。リスクゲートは譲歩の余地がなく、最適化の外部に位置します:シャープレシオを最適化する群れは、機会があれば、バックテストでは最適だがテールでは破滅的なポジションを取ります。ゲートはそれを防ぐものです。

パート 5:正直な限界

群れ手法は魔法ではなく、その失敗モードは具体的です:

オーバーフィッティングが支配的なリスクです。 すべてのブラックボックスオプティマイザーは、ノイズを含むサンプルを最もよく説明するパラメータセットを見つけるための機械です。オプティマイザーが高速で強力であればあるほど、これは危険です。ウォークフォワード分析とアウトオブサンプル規律は必須です。

最適性の保証はありません。 PSO と ACO はメタヒューリスティックです。通常は優れた解を見つけますが、何も証明しません。真に凸な問題には、凸ソルバーを使用して認定された最適値を取得してください。古典的な手法が必要とする構造が存在しない場合にのみ、群れに手を伸ばしてください。

ハイパーパラメータ感度。 慣性重み、加速係数、群れサイズ、蒸発率:これらは重要であり、チューナー自体をチューニングすることは、さらなるオーバーフィッティングの層のリスクを冒します。適切なデフォルト(PSO の w=0.72、c1=c2=1.49 の収縮値)が存在するのには理由があります。

ABM は説明的であり、予測的ではありません。 エージェントベースモデルは、市場の質的な振る舞い、バブル、ファットテールを見事に再現します。しかし、来週の火曜日の価格を教えてくれるわけではありません。それらの価値は、メカニズムの理解、ストレステスト、シナリオ生成にあり、点予測にはありません。

再帰性の罠。 十分な資本が同様の群れ発見戦略を実行すると、それらの戦略は市場のダイナミクスの一部となり、自身の優位性を侵食します。地図は領土を変質させます。これは手法の欠陥ではありません。群れの枠組みが教える最も深い真実です。あなたは外部から群れを分析しているのではありません。あなたはその内部のエージェントであり、あなたのフェロモンの痕跡は、他の全員が次にどこへ行くかを変えるのです。

最終章

この記事の 2 つの半分は、実際には 2 つの角度から見た 1 つのアイデアです。群れ最適化が金融問題に有効なのは、それらの問題が醜く、欺瞞的で、非凸なランドスケープ上に存在し、社会的誘引を伴う分散型確率的探索がまさにそのような地形のために構築されているからです。そして、市場がそもそもそのようなランドスケープを生成する理由は、市場自体が群れだからです:単純で、群れ行動をとり、スイッチングするエージェントの広大な集団であり、その相互作用が、どの均衡モデルも意図しないバブル、暴落、ファットテールを創発的に生成します。

2 つ目の点を理解することで、1 つ目の点がより上手くなります。最適化している曲面が群れによって生成されたことを覚えているとき、あなたは単一の最適値を信頼するのをやめ、非定常性を尊重し、リスクゲートを構築し、そして、あなたの戦略が実際のサイズで動いた瞬間、あなたは群れの観測者であることをやめ、その一部になったことを決して忘れません。

ワンクリック保存

YouMindでバイラル記事をAI深読み

ソースを保存し、的を絞った質問をし、主張を要約して、バイラル記事を再利用できるノートに変えます。すべてを1つのAIワークスペースで行えます。

YouMindを探索
クリエイターのために

あなたの Markdown をきれいな 𝕏 記事に

自分の長文を投稿するとき、画像・表・コードブロックを 𝕏 向けに整形するのは手間がかかります。YouMind は Markdown 全体を、そのまま投稿できるきれいな 𝕏 記事に変換します。

Markdown → 𝕏 を試す

解読すべきパターンをもっと

最近のバイラル記事

バイラル記事をもっと見る