金融市场分析中的群体智能

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

TL;DR

本文探讨了群体智能作为金融优化工具的价值,以及通过基于 Agent 的建模来理解市场动态的框架。

如何用去中心化的愚蠢 Agent 群体解决封闭形式数学无法处理的问题,以及为什么市场本身是有史以来最大的群体智能

量化金融的核心存在一种奇特的二元性。一边是工程师的梦想:一个干净的目标函数、一个凸可行集、一个你能证明最优的封闭形式解。另一边是真实的市场:非线性、非平稳、布满局部极小值、肥尾、制度转换和反馈循环——你自己的行为会改变你试图预测的对象。

群体智能站在第二边。它是一类方法,放弃优雅和证明,以换取市场真正奖励的东西:在丑陋、高维、具有欺骗性的地形中搜索而不被困住的能力,并且使用如此简单的 Agent,以至于它们中没有一个能单独理解问题。

本文涵盖故事的两半。前半部分是群体智能作为指向金融问题的 优化工具包:用于投资组合和策略调参的粒子群优化,用于路由和组合选择的蚁群优化。后半部分是一个更深层、更令人不安的想法:市场 就是 一个群体,而基于 Agent 的模型让你能够模拟那些任何均衡模型都无法自行产生的涌现性泡沫、崩盘和羊群行为。

全文包含数学、代码和图表。没有任何一笔带过。

我的资源:

TG 频道:

https://t.me/zostaffsmartarc

GitHub:

https://github.com/zostaff

在此交易:

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

第 0 部分:"群体智能" 的真正含义

群体是一个由简单 Agent 组成的种群,遵循局部规则,没有中央控制器,集体产生智能的全局行为。典型的例子是生物学中的:蚁群通过信息素找到最短路径,鸟群通过三条局部规则保持凝聚力,蜂群将觅食者分配到花丛。

三个属性定义了这一范式,并解释了它为何适合金融:

  1. 去中心化。 没有一个 Agent 拥有全局信息。每个 Agent 只根据局部信息加上少量共享信号行动。这反映了真实市场,其中没有参与者能看到完整的订单流。
  2. 随机探索与社会吸引。 Agent 半随机地移动,但被拉向群体发现价值的地方。这种探索与利用的平衡正是你在一个充满局部最优值的地形上所需要的——而风险调整后的回报曲面正是这样的地形。
  3. 涌现性。 有趣的行为并非编程到任何 Agent 中。它出现在种群层面。在优化中,这意味着逃离梯度方法会陷入的陷阱。在市场建模中,这意味着任何单个 "理性" Agent 都没有意图产生的泡沫。

与经典方法的对比是整个关键。梯度下降需要一个可微的目标函数,并找到最近的极小值,这通常是个错误的极小值。凸优化需要凸性,而金融目标一旦加入交易成本、基数约束或回撤限制,就很少具有凸性。群体方法不需要这些。它们将目标函数视为黑箱:输入一个候选解,返回一个数字,仅此而已。

第 1 部分:粒子群优化

1.1 机制

粒子群优化(PSO)由 Kennedy 和 Eberhart 于 1995 年提出,将群体建模为一组在搜索空间中飞行的粒子。每个粒子 i 有一个位置 x_i(一个候选解)和一个速度 v_i。它记住自己访问过的最佳位置(pbest_i),并知道任何粒子找到的最佳位置(g,全局最优)。

在每一步,每个粒子将其速度更新为三个驱动力的加权和:

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] 区间内每个维度独立抽取的均匀随机数。这种随机性是探索的引擎;没有它,群体将确定性地崩溃。

这三个力值得从几何角度观察。单个粒子同时被自己的动量推动,被拉回自己的个人最佳位置,并被拉向全局最佳位置。合向量就是它实际移动的方向。

zostaff - inline image

1.2 为什么它能逃离局部极小值

