基于埃德温·勒费弗,Reminiscences of a Stock Operator (1923)
股票作手回忆录是杰西·利弗莫尔的虚拟传记,被广泛认为是市场历史上最伟大的投机者之一。以"拉里·利文斯顿"的故事形式写成,本书记录了他从十几岁的投机交易厅的小交易员成长为华尔街最令人畏惧的大炒家的历程。
本书不是交易手册——它是一个故事。然而,嵌入在这个故事中的是高度具体且反复展示的交易原则,可以提取和系统化。
利弗莫尔的方法是一个全权动的动量系统,结合了:
利弗莫尔做出了尖锐的区分:
| 投机 | 赌博 |
|---|---|
| 基于分析观察 | 基于希望和小道消息 |
| 等待有利条件 | 冲动行事 |
| 系统管理风险 | 忽视风险 |
| 频繁接受错误 | 无法接受亏损 |
| 专注于过程 | 专注于结果 |
"投机是世界上最吸引人的游戏。但这不是愚蠢者、思维懒惰者、情绪平衡不佳者或快速致富冒险家的游戏。"
盘面阅读是解释价格和成交量行为以确定:
| 信号 | 解读 |
|---|---|
| 价格上涨伴随成交量增加 | 真实需求;积累 |
| 价格上涨伴随成交量减少 | 弱势反弹;潜在反转 |
| 价格下跌伴随成交量增加 | 真实供应;派发 |
| 价格下跌伴随成交量减少 | 卖压枯竭;潜在支撑 |
| 价格在某一价位反复停滞 | 阻力(从下方)或支撑(从上方) |
| 突然大量成交 | 高潮事件——潜在衰竭或突破 |
| 当市场下跌时股票拒绝下跌 | 相对强势;知情买家积累 |
| 当市场上涨时股票未能反弹 | 相对弱势;知情卖家派发 |
除了简单的方向,利弗莫尔评估移动的质量:
利弗莫尔学会了区分真实移动和制造出来的移动:
最小阻力之路是市场或股票最可能移动的方向。它是最小摩擦的路径——即趋势。
"价格,像所有其他事物一样,沿着最小阻力之路移动。它们会做最容易的事。"
关键时刻是股票突破交易区间时:
股票在100-110之间震荡数周
如果突破110 → 最小阻力之路向上 → 买入
如果跌破100 → 最小阻力之路向下 → 卖出/做空
在100-110之间时 → 方向不明确 → 什么都不做
"我从不在回调时买入。我总是在最小阻力之路确立后——当价格突破阻力位时——才买入。"
| 规则 | 详情 |
|---|---|
| 顺着趋势方向交易 | 永远不要对抗最小阻力之路 |
| 等待清晰 | 如果方向不确定,保持空仓 |
| 用总体市场确认 | 当与广泛市场方向一致时,股票的最小阻力之路最强 |
| 不要预判 | 等待突破,不要试图走在前面 |
支点(利弗莫尔的术语)是一个关键价位,股票行为的特征在此发生变化。这是新趋势开始或现有趋势加速的点。
反转支点:
1. 股票处于明确定义的趋势中(上升或下降)
2. 价格达到一个极值并反转
3. 进行整合或反向移动
4. 价格在新的方向恢复,确认反转
5. 那个极值价格**就是**支点
延续支点:
1. 股票处于明确定义的趋势中
2. 价格暂停并整合(交易区间)
3. 价格在先前趋势的**方向**上突破区间
4. 那个突破水平**就是**延续支点
"每当我有耐心等待价格到达我所说的'支点'才开始交易时,我总是赚钱的。"
利弗莫尔从不一次投入全部仓位。他使用试探策略:
预期仓位:5,000 股
试探 1:100 时买入 1,000 股(支点突破)
→ 股票上涨到 104
试探 2:104 时买入 1,000 股(确认)
→ 股票上涨到 108
试探 3:108 时买入 3,000 股(完全投入)
→ 平均成本:约 106
→ 所有购买从一开始就盈利
| 规则 | 详情 |
|---|---|
| 只在支点买入 | 永远不要随机或冲动买入 |
| 在突破时买入,不在回调时 | "我从来不在下跌时买入。我总是在股票突破阻力位后才买入。" |
| 每次买入必须在更高价格 | 金字塔中每次后续购买必须高于前一次——这确认了趋势 |
| 市场必须立即确认 | 如果买入后股票没有迅速朝有利方向移动,有什么地方出了问题 |
| 使用试探来测试 | 小初始仓位验证你的分析后再投入资金 |
| 与总体市场一致 | 只有当总体市场的最小阻力之路也向上时,才买入 |
"我做错了恰恰相反的事。棉花显示我亏损,我持有它。小麦显示我盈利,我卖掉了。在所有投机错误中,很少有比试图平均化一个失败的游戏更大的错误了。"
| 触发器 | 行动 |
|---|---|
| 仓位显示超出容忍的亏损 | 立即卖出——不要希望恢复 |
| 股票入场后没有移动 | 出场——如果股票没有迅速确认,你是错的 |
| 股票反转穿过支点 | 出场——模式失效 |
| 总体市场反转 | 减少或平掉所有仓位 |
| 板块群体走弱 | 出场该群体中的股票 |
| 利润缓冲:尾随行为恶化 | 激进收紧止损 |
| 高潮动作(巨量、宽幅) | 获利了结——这通常是走势的结束 |
"让我赚大钱的从来不是我的思考。一直是我的持仓。明白吗?是我的持仓不动!"
利弗莫尔的金字塔是一个基于确认的缩放系统:
买入 3:108 时买入 3,000 股
┌──────────────────────────────┐
买入 2:104 时买入 1,000 股
┌────────────────────────────┐
买入 1:100 时买入 1,000 股
┌──────────────────────────────┘
每一级必须在添加下一级之前盈利
总计:5,000 股,平均成本约 106
当前价格:108+ → 整个仓位都盈利
| 原则 | 详情 |
|---|---|
| 永远不要风险超过你能承受的 | 资本保全至关重要 |
| 基于信念和确认确定规模 | 只有在市场证明你正确后才增加仓位 |
| 永远不要一次"全押" | 始终先试探 |
| 亏损后减少规模 | 连续亏损意味着你的判断有误——更小交易 |
| 盈利后增加规模 | 连续盈利意味着你与市场同步——发挥你的优势 |
| 保持现金储备 | 永远不要 100% 投资——始终有资金等待机会 |
这是利弗莫尔最强调的规则之一:
"如果你的第一笔交易显示你亏损,做第二笔交易是愚蠢的。永远不要平均化亏损。"
平均化下跌:
"所有事物都有时机,但我不知道那是什么时候。这恰恰是华尔街那么多人失败的原因……有一种傻瓜总是试图一直交易。"
层级:
1. 总体市场方向(最重要)
└── 2. 板块/群体方向
└── 3. 个股选择
└── 4. 入场时机(支点)
| 规则 | 详情 |
|---|---|
| 顺着总体市场交易 | 在牛市中做多。在熊市中做空或空仓 |
| 不要对抗盘面 | 如果市场对你不利,退出——不要争辩 |
| 等待清晰 | 如果你无法确定市场方向,持仓现金 |
| 观察背离 | 如果领涨股开始失败而平均保持,等待危险 |
| 市场领先新闻 | 价格行为在新闻公开之前移动 |
| 不确定时持仓现金 | "有一种普通的傻瓜……还有一种华尔街傻瓜,他认为必须一直交易" |
"我对群体的行为产生了兴趣……如果某一群体中的一只股票被内部人士推高,那么该群体中的其他股票产生共鸣是自然的。"
同一行业的股票 tend to move together。这可以用于:
| 规则 | 应用 |
|---|---|
| 交易群体的领导者 | 强势群体中的最强股票具有最佳风险/回报 |
| 用群体确认 | 当整个群体强势时,个股突破更可靠 |
| 背离是警告 | 如果你的股票与其群体背离,重新评估仓位 |
| 每个周期都会出现新领导者 | 不要假设上一个周期的领涨群体会再次领涨 |
| 观察群体轮动 | 资金从一个板块流向另一个——跟随资金 |
利弗莫尔会同时交易同一群体中的两只或更多股票:
利弗莫尔在空头方面同样自如。他的做空方法与做多方法镜像:
| 规则 | 详情 |
|---|---|
| 只在熊市中做空 | 总体市场必须在下降趋势中 |
| 做空最弱的股票 | 寻找显示相对弱势的股票(未能随市场反弹) |
| 在支点做空 | 就像你向上突破买入一样,向下突破做空——价格跌破支撑/支点 |
| 先试探 | 从小空头仓位开始,如果确认则加仓 |
| 在反弹时回补 | 如果股票急剧反弹对你的空头不利,回补——不要希望 |
| 观察空头挤压 | 熊市中急剧反弹可能很剧烈——严格管理风险 |
| 时机你的空头 | 最好在下降趋势中反弹失败后开始做空 |
利弗莫尔最著名的做空:
关键教训:最大利润来自为主要市场转折正确建仓——而不是频繁交易
| 规则 | 理由 |
|---|---|
| 永远不听从小道消息 | "小道消息!人们是多么想要小道消息!他们渴望得到,不仅渴望给予。" |
| 做你自己的分析 | "一个人必须相信自己和他的判断,如果他希望在这个游戏中谋生的话。" |
| 忽略意见 | 其他人的意见——包括专家——是不可靠的 |
| 盘面是唯一的真理 | 价格和成交量不会说谎;其他都是解读 |
| 规则 | 详情 |
|---|---|
| 交易中没有希望 | 希望是给失败者的——如果交易不顺利,出场 |
| 正确时没有恐惧 | 当你的分析被确认时,用信念行动 |
| 没有自我 | 错误是正常的——损害来自于保持错误 |
| 没有报复交易 | 亏损后,最糟糕的事情是立即试图"挽回损失" |
| 耐心至上 | 等待建仓。等待确认。等待利润 |
| 独立 | "我一直单独行动……在自己知道的合理理论上运作已经够难了。" |
| 规则 | 详情 |
|---|---|
| 生病或分心时不交易 | 心智清明至关重要 |
| 保持详细记录 | 追踪每笔交易、推理和结果 |
| 定期回顾错误 | "每次我亏钱我都获得了经验" |
| 在市场开盘前有计划 | 提前知道你的支点、止损和目标 |
| 不要过度交易 | "不管条件如何都渴望持续行动是许多亏损的原因。" |
| 尊重市场 | "市场永远不会错。意见往往是错的。" |
来自利弗莫尔自己付出代价的经验:
| 错误 | 后果 | 教训 |
|---|---|---|
| 平均化下跌 | 在亏损仓位上巨额亏损 | "永远不要平均化亏损"——始终加仓赢家,从不加仓输家 |
| 听从小道消息行动 | 跟随别人建议时反复亏钱 | 做你自己的分析;小道消息是给侍者的 |
| 逆势交易 | 对抗盘面造成的亏损 | 始终顺着最小阻力之路交易 |
| 过度交易 | 佣金拖累和精神疲劳 | 只有在条件明显有利时才交易 |
| 过早卖出赢家 | 错过了支付所有亏损的大走势 | "让我赚大钱的从来不是我的思考——是我的持仓" |
| 不耐心 | 在适当信号形成前入场 | 等待支点;等待确认 |
| 忽略总体市场 | 个股盈利被市场下跌抹去 | 总体市场凌驾于一切 |
| 对仓位的情感依恋 | 持有亏损希望恢复 | 将仓位作为商业提案,而非个人 |
| 不确定时交易 | 随机结果,资本逐渐侵蚀 | 当有疑问时,保持空仓 |
| 将牛市与智慧混淆 | 盈利期后的过度自信 | 市场给予和索取——保持谦逊 |
| 听信内部人士 | 内部人士有自己的议程 | 即使真正的内部消息在时机上也可能是错的 |
| 不保持现金储备 | 无法在最有机会时利用 | 始终保持干火药 |
基于利弗莫尔处理一只股票的方法(来自本书示例的组合):
总体市场:确认上升趋势——广泛上涨,浅回调
→ 最小阻力之路:向上
→ 决策:寻找做多机会
观察:钢铁股显示异常强势
→ 美国钢铁、伯利恒钢铁、共和钢铁都在上涨
→ 成交量在整个群体中增加
→ 群体表现优于总体市场
→ 决策:专注于钢铁股寻找做多入场
股票:伯利恒钢铁
→ 钢铁群体的领导者(最强势的相对表现)
→ 上涨时成交量增加
→ 在90-100之间震荡数周
→ 识别到的支点:100(区间上界)
第1天:价格以巨量突破100
→ 行动:在100.50买入1,000股(试探1)
→ 止损:在98下方(支点下方)
第3天:价格上涨到104
→ 股票正在确认——如预期表现
→ 行动:在104.00买入1,000股(试探2)
→ 将整个仓位的止损提高到100
第7天:价格上涨到108,钢铁群体保持强势
→ 总体市场仍在上升趋势中
→ 所有试探都盈利
→ 行动:在108.00买入3,000股(完全投入)
→ 总计:5,000股,平均成本约106
→ 止损提高到104(最近支撑位下方)
第2-6周:价格从108上涨到130
→ 每周:将止损跟踪到最近回调低点下方
→ 第2周:止损在106(回调低点下方)
→ 第3周:止损在112
→ 第4周:止损在118
→ 第5周:止损在124
→ "是持仓让我赚了钱。"
第7周:价格以巨量达到135(高潮日)
→ 整个走势中最高成交量的一天
→ 其他钢铁股开始未能创新高
→ 总体市场变得震荡
→ 决策:将止损激进收紧到130
第8周:价格跌破130
→ 止损在130触发
→ 以130卖出5,000股
→ 平均成本:106
→ 每份利润:$24
→ 总利润:$120,000
→ 持仓现金,等待下一个清晰的机会
def assess_market_direction(market_data):
"""
确定总体市场的最小阻力之路。
返回:牛市、看跌或不清楚
"""
# 检查趋势结构
recent_highs = get_swing_highs(market_data, lookback=60)
recent_lows = get_swing_lows(market_data, lookback=60)
higher_highs = is_ascending(recent_highs)
higher_lows = is_ascending(recent_lows)
lower_highs = is_descending(recent_highs)
lower_lows = is_descending(recent_lows)
# 检查广度
advance_decline = market_data.advances / (market_data.advances + market_data.declines)
new_highs_ratio = market_data.new_highs / (market_data.new_highs + market_data.new_lows)
# 检查成交量模式
up_volume_ratio = market_data.up_volume / market_data.total_volume
if higher_highs and higher_lows and advance_decline > 0.55:
return "牛市"
elif lower_highs and lower_lows and advance_decline < 0.45:
return "看跌"
else:
return "不清楚"
def analyze_group_strength(stocks_in_group, market_data, lookback=20):
"""
评估一个板块群体是否显示强势或弱势。
"""
group_metrics = {
'avg_return': mean([stock.return_pct(lookback) for stock in stocks_in_group]),
'pct_above_50ma': sum(1 for s in stocks_in_group if s.close > s.ma50) / len(stocks_in_group),
'avg_relative_strength': mean([
stock.return_pct(lookback) - market_data.return_pct(lookback)
for stock in stocks_in_group
]),
'volume_trend': mean([stock.volume_ratio_20d for stock in stocks_in_group]),
'new_highs_count': sum(1 for s in stocks_in_group if s.close >= s.high_52w * 0.95)
}
strength_score = 0
if group_metrics['avg_return'] > 0: strength_score += 1
if group_metrics['pct_above_50ma'] > 0.7: strength_score += 1
if group_metrics['avg_relative_strength'] > 0.02: strength_score += 1
if group_metrics['volume_trend'] > 1.2: strength_score += 1
if group_metrics['new_highs_count'] >= 2: strength_score += 1
if strength_score >= 4:
return "强势"
elif strength_score <= 1:
return "弱势"
else:
return "中性"
def detect_pivot_points(daily_bars, min_range_days=10):
"""
识别支点(交易区间的突破水平)。
"""
pivots = []
# 找到交易区间(整合期)
ranges = find_trading_ranges(daily_bars, min_days=min_range_days)
for tr in ranges:
pivot = {
'upper_boundary': tr.high, # 阻力位
'lower_boundary': tr.low, # 支撑位
'duration': tr.num_days, # 区间持续时间
'type': None, # 突破时设置
'breakout_confirmed': False
}
# 检查突破
bars_after_range = daily_bars.after(tr.end_date)
for bar in bars_after_range:
if bar.close > tr.high:
pivot['type'] = '看涨突破'
pivot['breakout_price'] = bar.close
pivot['breakout_volume'] = bar.volume
pivot['volume_ratio'] = bar.volume / tr.avg_volume
# 确认:成交量应该高于平均
if pivot['volume_ratio'] > 1.5:
pivot['breakout_confirmed'] = True
pivots.append(pivot)
break
elif bar.close < tr.low:
pivot['type'] = '看跌突破'
pivot['breakout_price'] = bar.close
pivot['breakout_confirmed'] = True
pivots.append(pivot)
break
return pivots
class LivermorePosition:
"""
使用利弗莫尔的试探和金字塔方法管理仓位。
"""
PROBE_1_SIZE = 0.20 # 预期仓位的 20%
PROBE_2_SIZE = 0.20 # 预期仓位的 20%
FULL_SIZE = 0.60 # 预期仓位的 60%
def __init__(self, stock, intended_shares, pivot_point):
self.stock = stock
self.intended_shares = intended_shares
self.pivot_point = pivot_point
self.entries = []
self.state = "观察中" # 观察中 → 试探1 → 试探2 → 完全 → 跟踪 → 已平仓
self.stop_loss = None
def evaluate(self, current_bar):
if self.state == "观察中":
# 等待支点突破
if current_bar.close > self.pivot_point and current_bar.volume > avg_volume * 1.5:
shares = int(self.intended_shares * self.PROBE_1_SIZE)
self.buy(shares, current_bar.close, "试探1")
self.stop_loss = self.pivot_point - small_margin
self.state = "试探1"
elif self.state == "试探1":
if current_bar.low <= self.stop_loss:
self.close_all(self.stop_loss, "试探1止损触发")
self.state = "已平仓"
elif self.entries[-1]['pnl_pct'] > 0.03: # 试探3%+盈利
shares = int(self.intended_shares * self.PROBE_2_SIZE)
self.buy(shares, current_bar.close, "试探2")
self.stop_loss = self.entries[0]['price'] # 将止损提高到第一次入场
self.state = "试探2"
elif self.state == "试探2":
if current_bar.low <= self.stop_loss:
self.close_all(self.stop_loss, "试探2止损触发")
self.state = "已平仓"
elif self.entries[-1]['pnl_pct'] > 0.03:
shares = int(self.intended_shares * self.FULL_SIZE)
self.buy(shares, current_bar.close, "完全")
self.stop_loss = self.entries[1]['price'] # 将止损提高到第二次入场
self.state = "完全"
elif self.state == "完全":
# 跟踪止损到最近摆动低点下方
recent_swing_low = find_recent_swing_low(self.stock.bars)
if recent_swing_low > self.stop_loss:
self.stop_loss = recent_swing_low - small_margin
if current_bar.low <= self.stop_loss:
self.close_all(self.stop_loss, "跟踪止损触发")
self.state = "已平仓"
# 检查高潮信号
if is_climax_day(current_bar, self.stock.bars):
self.stop_loss = current_bar.low # 激进收紧
状态:
空仓 → 无仓位,扫描机会
观察中 → 识别到股票和支点,等待突破
试探1 → 小初始仓位入场
试探2 → 第二次试探入场,股票正在确认
完全 → 完整仓位,跟踪止损激活
已平仓 → 仓位平仓,评估重新入场或下一机会
转换:
空仓 → 观察中:
触发:总体市场看涨 + 强势群体 + 股票在支点
行动: 在支点突破水平设置警报
观察中 → 试探1:
触发:价格以高于平均成交量突破支点
行动: 买入20%的预期规模;在支点下方设置止损
试探1 → 试探2:
触发:股票从第一次入场上涨3%+;趋势确认
行动: 在更高价格再买入20%;将止损提高到第一次入场价格
试探1 → 已平仓:
触发:止损触发
行动: 卖出全部;接受小亏损;返回扫描
试探2 → 完全:
触发:股票从第二次入场上涨3%+;所有入场都盈利
行动: 买入剩余60%;将止损提高到第二次入场价格
试探2 → 已平仓:
触发:止损触发
行动: 卖出全部;小亏损或小盈利
完全 → 完全:
触发:股票在新止损上方创新低
行动: 将跟踪止损提高到新摆动低点下方
完全 → 已平仓:
触发:跟踪止损触发或高潮动作检测到
行动: 卖出全部;记录利润;返回空仓
已平仓 → 空仓:
触发:始终(短暂反思期后)
行动: 评估什么做对/做错;扫描下一模式
def daily_routine(portfolio, watchlist, market_data):
"""
利弗莫尔的每日分析过程(收盘后)。
"""
# 第1步:评估总体市场方向
market_direction = assess_market_direction(market_data)
if market_direction == "不清楚":
# 什么都不做——等待清晰
# 只管理现有仓位(检查止损)
for position in portfolio.active_positions:
position.check_stop(market_data.latest_bar)
return
# 第2步:扫描群体强弱
strong_groups = []
for group in all_sector_groups:
strength = analyze_group_strength(group.stocks, market_data)
if market_direction == "牛市" and strength == "强势":
strong_groups.append(group)
elif market_direction == "看跌" and strength == "弱势":
strong_groups.append(group) # 用于做空
# 第3步:在强势群体中识别领导者
for group in strong_groups:
leader = find_group_leader(group.stocks)
if leader not in watchlist:
watchlist.add(leader)
identify_pivot_points(leader)
# 第4步:管理现有仓位
for position in portfolio.active_positions:
position.evaluate(market_data.latest_bar)
# 第5步:检查观察列表的入场信号
for stock in watchlist:
pivots = detect_pivot_points(stock.daily_bars)
for pivot in pivots:
if pivot['breakout_confirmed']:
if not portfolio.has_position(stock):
# 启动试探入场
intended_size = calculate_position_size(
portfolio.equity,
stock.close,
pivot['lower_boundary'] # 止损水平
)
position = LivermorePosition(stock, intended_size, pivot['upper_boundary'])
portfolio.add(position)
# 第6步:在交易日记中记录观察
log_daily_observations(market_direction, strong_groups, portfolio, watchlist)
"让我赚大钱的从来不是我的思考。一直是我的持仓。明白吗?是我的持仓不动!"
"所有事物都有时机,但我不知道那是什么时候。这恰恰是华尔街那么多人失败的原因。"
"市场没有打败他们。他们打败了自己,因为虽然他们有大脑,但他们不能持仓不动。"
"价格,像所有其他事物一样,沿着最小阻力之路移动。"
"一个人必须相信自己和他的判断,如果他希望在这个游戏中谋生的话。"
"不管条件如何都渴望持续行动是华尔街许多亏损的原因。"
"华尔街没有新东西。不会有,因为投机和山一样古老。"
"亏损是我麻烦中最不重要的。亏损发生后我不会困扰。但犯错——不接受亏损——那才是对钱包和灵魂的损害。"
"我做错了恰恰相反的事。棉花显示我亏损,我持有它。小麦显示我盈利,我卖掉了。"
"小道消息!人们是多么想要小道消息!他们渴望得到,不仅渴望给予。"
"投机者的主要敌人总是从内部 boring。这是与人性不可分割的——希望和恐惧。"
"每当我有耐心等待价格到达我所说的'支点'才开始交易时,我总是赚钱的。"
"一个人不能因为市场告诉他真相而生气。"
"在狭窄的市场中,当价格没有真正移动而在狭窄范围内移动时,尝试预测下一个大走势是没有意义的。"
"市场永远不会错。意见往往是错的。"