Tops & Bottoms: evidence review and implementation
Research updated: 12 October 2026. Scope: a Daily / Weekly / Monthly research screen for Sistine's existing stocks, crypto, indexes and commodities. No additional market-data subscription.
Finding
There is credible evidence that some historical price patterns and short-horizon reversals contain information. There is not credible support here for declaring a universal “most reliable top indicator,” combining several oscillators into a probability, or calling an oversold reading a confirmed bottom. Published results depend on market, horizon, liquidity, costs and evaluation method.
The useful product is a ranked evidence screen: Bottom watch / Top watch, 1–11 signals across five related families, and Early warning / Price confirmation. Price confirmation means a defined closing-price level was crossed and held. It does not establish a permanent turning point. Parameters below are transparent engineering choices informed by indicator definitions; they are not published optimal parameters or trained weights.
Research that influenced the design
| Primary source | What it supports, and where it stops | Product decision |
| Lo, Mamaysky & Wang, Journal of Finance, 2000 | Systematic recognition of patterns in US equities, 1962–1996, found differences in conditional return distributions. Information in a pattern is not equivalent to an executable profitable strategy or accurate modern top/bottom probabilities. Their kernel-regression detector differs from ours. | Include objectively defined price structure; do not attach the paper's results to our detector. |
| Sullivan, Timmermann & White, Journal of Finance, 1999 | Historical technical-rule results did not carry through their later out-of-sample period; accounting for the entire searched rule universe changes apparent significance. | Freeze rules before local diagnostics. No best-looking threshold selection or isolated success screenshots as validation. |
| Bajgrowicz & Scaillet, Journal of Financial Economics, 2012 | Their 7,846-rule DJIA study found weak persistence and trading costs erasing apparent economic value. The authors explicitly limit conclusions to the rules and environment studied. | No win-rate promise, automatic “buy/sell” signal, or conversion of evidence counts into trade returns. |
| Nagel, Evaporating Liquidity, 2011/2012 | Equity short-term reversal returns vary with liquidity conditions and market stress. A conditional liquidity-provision effect is different from a universal chart reversal. | Show trend context and avoid treating equity reversal evidence as equally validated for every coin. |
| Da, Liu & Schaumburg, Decomposing Short-Term Return Reversal, NY Fed, 2011 | Their decomposition separates return components and links reversal to sentiment and liquidity shocks. Raw past losses mix different forces. | A large decline alone is not a bottom signal; look for momentum behavior and a price event. |
| Moskowitz, Ooi & Pedersen, Time Series Momentum, 2012 | Persistence across 58 futures/forward markets over monthly horizons, with later partial reversal. This is not a daily RSI test. | Display prevailing trend separately; do not assume stretched price must immediately mean-revert. |
| Liu & Tsyvinski, Risks and Returns of Cryptocurrency, 2018/2021 | BTC, XRP and ETH had distinctive return predictors including momentum. A small historical crypto universe cannot validate every current token or our turning-point rules. | Separate crypto results in the audit; strong crypto momentum can sustain an extreme. |
| Osler, Support for Resistance, NY Fed, 2000 | Dealer-provided FX levels predicted intraday trend interruptions, with differences across firms and currency pairs. | Levels matter as context; our daily rolling levels are an explicit hypothesis, not a replication of the FX finding. |
| John Bollinger, official Bollinger Band rules | Bands define relative price extension. A band touch is not a standalone reversal, trends can follow a band, and related indicators should not be treated as independent confirmations. Default settings are not universal optima. | Separate extension from re-entry; group correlated band/z-score measures into one contribution. |
| Fidelity, RSI technical indicator guide | Defines RSI extremes, divergence and failure swings, and warns that extreme readings can persist in trends. Educational definitions are not empirical proof of profitability. | RSI is context and a bounded evidence family. An extreme gets an early-warning label. |
| Marshall, Market Timing with Candlestick Technical Analysis, author paper and Massey University thesis | Author research does not generally support using candlestick timing alone for large US stocks. The thesis uses DJIA constituents, 1992–2002; that scope does not establish a general reversal edge. | No candle-name popularity score. Full OHLC adjustment consistency would also need verification before adding candle rules. |
| Fidelity, MACD guide | Defines 12/26/9 crossovers, cautions about whipsaws and distinguishes MACD from a bounded overbought/oversold measure. | Require a held crossover below/above zero; keep it in the momentum family. |
| Fidelity, Rate of Change guide | Defines percentage price change across a fixed lookback. Its scale varies by asset. | Compare ROC with its own prior distribution and require a turn; our tail threshold is a custom rule. |
| Fidelity, EMA guide | Defines exponentially weighted trend smoothing; responsive averages also produce false turns. | Require ten opposing closes before a reclaim; keep distinct from fixed-level price confirmation. |
| CMT Association, Buying and Selling Climaxes, Stewart Taylor | Describes heavy-volume exhaustion and stresses that a later secondary test matters. A volume spike alone is not a completed reversal sequence. | Add a conservative close/volume proxy only with compatible coverage. Do not call it a completed Wyckoff bottom/top. |
Candidates considered
Included: RSI stretch/recovery, volatility-normalized price extension/re-entry, causal price/RSI divergence, failed range breaks/reclaims, double-top/bottom neckline events, and trend context. Transparent, computationally cheap, available from current histories.
Grouped, not piled up: RSI, Stochastic, Williams %R and CCI mostly describe related price/momentum behavior. MACD adds another smoothing convention, not an independent observation. The ten-method extension displays individual methods and their shared families; it does not call them independent confirmations.
Context, not a reversal vote: trend regime; volatility compression. Compression does not determine direction. Long-term overextension alone does not establish timing.
Conditional: volume climax requires complete, compatible raw-price and volume history. Deferred: OBV/MFI, candles, ATR/ADX. Recent stored OHLC/volume coverage is incomplete, and adjusted closes cannot be mixed casually with raw highs/lows. No imputed volume or fabricated candle ranges.
Deferred: funding, open interest, liquidation clusters, options skew, breadth, MVRV and exchange flows. Their availability, cost, universe and timing require separate validation. They are not silently treated as absent signals.
Added for owner-requested research in v3: TD-style exhaustion counts, with transparent rules and no claim of a demonstrated advantage. Arbitrary Fibonacci levels and large libraries of candle names remain excluded.
Original four rules (retained in v2)
These four methods retain their original calculations. Each contributes at most one point to each side; the six additions below bring the total to ten. Opposing signals remain visible.
1. Momentum: Wilder RSI(14), seeded by the first 14 changes in the visible history window. Bottom: RSI ≤30; top: RSI ≥70. Alternatively, a crossing out of that zone within the most recent five observations counts while it has stayed out and remains on the same side of 50. A recovery and an extreme cannot count twice. 2. Extension: 20-observation simple mean and population standard deviation, including the current observation. Bottom: z ≤−2; top: z ≥2. A re-entry within five observations also counts if price stayed inside and remains on the corresponding side of the mean. A flat window has no extension signal. 3. Divergence: strictly lower/higher close than each of two neighbors on both sides; a pivot becomes available only after the two right-hand observations. Compare the newest pivot with the nearest preceding qualifying pivot 5–40 observations earlier. Price must extend at least 0.5%, while RSI improves at least five points; the first RSI must be ≤40 for bottoms or ≥60 for tops. Second pivot age ≤10 observations; any subsequent break of its closing-price extreme invalidates it. Known-on date is the second pivot plus two observations, not the pivot date. 4. Structure: either a close beyond the preceding 20-observation range followed within three observations by a reclaim/rejection of that fixed level, or two confirmed close-based swings within 3% with a ≥3% intervening move followed by a neckline crossing. The crossing must be within five observations and hold on every later close. A break of the level cancels that event. Structure is one group even when several patterns exist.
Trend context requires 220 observations: uptrend = latest price and 50-day mean above 200-day mean, with 200-day mean above its value 20 observations earlier; downtrend is the reverse; otherwise mixed. Shorter valid histories show limited trend history, not a guessed regime.
Engine window: up to the latest 500 observations visible at evaluation time, minimum 60. This bounds runtime and warms RSI. Reject nonpositive/nonfinite prices, duplicate/out-of-order daily observations and gaps exceeding ten calendar days within the most recent 220 observations. Exclude demo histories, stablecoins, flagged corporate-action repairs and stale assets in production. Existing daily observations are the only inputs; live quotes never change a report. Crypto daily snapshots are not represented as intraday candles.
Six additional methods (v2)
Every event must be known by the evaluation close. New events last at most five observations including the first turn, and must hold on every subsequent close. The higher/lower rules are symmetric for tops and bottoms unless stated otherwise.
1. MACD turn: first-price-seeded EMA(12) minus EMA(26); EMA(9) signal starts at observation 26. Minimum 60 closes. Bottom: MACD crosses above signal while MACD is below zero; it must remain above signal. Top reverses those signs. 2. ROC exhaustion: 10-observation percentage change reaches the bottom/top 5% tail of its preceding 120 readings (sorted indexes 5/114), strictly negative/ positive. Next observation both ROC and price recover; both stay beyond the extreme observation's frozen values. Needs 136 closes to evaluate all five candidate dates without including the candidate in its reference distribution. 3. RSI failure swing: strict RSI(14) pivot with two observations on each side; latest pivot within ten observations, preceding pivot 5–30 apart within the latest 40. Bottom: first RSI low <=30, second higher low >30; then crosses the intervening RSI high after second pivot confirmation and holds. Top: first high >=70, second lower high <70, crosses intervening RSI low and holds. 4. Moving-average reclaim: price crosses EMA(20) after ten consecutive closes strictly on the opposite side; stays across its changing EMA. This does not set the existing fixed-price structure-confirmation flag. 5. Streak reversal: seven consecutive lower/higher closes totaling at least 3% decline/rise, followed by an opposite close. The final streak close must hold. A simple custom exhaustion rule, not a proprietary sequential indicator. 6. Volume climax reversal: previous close sets a new prior-20-close extreme, with volume >=2× preceding 20-volume median and absolute daily return at least max(2%, 2× preceding 20 absolute-return median). Next close reverses and the extreme holds. Requires positive finite volume and rawClose for all latest 29 observations, close/rawClose adjustment factors within 0.1%, and no daily move >=30% there. This is a conservative price/volume screen, not a complete Wyckoff sequence or evidence of institutional activity. Missing or inconsistent inputs make the method unavailable, not inactive; no paid data expansion.
V2 counted the original ten methods once. V3 adds the exhaustion-count method once, displays 0–11, available count, and the number of active families. Families: Momentum (RSI, MACD, ROC, RSI failure); Stretch (bands); Divergence (price/RSI); Price action (original structure, EMA, streak); Participation (volume). Family membership does not establish statistical independence. Ranking is count then the unchanged structure-confirmation flag.
Validation and rollout
The engine is shared by the Mac view and the authenticated web exporter; the browser only filters and displays it. Catalog fields are additive. Older reports show a clear unavailable state. Cached reports carry an expiry derived from the existing source/session freshness calendar; browsers stop displaying expired evidence even if no new generation arrives. No thousand-request browser scan, new remote API, LLM dependency, credentials, alert delivery or newsletter change is introduced.
The v2 ten-method score has not been validated by the v1 historical audit. Its separate frozen protocol (included in the review package) covers correctness and current coverage, without parameter tuning.
Correctness tests cover RSI arithmetic, flat/trending series, future-data isolation, gap/invalid/stale history, frozen levels, expiration, invalidation, pivot availability and round-trip serialization. Historical diagnostics follow the predeclared protocol (included in the review package); they use a fixed universe, fixed 5/10/20-observation endpoints and cooldowns, with no tuning. The completed v1-only diagnostic (included in the review package) did not establish a standalone top/bottom edge; top clusters were particularly weak in aggregate. Current-universe survivorship, source revisions, correlated episodes and omitted trading costs prevent a causal or prospective performance claim.
Review and merge are required before installation or production deployment. Install the new exporter and publish a verified new report generation before releasing the tab, and preserve existing product assets and unrelated pending native changes.
V3: three timeframes and method 11 (12 October 2026)
The DeMARK primary explanation defines exhaustion setups and countdowns, including qualification, cancellation and recycling concepts. Its official indicator description exposes configurable variations. These describe a methodology, not independent evidence of a tradable advantage on weekly or monthly data. No reliable comparative test found here establishes those intervals as superior. Our earlier daily ten-method backtest is not validation of v3.
This is an independent TD-style exhaustion-count research implementation, not the official/licensed DeMARK Sequential or Combo indicator. It makes the following choices explicit; no proprietary implementation was copied.
Setup: nine successive strict close-versus-four-bars-back comparisons, lower for bottom warnings and higher for top warnings. Equality resets the run; a continuing run does not produce a new nine every bar. Progress is displayed even before completion. No separate price-flip gate is added.
Countdown: starts no earlier than setup completion. Thirteen qualifying observations need not be consecutive. Bottoms compare close with the low two bars back; tops use the high. The final observation must also reach the eighth count's close with its low/high. Otherwise count twelve is deferred. Opposing setup completion or crossing the opposite setup true-range boundary cancels an unfinished countdown.
Recycle profile: an overlapping same-side setup with a true range 100–200% of the prior setup restarts an unfinished count. An extended 22-bar setup resets an unfinished count to its trailing nine-bar range. This conservative choice is documented; it is not presented as an exact replication of all DeMARK variants.
Perfection: compare setup bars eight/nine, or a later bar, with both six/seven using lows/highs. Display it separately; perfection is not an extra vote. Intersection, the optional eighth-versus-fifth qualifier, Combo, proprietary breakout qualifiers and official risk levels are not implemented.
Concentration vote: at most one point per side. Completed nine warnings remain eligible through four subsequent periods, and completed thirteen warnings through twelve, while their closing-price setup extreme or final thirteen high/low holds. The active vote expires separately from the historical occurrence. Opposing setup completion removes the old active warning. These expiry/invalidation choices are our screen's rules, not calibrated reversal odds or a trading recommendation.
Timeframe construction and availability
Every original calculation is rerun on the chosen period; counts from different periods are never summed into an 11-method score. The comparison strip shows each timeframe's own count and available methods. RSI(14) means 14 days, weeks or months respectively; lookbacks and expiry likewise use selected-period observations.
Weeks use Monday–Sunday and months use calendar boundaries on existing UTC provider date labels. Only periods whose end boundary has passed are eligible. This intentionally waits until Monday UTC for a Friday-close stock week; it never calls the running week/month confirmed. The first partial history bucket is excluded. Closing price is the last actual observation; complete comparable OHLC aggregates to first open, maximum high and minimum low. Volume sums only with full coverage and a stable adjustment basis. The chart and all evidence consume the same exported aggregate. Dates label the last underlying observation, not the earlier availability of a future-completed period. Any future backtest must enter after the period boundary and next executable observation.
No 500-day truncation precedes aggregation. Up to 500 resulting periods feed each calculation. Nine counts need 13 observations; before 60 periods only that method is available. Existing ten methods retain their conservative 60-period warmup, ROC needs 136, and long-trend context needs 220. Consequently many young assets have only one available monthly method. Missing periods, invalid data, demo/stablecoin flags and stale daily source coverage fail closed. Snapshot expiry also stops at the next timeframe boundary.
Provider raw high/low/open are scaled by close/rawClose to the same adjustment basis. Missing provenance, missing highs/lows or malformed ranges prevent a thirteen count; no close-derived substitute is invented. A data gap during a live countdown requires a new qualifying setup. Many CoinGecko histories contain daily price snapshots without OHLC, so only nine counts can be available there. Perfection is also unavailable without ranges.
Existing provider continuity defects discovered in the v2 audit remain a limitation. Adjustment consistency does not prove economic continuity across cancelled equity or token changes. V3 is a preview implementation with correctness/coverage checks, not an established forecasting edge.