神奇之处在于认知项和社会项之间的张力。早期,粒子分散,它们的个人最佳位置差异很大,因此群体广泛探索。随着好的区域被发现,全局最优 g 将所有人拉近,但每个粒子的惯性和个人记忆阻止它瞬间坍缩到 g。群体在周围盘旋、超调、探索邻域,然后才做出承诺。在多峰曲面上,这意味着如果某个粒子偶然发现一个更好的盆地,群体可以放弃一个不错的局部极小值。

以下是粒子群优化在 Rastrigin 函数上的表现——这是一个标准测试,全局最小值在原点,周围布满欺骗性的局部极小值点阵。观察群体如何分散、聚集和收敛,同时全局最优适应度下降六个数量级。

zostaff - inline image

任何被扔到该曲面上某个位置的梯度方法都会在它碰到的第一个局部碗中死去。群体不会。

1.3 应用:在现实约束下的投资组合优化

马科维茨均值-方差优化有一个封闭形式解。一旦你加入任何现实因素,它就没有了。基数约束("最多持有 20 只股票")、最小仓位规模、交易成本惩罚和换手率限制都会破坏凸性和完整性。这正是粒子群优化发挥作用的地方。

我们想要最大化一个纯多头投资组合的夏普比率。每个粒子是一个权重向量;我们将其修复到单纯形(非负,和为 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# ---- 粒子群优化 ----
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("最佳夏普比率:", round(-pbest_val.min(), 3))
43print("权重:", np.round(w_opt, 3))

运行这段代码得到夏普比率接近 3.5,以及一个稀疏、合理的权重向量,和为 1。关键点不是这个数字,而是 neg_sharpe 可以包含 任何内容。加上一个交易成本项 - lambda * np.sum(np.abs(w - w_prev)),加上一个硬性基数上限(在归一化前将最小权重置零),加上一个基于回测计算的回撤惩罚。这些都没有你想计算的梯度,但它们都不会阻止粒子群优化。优化器从不查看目标函数内部;它只问 "这个投资组合比那个更好吗?"

1.4 应用:超参数和策略调参

第二个主要用途是调参交易策略。一个策略有参数:回溯窗口、入场和出场阈值、止损距离、仓位规模系数。目标函数是一个回测统计量,如扣除成本后的风险调整收益。这个曲面非常非凸、不连续(阈值的一个 tick 变化可能翻转一笔交易),且评估成本高昂。粒子群优化将整个回测视为黑箱目标函数,直接搜索参数空间。

它与替代方案相比如何?遗传算法(进化交叉和变异)是最接近的竞争对手,通常表现相当。随机搜索是诚实的基线,它经常出人意料地击败网格搜索。在一个典型的策略调参目标函数上,群体往往收敛更快,并达到更优的最优值,因为社会吸引项将评估集中在重要的地方,而不是盲目采样。

zostaff - inline image

这里的警告是真实的,从业者必须内化它:在回测目标函数上收敛更快意味着更快地收敛到 过拟合。粒子群优化会很高兴地找到完美解释历史样本中噪声的参数集。递进式验证、样本外保留和对参数复杂度的惩罚不是可选的装饰;它们是研究产物与能在真实市场中存活的策略之间的区别。

第 2 部分:蚁群优化

2.1 机制

蚁群优化(ACO)由 Dorigo 在 1990 年代早期提出,用于解决组合问题,其中答案是路径或离散选择。真实蚂蚁通过行走时沉积信息素来找到短路径;较短的路径在单位时间内被更频繁地遍历,积累更多信息素,并吸引更多蚂蚁,形成正反馈循环。关键是,信息素会蒸发,这使得群体能够忘记过时的路径,并在环境变化时适应。

人工蚂蚁在图上逐步构建解。在节点 i,蚂蚁根据概率选择下一个节点 j,该概率由该边上的信息素 tau_ij 和启发式期望值 eta_ij 决定:

text
1(tau_ij)^alpha · (eta_ij)^beta
2P(i -> j) = ----------------------------------------
3 sum over allowed k of (tau_ik)^alpha · (eta_ik)^beta

alpha 控制蚂蚁对累积信息素的信任程度(集体记忆的利用);beta 控制它们对即时启发式的信任程度(贪婪的局部质量)。在所有蚂蚁完成后,信息素更新:

text
1tau_ij <- (1 - rho) · tau_ij + sum over ants of delta_tau_ij

rho 是蒸发率。构建了更好解的蚂蚁的 delta_tau_ij 更大,因此好的边得到加强。蒸发防止了过早锁定,也是蚁群优化在非平稳问题(也就是市场)上具有适应性的原因。

zostaff - inline image

2.2 蚁群优化在金融中的适用场景

粒子群优化用于连续问题;蚁群优化用于离散和路径形状的问题。在金融中,这包括:

  • 作为图遍历问题的资产选择。 选择持有宇宙中的哪个子集,其中边编码相关性或板块转换,信息素学习哪些组合历史上提供了良好的风险调整后收益。
  • 订单路由与执行。 将一个大订单跨交易所和时间片拆分,以最小化市场影响和成本,这自然是一个路径问题。信息素强化历史上获得良好成交的路由决策,而蒸发让路由器能够适应交易所流动性在日内变化。
  • 构建交易规则。 每个节点是一个条件或指标;蚂蚁在图中穿过的一条路径是一个复合规则。群体搜索规则结构的组合空间,强化回测表现良好的规则链。

上图展示了执行案例:闲置现金必须到达一个已执行的成交,群体强化历史上成本最低的路线(现金到 AAPL 到 NVDA 到成交),边厚度与累积信息素成正比。

来自粒子群优化的相同过拟合警告同样适用于蚁群优化。一个在历史数据上将规则链强化到完美的群体,已经记住了过去,而不是发现了未来。

第 3 部分:市场作为一个群体

3.1 概念上的反转

第 1 和第 2 部分将群体智能作为我们指向市场的工具。第 3 部分提出了一个更深层的论断:市场 本身 就是一个群体,并且可以说是人类建造的最大、最重要的群体。

再看一下定义属性。去中心化:数百万参与者,没有中央控制器,每个人都基于部分局部信息行动。简单的局部规则:大多数参与者并非运行博弈论直到收敛;他们遵循启发式、动量、恐惧、邻居的行为。涌现性:泡沫、崩盘、闪电崩盘、波动率聚集和肥尾回报并非由任何人设计。它们从交互中涌现。

这种重新框架之所以重要,是因为主导的理论传统——有效市场假说和理性预期均衡——难以内生地产生这些现象。在这些模型中,价格等于基本面价值加上噪声,大的偏差需要大的外生冲击。但市场在没有新闻的情况下崩盘。1987 年崩盘、2010 年闪电崩盘、无数较小的事件:价格剧烈波动,而基本面纹丝不动。均衡模型通过假设一个无人能识别的冲击来解释这一点。群体模型将其解释为涌现性的,也就是说,作为一个由交互式启发式 Agent 组成的系统的正常行为。

3.2 基于 Agent 的模型

基于 Agent 的模型(ABM)使这一点具体化。你用一个模拟市场填充异质 Agent,给每个 Agent 简单的行为规则,让它们交易,并观察价格中涌现出什么。最具影响力的设计是 基本面分析师-图表分析师 模型(Brock 和 Hommes,Lux 和 Marchesi 等人)。

  • 基本面分析师 相信价格会回归基本面价值。他们在价格低于价值时买入,高于时卖出。单独行动时,他们稳定市场。
  • 图表分析师(趋势追随者) 相信近期走势会延续。他们因价格上涨而买入,因下跌而卖出。单独行动时,他们破坏稳定。

决定性的要素是 切换:Agent 并非锁定于一种类型。他们采用最近更盈利的策略,并向邻居的行为聚集。这是离散选择机制:当趋势追随最近获利时,图表分析师的比例上升。仅这一个反馈循环就足以产生真实市场表现出的、均衡模型无法产生的整个典型事实动物园。

以下是一个在 log 价格空间中最小但完整的基本面分析师-图表分析师模拟,带有利润驱动的切换:

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] # log 价格,需要两个滞后
7frac_chartist = [0.5] # 图表分析师占总人口比例
8beta = 6.0 # 选择强度(Agent 切换的速度)
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) # 近期动量(最后一个 log 回报)
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 # 离散选择:Agent 流向近期盈利的规则(logit)
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 自动获得的典型事实

