05 — Reversal Patterns

Rounding Bottom#

SaucerHeuristic1 min read
◆ The PatternA slow, gradual reversal — the U-shaped bottom

The Rounding Bottom (saucer) is a gradual transition from selling to buying pressure, forming a U-shape over weeks or months. Volume mirrors the price pattern — high at the start, low at the bottom, rising on the right side.

Target = Neckline + Depth of saucer
Patience required: this is a long-term pattern. It forms slowly, and is only confirmed by the breakout.
// Rounding Bottom — saucer formation
Key insight: The rounding bottom reflects a gradual change in market sentiment — not a panic reversal but a slow shift from distribution to accumulation.
Pattern bridge: The slow U-shaped recovery mirrors the cosine learning rate schedule — gradual cooling, then gradual warm-up. In statistics, it’s the shape of a cumulative distribution function.
Worked example

Forty-one days that fall from 110 to 90 and climb back. Fitting y = a·x² + b·x + k gives a = 0.05 (positive, so a U) with the turn at day 20, the middle of the window. Measured from the rim: 110 + (110 − 90) = 130. Many traders use a smaller target; the full depth is the optimistic version.

The example data

A U from 110 (day 0) down to 90 (day 20) and back to 110 (day 40), as daily closes; high and low are half a point either side of each bar.

Where it misleads
  • It takes weeks or months to form, and the right side looks like any rebound until the rim is reached.
  • A quadratic fits any dip that recovers; the fit says the shape is round, not that the rise will continue.
  • Few formal studies test it; the evidence is mostly practitioner counts.
In code
y = df['close'].iloc[-41:].values
x = np.arange(len(y))
a, b, k = np.polyfit(x, y, 2)                         # y ≈ a·x² + b·x + k
vertex = -b / (2 * a)                                 # where the curve turns
is_round = a > 0 and 0.3 < vertex / len(x) < 0.7     # a U, bottoming near the middle
rim, bottom = max(y[0], y[-1]), y.min()
target = rim + (rim - bottom)
Python, in your browser — edit the code and run it again

Assumes import numpy as np, import pandas as pd, and a DataFrame df with columns open, high, low and close for the data above.

Sources
  • Encyclopedia of Chart Patterns (2nd ed.), T. N. Bulkowski, Wiley, 2005 — success and failure rates from large counts of patterns
  • Technical Analysis of Stock Trends, R. D. Edwards & J. Magee, 1948 (later editions revised by W. H. C. Bassetti)

Last reviewed October 2026 · How this site checks its content · Report a mistake

Linked from 1
← Previous
Double Bottom
Open in the full reader, with the topic sidebar