Double Top & Bottom Patterns
Reversal patterns that form when price fails to break a level twice.
Pattern Structure
Double Top (Bearish)
- Rally to resistance (Peak 1) → pullback to neckline → retest the resistance within a predeclared price or ATR tolerance → failure
Double Bottom (Bullish)
- Drop to support (Trough 1) → bounce to neckline → retest the support within the same frozen tolerance → failure
| Factor |
Strong |
Weak |
| Time between tests |
Within a predeclared bar window |
Selected after seeing outcome |
| Volume |
Declining on 2nd test |
Higher on 2nd test |
| Peak/trough alignment |
Within a volatility-normalized tolerance |
Arbitrary visual match |
Workflow
1. Get Exact Data
get_candles_around_date(symbol=<symbol>, exchange=<exchange>, interval=<interval>, date=<peak_date>)
2. Mark Peaks/Troughs (2 parallel highlight calls)
draw_chart_analysis(action="create", drawing={
"type": "highlight",
"points": [{"time": <peak1_time>, "price": <peak1_price>}],
"options": {"text": "Peak 1"}
})
draw_chart_analysis(action="create", drawing={
"type": "highlight",
"points": [{"time": <peak2_time>, "price": <peak2_price>}],
"options": {"text": "Peak 2"}
})
3. Draw Neckline
draw_chart_analysis(action="create", drawing={
"type": "support",
"points": [
{"time": <neckline_start>, "price": <neckline_price>},
{"time": <neckline_end>, "price": <neckline_price>}
],
"options": {"text": "Neckline"}
})
For double top use "support" (neckline is below). For double bottom use "resistance" (neckline is above).
4. Enter
Standard: Enter on neckline break + close with volume. Stop beyond peaks/troughs.
Preferred: Wait for break + neckline retest. Enter on rejection.
Aggressive: Enter at second peak/trough with LTF reversal confirmation.
Target: Neckline ± (Peak - Neckline). Example: Peak $100, Neckline $90 → Target $80.
Evidence and Validation
- Treat the setup as a testable hypothesis, not a prediction. Define thresholds, entry, invalidation, and exit before evaluating outcomes.
- Calibrate on the same instrument, venue, session, and timeframe. Use closed candles and a held-out or walk-forward sample; record every variant tried.
- Include spread, fees, slippage, borrow or funding, partial fills, and latency. Reject the setup when net expectancy is not positive or depends on one narrow parameter.
- Return observed inputs, missing data, cost assumptions, entry, invalidation, exit, and a valid, watch, or no-trade status.
- Research basis: Lo, Mamaysky & Wang found incremental information in some algorithmically defined patterns, including double bottoms, but did not establish universal thresholds or profits.
Key Rules
- NEVER trade before neckline confirmation — pattern incomplete until it breaks
- Treat declining activity on the second test as context, not validation by itself
- Freeze the peak/trough tolerance and bar window before evaluating returns
- Failed double tops/bottoms lead to strong continuation moves
Related Skills
- head-and-shoulders — Similar reversal family
- cup-and-handle — Failed double bottoms can morph into cup patterns
1---2name: double-top-bottom3description: Trade double and triple top/bottom reversal patterns. Use when identifying trend exhaustion, finding reversal entries at key resistance/support, or confirming failed breakouts.4license: Apache-2.05---67# Double Top & Bottom Patterns89Reversal patterns that form when price fails to break a level twice.1011## Pattern Structure1213### Double Top (Bearish)141. Rally to resistance (Peak 1) → pullback to neckline → retest the resistance within a predeclared price or ATR tolerance → failure1516### Double Bottom (Bullish)171. Drop to support (Trough 1) → bounce to neckline → retest the support within the same frozen tolerance → failure1819| Factor | Strong | Weak |20|--------|--------|------|21| Time between tests | Within a predeclared bar window | Selected after seeing outcome |22| Volume | Declining on 2nd test | Higher on 2nd test |23| Peak/trough alignment | Within a volatility-normalized tolerance | Arbitrary visual match |2425## Workflow2627### 1. Get Exact Data2829```30get_candles_around_date(symbol=<symbol>, exchange=<exchange>, interval=<interval>, date=<peak_date>)31```3233### 2. Mark Peaks/Troughs (2 parallel highlight calls)3435```36draw_chart_analysis(action="create", drawing={37 "type": "highlight",38 "points": [{"time": <peak1_time>, "price": <peak1_price>}],39 "options": {"text": "Peak 1"}40})4142draw_chart_analysis(action="create", drawing={43 "type": "highlight",44 "points": [{"time": <peak2_time>, "price": <peak2_price>}],45 "options": {"text": "Peak 2"}46})47```4849### 3. Draw Neckline5051```52draw_chart_analysis(action="create", drawing={53 "type": "support",54 "points": [55 {"time": <neckline_start>, "price": <neckline_price>},56 {"time": <neckline_end>, "price": <neckline_price>}57 ],58 "options": {"text": "Neckline"}59})60```6162For double top use `"support"` (neckline is below). For double bottom use `"resistance"` (neckline is above).6364### 4. Enter6566**Standard:** Enter on neckline break + close with volume. Stop beyond peaks/troughs.67**Preferred:** Wait for break + neckline retest. Enter on rejection.68**Aggressive:** Enter at second peak/trough with LTF reversal confirmation.69**Target:** Neckline ± (Peak - Neckline). Example: Peak $100, Neckline $90 → Target $80.7071## Evidence and Validation7273- Treat the setup as a testable hypothesis, not a prediction. Define thresholds, entry, invalidation, and exit before evaluating outcomes.74- Calibrate on the same instrument, venue, session, and timeframe. Use closed candles and a held-out or walk-forward sample; record every variant tried.75- Include spread, fees, slippage, borrow or funding, partial fills, and latency. Reject the setup when net expectancy is not positive or depends on one narrow parameter.76- Return observed inputs, missing data, cost assumptions, entry, invalidation, exit, and a valid, watch, or no-trade status.77- Research basis: [Lo, Mamaysky & Wang](https://www.nber.org/papers/w7613) found incremental information in some algorithmically defined patterns, including double bottoms, but did not establish universal thresholds or profits.7879## Key Rules80- NEVER trade before neckline confirmation — pattern incomplete until it breaks81- Treat declining activity on the second test as context, not validation by itself82- Freeze the peak/trough tolerance and bar window before evaluating returns83- Failed double tops/bottoms lead to strong continuation moves8485## Related Skills86- **head-and-shoulders** — Similar reversal family87- **cup-and-handle** — Failed double bottoms can morph into cup patterns