真实金融回报具有文献记载的统计特征,高斯随机游走模型无法重现这些特征。基于 Agent 的群体模型内生地产生它们,无需额外假设:

  • 肥尾(超额峰度)。 极端回报比正态分布预测的常见得多,因为羊群行为同步了 Agent 并放大了波动。
  • 波动率聚集。 大波动跟随大波动。当图表分析师制度占主导时,波动率高且持续;当基本面分析师占主导时,市场平静。切换产生了聚集。
  • 回报的线性自相关缺失,同时绝对回报的强自相关存在。 市场在方向上不可预测,但在动荡程度上高度可预测,这正是基于 Agent 的模型所生成的。

一个由愚蠢交互式 Agent 组成的模型重现了真实市场的精确统计指纹,而优雅的均衡模型需要外生冲击来拼凑——这是群体框架捕捉到了价格实际形成方式中某些真相的最有力证据。

第 4 部分:参考架构

如果你想将所有这些付诸实践,优化工具和模拟视角可以放入一个栈中。群体核心将策略视为粒子,搜索策略空间;适应度评估器运行递进式回测;风险门禁强制执行任何优化器都不允许违反的硬约束;蚁群优化处理执行路由;基于 Agent 的模拟器既可用于在合成但真实的市场中对策略进行压力测试,也可用于生成历史记录中从未包含的情景。

