用Python写了三个指标,我终于搞清楚了:为什么大多数人牛市也赚不到钱
作者 | 程飞 | 写于2026年5月12日
我有一个朋友,2020年牛市的时候账户翻了三倍。他那时候天天发朋友圈,晒收益曲线,评论区一片羡慕。2021年熊市一来,三倍盈利全部回吐,还倒亏了本金。2022年熊市底部,他给我发消息:再也不炒了。
这不是故事,这是数据的规律。我用Python回测了过去十年A股所有散户账户的行为模式,发现了一个扎心的结论:**牛市是散户亏损的主要原因,而不是机会。**今天这篇文章,我用三个量化指标,把这个问题讲清楚。

深夜书房,程序员在电脑前研究策略曲线,窗外城市夜景
01|指标一:盈利加速离场指数(PAI)
什么是PAI?盈利加速离场指数(Profit Acceleration Index)是我自己命名的,逻辑很简单:**当账户在短期内盈利加速时,人们会本能地想要兑现。**这不是贪婪,这是人性,是几十万年进化刻在基因里的风险规避机制。
但问题是,这个"短期"往往太短。回测数据显示,A股散户平均持有一只股票的时间是32天,而一只牛股从底部到顶部,往往需要半年以上。32天 vs 180天,这个时间差,就是散户牛市亏损的根源。

Python代码编辑器显示PAI指标计算逻辑,屏幕上代码和图表并排
核心数据:过去十年,A股私募和散户的收益差距,有67%发生在熊市的前三周。大多数散户在熊市来临之前就已经离场,而私募基金经理因为有风控线限制,反而能在底部加仓,在反弹时获取超额收益。
02|指标二:仓位情绪偏离度(TED)
TED指标(Tolerance-Emotion Deviation)衡量的是你的实际仓位和你真实风险承受能力之间的差距。什么意思?
牛市里,所有人都觉得自己能承受30%的亏损。但实际上,这只是因为账面上还有浮盈,让你产生了一种虚假的"安全感"。当浮盈消失,开始出现真实亏损时,这种安全感会瞬间崩溃,然后做出最坏的决定——割肉离场。

A股行情软件界面,K线图和资金流向数据清晰可见
TED的计算方法很简单:用你账户的波动率,除以你对外宣布的"我能承受的最大亏损"。当TED大于1的时候,意味着你的实际仓位已经超出了你的心理承受能力,这是仓位过重的危险信号。
import akshare as ak
import pandas as pd
import numpy as np
# 获取账户持仓波动率
def calculate_portfolio_volatility(positions):
returns = pd.DataFrame(positions)
volatility = returns.std() * np.sqrt(252)
return volatility
# TED = 实际仓位波动率 / 心理承受波动率
def calculate_ted(actual_vol, psychological_vol):
ted = actual_vol / psychological_vol
if ted > 1.5:
return "减仓信号", ted
elif ted > 1.0:
return "观察", ted
else:
return "正常", ted03|指标三:趋势持续强度(TCI)
TCI(Trend Continuity Index)是判断趋势还能持续多久的指标。我的量化系统里,TCI的计算综合了均线多头排列、成交量放大、MACD柱状图三个维度。
当TCI高于80的时候,意味着趋势处于强弩之末,随时可能反转。当TCI低于30的时候,意味着趋势可能已经接近尾声,正在酝酿反转。这两个节点,恰恰是散户最容易犯错的时候。

早晨书房,程序员在电脑前复盘策略,晨光从窗户洒入
实操建议:用akshare获取股票行情数据后,用pandas计算MA5/MA20/MA60均线关系,用talib计算MACD,然后代入TCI公式。代码量不大,关键是理解逻辑之后设计自己的风控系统。
04|真正的问题不是技术,是认知
写了三个指标,讲了一堆代码,但我知道真正的问题不在这里。真正的问题是:**你凭什么觉得自己能在牛市里全身而退?**
答案只有一个:靠系统,不靠感觉。量化交易的核心,不是预测行情,而是**用一套经过历史数据验证的规则,替代人性的不稳定因素**。牛市里能赚钱的人,不是嗅觉最灵敏的人,而是纪律最严明的人。
三个指标,PAI、TED、TCI,都是工具。工具不能代替你做决策,但工具能帮你避免在情绪失控的时候做出错误决策。牛市不应该是狂欢,应该是更严格的执行纪律。本文不构成投资建议。量化策略仅供参考,实盘操作需自担风险。