3、情绪与市场:过度自信、损失厌恶、后悔厌恶、处置效应
各位同学,咱们今天聊点实在的。
做量化策略,很多人以为拼的是数学、拼的是代码。其实不然。我做了这么多年,发现真正让策略亏钱的,往往不是模型错了,而是人自己出了问题。说白了,就是情绪在作祟。
你想想看,一个完美的回测曲线,实盘一跑就变形。为什么?因为回测里没有「人」这个变量。而实盘里,全是活生生的人——包括你自己。
核心观点:行为金融学不是玄学,它是可以量化的。今天讲的四种情绪偏差,每一种都能写成因子,放进你的回测框架里。
3.1 过度自信:你以为你比市场聪明?
过度自信,是我在交易员身上见过最多的毛病。包括我自己,早期也吃过这个亏。
什么叫过度自信?就是你觉得自己的判断比实际更准。比如你预测某只股票要涨,概率明明只有60%,你心里却觉得有90%。
量化表现:
- 交易频率异常高——越自信,越爱动
- 持仓集中度偏高——不敢分散,怕稀释收益
- 止损设置过窄——觉得「我选的票不可能跌」
我的经验:我曾经给一个私募团队做策略优化,发现他们的换手率是同类策略的3倍。一查,原来是基金经理每天看盘,越看越觉得自己能「做T」赚钱。结果呢?手续费吃掉了一半利润。后来我强制加了一条规则:每日交易次数上限。效果立竿见影。
怎么在策略里捕捉过度自信?我建议用这个指标:
# 过度自信因子:基于持仓集中度与换手率的复合指标
def overconfidence_factor(portfolio):
# 持仓集中度:前3大持仓占比
top3_weight = portfolio['weight'].nlargest(3).sum()
# 换手率:过去20日平均
turnover = portfolio['turnover'].rolling(20).mean()
# 复合因子
factor = top3_weight * turnover
return factor
这个因子值越高,说明该交易者越可能处于过度自信状态。你可以用它来做反向指标——因子值过高时,减仓。
3.2 损失厌恶:亏100块的痛,赚200块都补不回来
行为金融学里有个经典实验:给你两个选择——A. 确定赚50块;B. 50%概率赚100块,50%概率赚0块。大多数人选A。但如果换成亏损:A. 确定亏50块;B. 50%概率亏100块,50%概率亏0块。大多数人选B。
为什么会这样?因为人对损失的敏感度,大约是对收益的2倍。这就是损失厌恶。
在策略中的体现:
- 浮亏时死扛,浮盈时早早了结
- 止损位形同虚设——「再等等,马上就反弹了」
- 喜欢卖赢补亏——把赚钱的票卖掉,去补仓亏钱的
避坑指南:我曾经见过一个策略,回测时夏普比率2.0,实盘直接腰斩。原因就是策略里没有考虑「人的止损执行力」。回测假设你会在-5%时止损,但实盘里你根本下不去手。所以我现在做策略,一定会加一个「行为损耗系数」,默认打8折。
量化损失厌恶,可以用这个思路:
# 损失厌恶指标:基于持仓盈亏状态的交易行为分析
def loss_aversion_analysis(trades):
# 盈利交易的平均持有期
win_hold = trades[trades['pnl'] > 0]['hold_days'].mean()
# 亏损交易的平均持有期
loss_hold = trades[trades['pnl'] < 0]['hold_days'].mean()
# 比值越大,损失厌恶越严重
aversion_ratio = loss_hold / win_hold
return aversion_ratio
这个比值如果大于1.5,说明交易者明显存在「死扛亏损、急于止盈」的倾向。嗯,这时候就要小心了。
3.3 后悔厌恶:怕犯错,比犯错本身更可怕
后悔厌恶,说白了就是「怕自己做了错误决定之后会后悔」。这种情绪会导致两个极端:
- 不作为偏差:明明该调仓了,但怕调错,干脆不动
- 从众行为:跟着大家买,就算亏了也不丢人——「大家都亏嘛」
我记得有个案例特别典型。2015年股灾前,很多基金经理其实已经看到估值泡沫了,但没人敢减仓。为什么?因为减仓了万一继续涨,会被骂「踏空」。结果呢?大家都死扛,一起亏。这就是后悔厌恶在作祟。
量化识别方法:
| 指标 | 计算公式 | 后悔厌恶特征 |
|---|---|---|
| 持仓调整频率 | 调仓次数 / 交易天数 | 显著低于同类策略 |
| 行业集中度 | 前3大行业占比 | 与市场基准高度一致 |
| 极端行情反应 | 单日跌幅>5%时的操作 | 倾向于不操作或反向操作 |
我的建议:如果你发现自己的策略在极端行情下「一动不动」,别急着夸自己淡定。先检查一下,是不是后悔厌恶在作怪。我个人的做法是:提前写好「极端行情操作清单」,到了那个点就执行,不给自己犹豫的机会。
3.4 处置效应:卖赢留亏,你中招了吗?
处置效应,是损失厌恶的一个具体表现。简单说就是:投资者倾向于过早卖出盈利的股票,而长期持有亏损的股票。
你想想看,你的账户里是不是经常这样:
- 那只赚了10%的票,你早早卖掉了
- 那只亏了20%的票,你还死死拿着
为什么会这样?因为卖掉盈利的票,你能获得「落袋为安」的快感。而卖掉亏损的票,意味着你要承认自己错了——这太痛苦了。
量化处置效应:
# 处置效应检测:计算盈利/亏损持仓的卖出概率
def disposition_effect(portfolio, price_data):
# 计算每只持仓的盈亏比例
portfolio['return'] = (price_data - portfolio['cost']) / portfolio['cost']
# 盈利持仓的卖出概率
win_sell_prob = portfolio[portfolio['return'] > 0]['sold'].mean()
# 亏损持仓的卖出概率
loss_sell_prob = portfolio[portfolio['return'] < 0]['sold'].mean()
# 处置效应系数:大于1说明存在处置效应
effect = win_sell_prob / loss_sell_prob
return effect
这个系数如果大于1.5,说明处置效应已经很明显了。我见过最夸张的一个账户,这个系数到了4.2——盈利的票几乎全卖了,亏损的票一个没动。
实战建议:如果你在做量化策略,我强烈建议你把处置效应作为一个风险因子加入模型。具体做法是:当策略持仓中出现「盈利仓位的平均持有期 < 亏损仓位的平均持有期」时,触发风控警报,强制减仓10%。
3.5 四种情绪的综合影响
这四种情绪不是孤立存在的。它们经常同时出现,互相强化。比如:
- 过度自信 → 频繁交易 → 亏损 → 损失厌恶 → 死扛 → 后悔厌恶 → 不敢动 → 处置效应 → 卖赢留亏
你看,一个完整的「亏钱链条」就出来了。
我个人的做法是,在策略框架里加一个「行为情绪综合评分」:
# 行为情绪综合评分
def behavioral_score(portfolio, trades):
oc = overconfidence_factor(portfolio) # 过度自信
la = loss_aversion_analysis(trades) # 损失厌恶
de = disposition_effect(portfolio) # 处置效应
# 综合评分(归一化后加权)
score = 0.3 * oc + 0.4 * la + 0.3 * de
return score
当这个评分超过阈值时,我会启动「冷静模式」——降低仓位、减少交易频率、扩大止损范围。说白了,就是让机器来管住人。
最后提醒一句:别以为量化了情绪,你就不会被情绪影响。我做了这么多年,该犯的错一个没少。区别在于,我现在知道什么时候自己可能犯错了。知道,就是改变的开始。
这张图把四种情绪偏差的关系理清楚了。你可以看到,它们不是孤立的,而是互相影响、互相强化。做策略的时候,别只看单一指标,要综合评估。
核心总结:情绪不是敌人,无视情绪才是。把行为偏差量化,纳入你的策略框架,你会发现——原来亏钱是有规律的。而规律,就是可以赚钱的。