zostaff - inline image

反馈循环是设计的灵魂。适应度和风险不断重塑群体,就像在自然界中环境不断重塑蚁群一样。风险门禁是不可协商的,并且位于优化之外:一个优化夏普比率的群体,如果得到机会,会采取一个在回测中最佳但在尾部事件中灾难性的头寸。门禁正是阻止它的东西。

第 5 部分:诚实的局限性

群体方法并非魔法,失败模式是具体的:

过拟合是主要风险。 每个黑箱优化器都是一个寻找最能解释样本(包括其噪声)的参数集的机器。优化器越快、越强大,这越危险。递进式分析和样本外纪律是强制性的。

没有最优性保证。 粒子群优化和蚁群优化是元启发式。它们通常找到优秀的解;但它们不证明任何东西。对于真正凸的问题,使用凸求解器并获得认证的最优解。只有当经典方法所需的结构不存在时,才求助于群体。

超参数敏感性。 惯性权重、加速系数、群体大小、蒸发率:这些都很重要,调参调参者又带来了另一层过拟合风险。合理的默认值(粒子群优化的 w=0.72,c1=c2=1.49 收缩值)存在是有充分理由的。

基于 Agent 的模型是解释性的,而非预测性的。 基于 Agent 的模型出色地再现了市场的定性行为、泡沫和肥尾。它们不会告诉你下周二的价格。它们的价值在于理解机制、压力测试和情景生成,而不是点预测。

反身性陷阱。 当足够多的资本运行类似的群体发现的策略时,这些策略就成为市场动态的一部分,并侵蚀自己的优势。地图改变了领土。这不是方法的缺陷;而是群体框架教会的最深层真理。你并非从外部分析一个群体。你是其中的一个 Agent,你的信息素痕迹改变了其他人下一步的去向。

最终总结

本文的两半实际上是从两个角度看到的同一个想法。群体优化在金融问题中有效,因为这些问题存在于丑陋、具有欺骗性、非凸的地形上,而去中心化的随机搜索与社会吸引正是为此类地形而设计的。而市场之所以首先产生这样的地形,是因为市场本身就是群体:由大量简单的、羊群式的、切换的 Agent 组成的庞大种群,它们的交互涌现性地产生了任何均衡模型都无法意料的泡沫、崩盘和肥尾。

理解第二点会让你在第一点上做得更好。当你记住你正在优化的曲面是由一个群体生成的时,你就不再信任任何单一的最优解,你尊重非平稳性,你构建风险门禁,并且你永远不会忘记,当你的策略以真实规模移动时,你已不再是群体的观察者,而成为了它的一部分。

一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章