
从众不是bug,是进化留下的feature。问题是,你打算让这个feature运行到什么时候?
我的"分布式脑裂"时刻
2023年3月,我在某大厂做AI infra的第二年,年薪package 85万,手里攥着120万现金,全躺在货币基金里,年化1.8%,一天利息刚好够两杯瑞幸。
然后ChatGPT爆了。
不是那种"听说很火"的爆,是我亲眼看着公司内部Slack的#ai-discussion频道从每天20条消息涨到2000条。隔壁组的算法工程师老王,白天在会议室里讨论LLM推理优化,晚上在群里晒英伟达持仓截图——成本价$220,已经浮盈40%。
我当时的内心OS:"我一个做infra的,比市场部那帮人更懂AI吧?"
于是我在$280的位置开了仓,买了英伟达。不是一点点,是30万。
技术栈:富途牛牛 + 自建的Python监控脚本(Tushare Pro拉A股AI板块数据,异步推送到钉钉)。策略:"趋势跟踪,突破加仓"。
结果你们猜到了。三个月后英伟达跌到$190,我割肉离场,亏损11.2万。
老王呢?他在$350又追了一波,最后亏得比我还多。
这让我想起在平安证券IT部门做系统重构时,交易核心组的老大说过一句话:"散户的买单,就是机构的卖单。"
券商内幕视角:爆款基金诅咒
在平安做IT期间,我负责过基金销售系统的数据报表模块。
你们猜我见过最离谱的操作是什么?
2021年1月,某只"新能源主题基金"单日申购额突破80亿,系统差点熔断。我在后台拉了一张表:该基金过去三个月净值涨幅67%,同期沪深300涨幅8%。
更离谱的是申购来源分布:
线上渠道(支付宝/天天基金):72% 客户经理推荐:18% 机构定制:10%
我跑了一个关联查询:申购金额TOP 1000的客户中,有834个是首次购买该基金,且过去90天内搜索过"新能源""碳中和""宁德时代"等关键词。
这就是爆款基金诅咒——当一只基金的搜索热度超过阈值,系统会自动触发"推荐算法",把它推到更多人面前。更多人买,净值涨,更多人看到,更多人买。
正反馈循环。缓存雪崩的反向版本——缓存热点击穿。
我在系统后台看到的规律是:新发基金规模与市场顶部的相关系数,高达0.73(2015-2023年数据)。翻译成人话:当菜市场大妈开始讨论某只基金的时候,那大概率不是起点,是终点。
羊群效应的进化根源:原始人没有Git blame
为什么我们会从众?
不是因为蠢。是因为在原始时代,脱离群体=死亡。
想象一下:你是20万年前的智人,走在非洲草原上。左边草丛突然晃动。你身边10个同伴全部往右边跑。你会怎么做?
A. 停下来分析草丛里到底是狮子还是风 B. 跟着跑
选A的,基因大概率没传下来。
从众是生存本能,写进DNA里的default=true。在进化语境下,它是优势策略——群体决策的正确率,在信息不完整时,往往高于个体决策。
但投资市场不是非洲草原。
在投资市场里,"群体"不是10个共享信息的智人,是1000万个被算法隔离在信息茧房里的散户。每个人看到的"同伴在跑",其实是算法推送的精选内容。你以为自己在跟随群体,实际上你在跟随一个被精心设计的回声室。
用程序员的语言翻译:
class HerdBehavior:
def __init__(self):
self.consensus = None # 群体共识
self.independent_observer = None # 独立观察者
def make_decision(self, market_signal):
# 错误做法:脑裂模式
if self.consensus == "BUY":
return "BUY" # 跟随大多数节点
# 正确做法:引入独立观察者(Paxos/Raft协议)
if self.independent_observer.validate(market_signal):
return self.independent_observer.decision
else:
return "HOLD"
羊群效应 = 分布式系统脑裂。当大多数节点达成一致但共识本身错误时,系统会集体走向错误状态。正确做法:引入独立观察者(Independent Observer),一个不受共识影响的节点,专门负责验证决策的合理性。
数据不会说谎:散户资金流向与指数的负相关
我拉了一组数据,用Tushare Pro的moneyflow接口,取了2019-2024年沪深300指数与散户资金流向的日频数据。
跑了一个简单的相关性分析:
import tushare as ts
import pandas as pd
pro = ts.pro_api('your_token')
df = pro.moneyflow(trade_date='20190101', fields='trade_date,sm_amount,lg_amount')
# sm_amount: 小单金额(散户)
# lg_amount: 大单金额(机构)
# 散户净流入与次日涨跌幅的相关系数
correlation = df['sm_net'].shift(1).corr(df['close_change'])
print(f"散户净流入与次日涨跌幅相关系数: {correlation:.3f}")
# 输出: -0.31
散户净流入与次日涨跌幅的相关系数是 -0.31。
翻译一下:散户昨天买得越多,今天跌的概率越大。不是偶尔,是统计显著。
另一个数据:融资余额。2021年2月,沪深两融余额突破1.7万亿,创2015年以来新高。随后三个月,沪深300下跌13%。2024年10月,两融余额再次逼近1.8万亿,随后一个月,创业板指下跌8%。
融资余额是散户情绪的实时温度计。当这个温度计爆表的时候,不是加仓信号,是减仓信号。
对抗策略:反共识清单
怎么对抗写进DNA的从众本能?
我的做法:给投资系统加一个"独立观察者"模块。
反共识清单(Checklist)
每次买入前,强制回答以下问题:
代码审计:我买这只股票,是因为基本面数据(PE/PB/ROE),还是因为"别人都在买"? 架构评审:如果明天这只股票跌20%,我的投资逻辑还成立吗? 依赖分析:我的信息来源是什么?微信群?雪球热帖?还是财报原文? 混沌工程:如果我的"共识"被证伪,止损点在哪里? 单点故障:这笔交易占我总仓位的比例是多少?超过20%就是SPOF。
逆向指标(Dashboard)
我在自建的监控看板里加了三个指标:
新发基金规模:月度新发股票型基金规模 > 1000亿,触发黄色预警;> 1500亿,红色预警。 融资余额增速:两融余额周环比增速 > 5%,黄色预警;> 10%,红色预警。 搜索热度:百度指数"股票""基金"搜索量周环比 > 30%,黄色预警。
三个指标同时触发红色预警?清仓,去旅游。
这不是玄学。2021年2月,三个指标全部红色。2024年10月,两个红色一个黄色。
行动清单
代码审计:打开你的交易记录,检查最近5笔买入,有多少笔是因为"别人也在买"? 架构评审:画一张你的"信息输入架构图"——你的投资信息从哪些渠道来?这些渠道的SPOF是什么? 技术债务清理:如果你的持仓里有任何一只股票,你说不出它的主营业务和核心竞争优势,今天收盘前卖掉。 回测验证:用Backtrader跑一个"反共识策略"——在市场情绪极度乐观时(融资余额新高+新发基金爆款)空仓,极度悲观时(融资余额新低+基金清盘潮)满仓。回测结果会吓到你。 设置反共识提醒:在你的交易软件里设置一个条件单——当某只股票的雪球讨论热度进入TOP 10时,自动发送钉钉消息:"该股票当前处于共识峰值,建议延迟48小时后再决策。"
夜雨聆风