基于尼古拉斯·达瓦斯 (Nicolas Darvas),我如何在股票市场赚了200万 (1960年,收藏版)
达瓦斯 box 理论是一种技术-基本面动量策略,它:
核心哲学:"我根据它们的技术行为买入股票,但 only when 基本面确认盈利 power 正在改善。"
该系统专为趋势市场和动量股票设计。 按照达瓦斯自己的估计,90%+的上市股票在任何给定时间都不符合条件。
box 是一个价格区间(交易区间),由上轨(天花板)和下轨(地板)定义, 股票价格在其中振荡。Box 在上升趋势期间像金字塔一样层层叠加。
┌─────────────┐
│ Box 3 │ 70-80
│ (newest) │
└──────┬───────┘
┌──────┴───────┐
│ Box 2 │ 55-65
│ │
└──────┬───────┘
┌──────┴───────┐
│ Box 1 │ 45-50
│ (oldest) │
└──────────────┘
H)。H时,上轨得到确认。H现在是当前 box 的既定上轨。"上轨是上涨期间达到的最高价格,provided that 股票连续3天未能触及或超过该价格。"
L)。L。L现在是当前 box 的既定下轨。"只有当上轨 firmly 建立后,下轨才能建立。方法完全相反。"
| 规则 | 详情 |
|---|---|
| 先上轨 | 必须在建立下轨之前 |
| 3天确认 | 价格必须连续3天未能触及/超过该水平 |
| 不同步 | 上轨和下轨不能在完全相同的逻辑步骤中建立(尽管理论上可能在同一天内——罕见) |
| 新 box 下轨 ≠ 旧 box 上轨 | 新 box 的下轨不需要等于旧 box 的上轨。它由股票的实际价格行为决定 |
| Box 宽度因股票而异 | 一些股票有窄 box(~10%),其他有宽 box(15-20%)。这是个别股票的特征 |
| Box 不是画在整数上 | 达瓦斯在示例中使用整数是为了清晰,但真实的 box 在市场建立的价格 |
| Box 中的时间无关 | 股票可以在 box 中停留数周。只要保持在 box 内,持续时间不重要 |
Box 宽度是股票特有的,由观察股票典型振荡范围的经验决定:
达瓦斯使用两过滤器方法:先技术筛选,然后基本面确认。
扫描表现出以下特征的股票:
"成交量是相对的。一只在正常交易日交易4,000-5,000股的股票突然膨胀到20,000-25,000股是显著的——它清楚地表明股票行为发生了变化。"
只有在确认后才买入:
"逐渐改善的盈利最终会转化为股票价格上涨……我寻找处于扩张行业的公司,这些公司将革新未来。"
在当前 box 的上轨上方放置买入止损单 — 在 breakout 发生之前。
当股票价格升至触及买入止损价格时,订单自动执行。
当前 Box:[45 - 50]
买入止损单:50 1/8 (刚好高于上轨)
→ 如果价格达到50 1/8,买入订单自动执行
→ 同时设置止损在49 7/8(刚好低于上轨)
| 规则 | 详情 |
|---|---|
| 在 breakout 时买入 | 在价格突破 box 上轨时买入,不是 inside the box |
| 不等待3天 breakout | 3天规则仅用于建立 box 轨,不是触发买入订单。"我总是在 breakout 的时刻买入。" |
| 使用止损限价买入单 | 预先设置买入订单以使执行自动 |
| 同时止损 | 每个买入订单必须 accompanied by 止损卖出订单。 |
| "我从不忘记捡起我的 burglar 武器——止损单。 | |
| 这就像无论房子多坚固都记得消防安全一样。" | |
| 先 pilot 买入 | 对于新持仓,从小的探索性购买开始以"感受"股票。 |
| 只有在股票确认预期行为后才加仓 |
如果股票的历史高点刚好高于当前 box 的上轨:
止损放置在两个位置之一:
"我永远不在 box 内部放置止损。我总是将它放在两个位置之一: (1) 主要向上突破后刚好低于 breakout 点,或 (2) 刚好低于 box 的下轨。"
| 规则 | 详情 |
|---|---|
| 始终立即设置 | "买入订单执行的时刻,必须立即放置止损卖出订单。" |
| 永远不在 box 内部 | 放置在 box 范围内的止损将因正常振荡而被触发 |
| 自动执行 | 必须自动化(直到取消订单)。无需手动干预 |
| 接受小亏损 | "如果我在25买入,它跌到24,为什么不卖?" |
| 小频繁亏损是做生意的成本 | |
| 双重功能 | 止损有两个目的:(1) 快速退出坏交易, |
| (2) 通过释放资本 enable 进入好交易 |
达瓦斯没有使用固定百分比。止损距离由以下决定:
当股票上涨进入新的 box 时,止损被向上逐步移动:
Box 1: [45-50] → 止损在44 7/8
股票突破至 Box 2: [52-58]
→ 当 Box 2 形成时:保持止损在44 7/8
→ 一旦 Box 2 上轨 AND 下轨确认:将止损 raise 至51 7/8
股票突破至 Box 3: [60-68]
→ 当 Box 3 形成时:保持止损在51 7/8
→ 一旦 Box 3 确认:将止损 raise 至59 7/8
没有盈利目标。 达瓦斯从未试图预测股票会涨多高。
"没有理由卖出一只上涨的股票。"
卖出触发器:
如果被止损 out 但股票快速恢复并恢复其上升趋势:
" brief decline 如此短,随后的上升如此 determined,我决定重新入场。"
如果股票向下突破至更低的 box:
从小的探索性持仓开始测试股票:
only 当股票确认时才加仓:
每次额外买入也必须有它自己的止损。
达瓦斯的典型金字塔模式:
买入1: 200股 @ 27.50 (pilot)
买入2: 400股 @ 35.00 (确认——新 box 突破)
买入3: 400股 @ 38.63 (惊恐后持续 strength)
总计:1,000股,平均成本 ~34.50
| 原则 | 详情 |
|---|---|
| 永远不要冒险超过你能承受的损失 | 在J&L Steel损失$9K后,达瓦斯发誓永远不投入超过其舞蹈职业生涯的初始 stake |
| 在信念高时使用保证金 | 达瓦斯在确认的赢家上使用50%保证金(有效2倍杠杆) |
| 集中,不要多元化 | 在其巅峰时期,达瓦斯一次只持有2-3只股票 with heavy 持仓 |
| 保持储备 | 在第一次大成功后($325K来自Bruce),他将一半利润从市场抽出 |
| 佣金很重要 | 更喜欢高价股票——在$100股票上$10K仓位的佣金远低于$10股票 |
同时评估多只股票时:
达瓦斯用他的最终交易做到这一点:买入4只股票,2只在数天内止损 out, 集中到剩余2只(Fairchild Camera和Zenith Radio)。
"我逐渐意识到道琼斯公司不是一个算命机构。 我不能在指数和个股之间强加严格机械的模式。"
"我决定不交易——我的态度如此坚定,以至于经纪人写信问我为什么。 我开玩笑地回复:'当前市场是一个鸟市场。我没有理由在鸟市场里。'"
"如果某些股票在下跌期间能够抵抗 general market trend,那么当市场转向时,这些将是首先上涨的。"
这些可以说是最重要的规则。达瓦斯几乎因违反它们而失去一切。
| 规则 | 理由 |
|---|---|
| 永远不要访问经纪人办公室 | 噪音、谣言和情绪气氛破坏独立判断 |
| 永远不要让经纪人给你打电话 | 他们会分享意见、预测和恐慌——都腐蚀你的分析 |
| 永远不要阅读金融评论 | "专家"的意见是矛盾和误导的 |
| 只看:价格、成交量和指数 | 这三个数据点是你需要的全部 |
| 仅通过书面订单沟通 | 达瓦斯使用电报。现代等价物:预先放置限价/止损单,没有给经纪人打电话 |
"我的耳朵是我的敌人……当我在国外时,我可以冷静、客观地分析市场,没有情绪。 在纽约,被解释、谣言、恐慌和矛盾的信息包围,我的情绪与股票纠缠在一起。"
| 规则 | 详情 |
|---|---|
| 没有偏爱 | 不要爱上股票。达瓦斯因情感依恋在 Lorillard 上反复亏损 |
| 没有自我 | 50%的时间错误是正常的——系统的优势来自快速止损和让赢家奔跑 |
| 没有报复交易 | 亏损后,不要急于"弥补"——等待正确的设置 |
| 没有过度自信 | 在第一次赚$500K后,达瓦斯变得鲁莽,放弃了他的系统,在数周内损失$100K |
| 没有预测 | "我只相信分析,不相信预测。" |
| 你无法知道有多高或多远——只对正在发生的事情做出反应 | |
| 耐心 | 持有现金且无持仓是一个 valid 状态。"我没有股票——但我无能为力。" |
达瓦斯在赚取$500K后返回纽约,开始访问经纪人办公室,然后:
治疗方法:他逃到巴黎,禁止所有经纪人电话,并恢复仅限电报操作—— 甚至在返回纽约后。他的酒店房间成为孤立的"command center", 他在市场收盘后收到电报并为第二天下单。
| 字段 | 频率 | 目的 |
|---|---|---|
| 每日高点 | 每日 | Box 轨构建 |
| 每日低点 | 每日 | Box 轨构建 |
| 每日收盘 | 每日 | 当前价格参考 |
| 每日成交量 | 每日 | 成交量确认 |
| 历史绝对高点 | 静态(更新) | 突破参考 |
| 价格区间(52周高/低) | 每周 | 筛选翻倍股票 |
| 字段 | 频率 | 目的 |
|---|---|---|
| 道琼斯指数/大盘指数收盘 | 每日 | 市场背景(牛市/熊市评估) |
| 字段 | 频率 | 目的 |
|---|---|---|
| 行业分类 | 静态 | 成长行业过滤器 |
| 盈利趋势(EPS历史) | 季度 | 盈利上升确认 |
| 收入趋势 | 季度 | 增长确认 |
基于达瓦斯的 Lorillard 交易(1957-1958):
市场状况:熊市(1957)
观察:Lorillard的股票突出——在其他一切都在下跌时上涨
成交量:从~10,000/周激增至126,700/周
价格:从17上涨至24-27区间
基本面检查:生产Kent和Old Gold香烟。
过滤嘴香烟狂热席卷美国 → 成长行业 ✓
盈利上升 → ✓
决策:添加到观察清单。请求每日报价。
股票在24-27 box中振荡。
上轨:27(连续3天未达到27后确认)
下轨:24(在上轨设定后,连续3天未达到24)
Box 建立:[24 - 27]
触发:价格似乎正在推向27
行动:放置买入止损 @ 27.50,止损 @ 26.00
执行:@ 27.50买入200股
11月26日:价格跌至26.00 → 止损触发 → 在26.00卖出
同日收盘:26.75(立即恢复)
同周:价格行为确认 strength
重新入场:在28.75买入200股,止损 @ 26.00
12月:价格突破30,建立新 box [30-35]
1月:价格突破35 → 新 box 正在形成
行动:以35.00和36.50额外买入400股
总计:1,000股
2月17日:突然下跌至36.75(香烟癌症恐慌谣言)
行动:收紧止损至36.00
结果:止损 NOT 触发。价格反弹。
行动:在38.625额外买入400股
总计:1,000股
3月第3周:价格处于50-55 box。成交量:316,600股(巨大)。
止损 raise 至49.00
4月第2周:突破至55.25,回落至50-55 box。
止损保持在49.00
5月:达瓦斯注意到Lorillard的 breakouts 越来越弱,
pullbacks 越来越深。
同时,Bruce (E.L.) 看起来更强劲。
决策:卖出 Lorillard 以释放 Bruce 的资本。
卖出:1,000股 @ 平均57.375
总利润:$21,052.95
这些是达瓦斯在书中问答部分的直接回答:
问:3天规则适用于买入吗? 答:不。3天规则仅用于建立 box 轨。买入订单在 breakout 触发,不是在 breakout 3天后。
问:上轨和下轨可以同时建立吗? 答:逻辑上不行,但两者可以在同一天建立(罕见)。上轨必须首先确认。
问:新 box 的下轨必须等于旧 box 的上轨吗? 答:不需要。新 box 的下轨由股票的自然价格行为决定,不是由旧 box 决定。
问:止损确切地放在哪里? 答:两个选项 only:
永远不要在 box 内部。
问:何时 raise 止损? 答:Only 在下一个 box 的上轨 AND 下轨都 firmly 建立之后。 然后 raise 至刚好低于新 box 下轨的位置。
问:什么成交量水平是"显著的"? 答:没有绝对数字。这是相对于股票自己的历史。 一只正常交易4K-5K/天的股票激增至20K-25K/天是显著的。
问:必须是真正的历史高点,还是5年高点可接受? 答:达瓦斯严格遵循历史高点原则。
问:这适用于其他交易所(伦敦、约翰内斯堡)吗? 答:达瓦斯表示它 only 在NYSE和AMEX有效,因为:
问:我可以使用 box 突破卖空吗? 答:达瓦斯明确拒绝:"你的态度更像是赌徒而不是只想赚钱的人…… 除非你的股票在其 box 中或正在上涨,最好远离熊市。"
来自他自己的经验和读者来信:
| 错误 | 后果 |
|---|---|
| 在 box 内部买入而不是在 breakout 时买入 | "极其危险——你两面受敌" |
| 在 box 内部放置止损 | 保证被正常振荡止损 out |
| 听经纪人的话/内幕消息/新闻 | 破坏独立判断;导致情绪交易 |
| 爱上一只股票 | 因情感依恋在 Lorillard 上反复亏损 |
| 过早卖出赢家 | "利润获取"剥夺了支付所有损失的大波动 |
| 交易过于频繁 | 佣金吃利润。他最糟糕的时期:10笔交易$1.89净利润 vs $236.65佣金 |
| 成功后过度自信 | 导致在纽约损失$100K |
| 预测而不是反应 | "我只相信分析,不相信预测" |
| 对抗整体市场趋势 | 在熊市期间,即使好股票也会下跌 |
| 使用绝对值进行成交量 | 成交量显著性是相对于股票自己的历史 |
| 在新周期购买旧领导者 | 每个牛市有不同的板块领导者 |
def detect_box(daily_bars):
"""
给定一系列每日OHLCV条,检测当前达瓦斯 Box。
返回(上轨、下轨、是否确认)。
"""
# 第1阶段:找到上轨候选
# 追踪看到的最高高点
highest_high = max(bar.high for bar in recent_bars)
highest_high_date = date_of(highest_high)
# 检查highest_high_date之后连续3天
# 是否未能达到或超过highest_high
days_since_high = 0
for bar in bars_after(highest_high_date):
if bar.high >= highest_high:
# 重置:找到新高,重新开始计数
highest_high = bar.high
highest_high_date = bar.date
days_since_high = 0
else:
days_since_high += 1
if days_since_high >= 3:
upper_rail = highest_high
upper_rail_confirmed = True
break
if not upper_rail_confirmed:
return None # Box 尚未形成
# 第2阶段:找到下轨候选(仅在上轨确认后)
lowest_low = min(bar.low for bar in bars_after(upper_rail_confirmed_date))
lowest_low_date = date_of(lowest_low)
days_since_low = 0
for bar in bars_after(lowest_low_date):
if bar.low <= lowest_low:
lowest_low = bar.low
lowest_low_date = bar.date
days_since_low = 0
else:
days_since_low += 1
if days_since_low >= 3:
lower_rail = lowest_low
lower_rail_confirmed = True
break
if upper_rail_confirmed and lower_rail_confirmed:
return Box(upper=upper_rail, lower=lower_rail, confirmed=True)
elif upper_rail_confirmed:
return Box(upper=upper_rail, lower=None, confirmed=False)
else:
return None
def screen_candidates(universe, market_index):
"""
每周扫描达瓦斯合格股票。
"""
candidates = []
for stock in universe:
# 技术过滤器
near_all_time_high = stock.close >= stock.all_time_high * 0.95
volume_surge = stock.avg_volume_1w > stock.avg_volume_3m * 3
price_rising = stock.close > stock.close_4w_ago
# 价格从年度低点翻倍(达瓦斯的筛选捷径)
yearly_high_gt_2x_low = stock.yearly_high >= stock.yearly_low * 2
# 相对于市场的相对强度
stock_return_13w = (stock.close - stock.close_13w_ago) / stock.close_13w_ago
market_return_13w = (market_index.close - market_index.close_13w_ago) / market_index.close_13w_ago
outperforming = stock_return_13w > market_return_13w
if near_all_time_high and volume_surge and price_rising and outperforming:
# 基本面过滤器
if is_growth_industry(stock.sector) and has_rising_earnings(stock):
candidates.append(stock)
return candidates
状态:
WATCHING → 监控每日报价,无持仓
PILOT_BUY → 小初始持仓,测试股票
FULL_POSITION → 金字塔进入股票
STOPPED_OUT → 持仓被止损关闭
转换:
WATCHING → PILOT_BUY:
触发:价格突破当前 box 上轨
行动:买入 pilot 规模;在上轨下方设置止损
PILOT_BUY → FULL_POSITION:
触发:股票确认(保持在入场点上方,突破到新 box)
行动:在每个新 box 突破时加仓;每次带止损
PILOT_BUY → STOPPED_OUT:
触发:止损 hit
行动:卖出全部;评估如果股票快速恢复则重新入场
FULL_POSITION → FULL_POSITION:
触发:在当前上方形成新 box
行动:将追踪止损 raise 至刚好低于新 box 下轨
可选地在突破时加更多股票
FULL_POSITION → STOPPED_OUT:
触发:追踪止损 hit
行动:卖出全部;记录利润;扫描新候选人
STOPPED_OUT → WATCHING:
触发:股票恢复并创出新的历史高点突破
行动:作为新候选人重新评估
def daily_routine(portfolio, watchlist, market_index):
"""
达瓦斯的每日流程(在市场收盘后执行)。
"""
# 1. 检查市场背景
market_trend = assess_trend(market_index) # bull / bear / neutral
# 2. 对于每个持有持仓:检查止损
for position in portfolio:
if position.current_price <= position.stop_loss:
execute_sell(position) # 自动——已设置为GTC订单
else:
# 检查是否形成了新 box → raise 止损
new_box = detect_box(position.stock.daily_bars)
if new_box and new_box.confirmed:
if new_box.lower > position.stop_loss:
position.stop_loss = new_box.lower - small_margin
# 3. 对于每只观察股票:检查入场信号
for stock in watchlist:
box = detect_box(stock.daily_bars)
if box and box.confirmed:
if stock.close > box.upper:
# 突破!入场信号
if passes_fundamental_filter(stock):
place_buy_stop(stock, price=box.upper + margin)
place_stop_loss(stock, price=box.upper - margin)
# 4. 每周:扫描新候选人(使用Barron's等价物)
if is_end_of_week():
new_candidates = screen_candidates(universe, market_index)
for c in new_candidates:
if c not in watchlist:
watchlist.add(c)
request_daily_quotes(c)
在他早期基本面分析期间开发的,这些保持为基础:
实施系统每只股票所需的最小数据:
"我的 boxes 像金字塔一样堆叠在上面。"
"当股票进入新的更高 box 时买入。当它跌穿下轨时卖出。"
"没有理由卖出一只上涨的股票。"
"我将止损设置在 box 下轨下方——永远不要在 box 内部。"
"在 breakout 时买入。买入订单不等待3天。"
"成交量显著性是相对于股票自己的历史。"
"90%或更多的上市股票在任何给定时间都不符合条件。"
"我的耳朵是我的敌人。"
"我只相信分析,不相信预测。"
(全文完 — 共773行)