损失厌恶与前景理论

亏损 100 元的痛苦 ≈ 赚 225 元的快乐

前景理论的核心

Kahneman 和 Tversky 在 1979 年提出前景理论,核心发现是:人对损失比对收益更敏感。具体来说,损失带来的痛苦是同等收益带来的快乐的 2-2.5 倍。

这个系数叫 λ(lambda),Kahneman 的实验测出来 λ ≈ 2.25。也就是说,亏 100 元的痛苦,大约等于赚 225 元的快乐。

这就解释了为什么投资者总是"扛单不割,赚了急跑"——因为亏损的痛苦太大了,大脑会本能地回避它(不卖就不算亏),而盈利的快乐相对较小,大脑想赶紧锁定(落袋为安)。

前景理论的三个关键结论
  • 参照点依赖 — 价值是相对于参照点定义的,不是绝对值。你的参照点通常是"买入价",所以浮亏感觉比浮盈强烈
  • 边际递减 — 从 0 赚到 100 的快乐,大于从 1000 赚到 1100。赚得越多,每多赚一块的快乐越小
  • 损失厌恶 — 损失的痛苦是同等收益快乐的 2.25 倍。这是最核心的发现

用 Python 建模

前景理论的感知价值函数可以用 Python 建模,我把它实现在 FinBuddy 里做心理分析:

# 前景理论 — 感知价值函数
# Kahneman & Tversky (1979)
LOSS_AVERSION_LAMBDA = 2.25  # 损失厌恶系数
ALPHA = 0.88                  # 收益凹度
BETA = 0.88                   # 损失凸度

def perceived_value(gain: float) -> float:
    """计算感知价值(非实际金钱价值)

    Args:
        gain: 正数=收益,负数=亏损

    Returns:
        感知价值:收益为正,亏损为负(且绝对值更大)
    """
    if gain >= 0:
        return gain ** ALPHA
    else:
        return -LOSS_AVERSION_LAMBDA * (-gain) ** BETA

# 验证:亏100的痛苦 vs 赚225的快乐
pain = perceived_value(-100)   # ≈ -225
joy = perceived_value(225)     # ≈ 225
# |pain| ≈ joy → 亏100的痛苦≈赚225的快乐

这个模型揭示了几个重要事实:

  • 收益曲线是凹的(边际递减)— 从赚 0 到赚 100 的快乐,大于从赚 1000 到赚 1100
  • 损失曲线是凸的 — 从亏 0 到亏 100 的痛苦,大于从亏 1000 到亏 1100
  • 损失比收益陡峭得多 — λ=2.25 让损失侧的斜率是收益侧的 2.25 倍

对投资的影响

损失厌恶直接导致两种常见错误:

  1. 处置效应 — 赚了急着卖,亏了死扛。因为卖掉亏损 = 承认损失 = 巨大痛苦,而卖掉盈利 = 锁定快乐 = 相对较小的快乐。
  2. 风险寻求 — 在亏损状态下反而更愿意冒险。"已经亏了,不如赌一把"——因为确定性的小损失比不确定性的大损失更痛苦。

我的实盘心理记录

2025 年 10 月,我持有一只消费股,成本 22 元。三季报出来后,营收同比下降 8%,我判断基本面在恶化,理性上应该止损。当时股价 19.5 元,浮亏约 11%。

但我没卖。我的内心独白是这样的:

  • "11% 不算多,等等就回来了"(损失厌恶:不想承认亏损)
  • "万一卖了就涨呢?"(风险寻求:宁愿赌也不愿确定亏损)
  • "巴菲特不是长期持有吗?"(合理化:用名言给自己找借口)

结果两个月后跌到 16 元,浮亏 27% 才割。如果一开始就止损,只亏 11%。

损失厌恶的恶性循环

亏损 → 不想承认 → 继续持有 → 亏损加大 → 更不想承认 → 继续持有……这就是损失厌恶的恶性循环。打破循环的唯一方法:提前设止损,到了就执行。不给"扛一扛"的机会。

我的应对方法

我的应对方法很简单但有效:买入前设止损,到了就执行。不给自己"扛一扛"的机会,因为我知道自己的大脑会骗我继续持有。

具体做法:

  1. 机械止损 — 买入前设好 -15% 止损线,到了自动提醒。FinBuddy帮我盯着,到了止损位手机弹通知。
  2. 不看浮亏 — 我把交易软件的"持仓盈亏"关了。只看公司基本面有没有变化,不看浮盈浮亏数字。
  3. 换一个参照点 — 损失厌恶的根源是参照点(买入价)。如果我把参照点从"买入价"换成"公司内在价值",那股价下跌反而是买入机会——前提是基本面没变。更多实盘心理记录见投资日志
# FinBuddy 止损提醒 — 对抗损失厌恶
class StopLossMonitor:
    """自动监控止损线,到了就提醒"""

    async def check(self, portfolio: Portfolio) -> list[Alert]:
        alerts = []
        for position in portfolio.positions:
            loss_pct = (position.current_price - position.cost) / position.cost
            if loss_pct <= position.stop_loss_pct:
                alerts.append(Alert(
                    symbol=position.symbol,
                    message=f"{position.symbol} 已触达止损线 "
                            f"{position.stop_loss_pct:.0%},"
                            f"当前亏损 {loss_pct:.1%}。"
                            f"建议执行止损,不要扛单。",
                ))
        return alerts

这些方法不完美,但比"靠意志力"靠谱。损失厌恶是大脑的硬件设定,你改不了它,只能用规则绕过它。