OPEN METHODOLOGY

Bitcoin market research methodology.
Trust the process, not the prediction.

Every signal is only useful if you can inspect how it was constructed. This page documents our data, rules, assumptions, and limitations.

Inspect model version history
TransparentEvery rule is inspectable
Point-in-timeNo look-ahead bias
ReproducibleDeterministic pipeline
01

Data & benchmark

The canonical technical reference is BTC-USD on Coinbase. Daily candles close at 00:00 UTC; weekly candles close Sunday at 23:59:59 UTC; monthly candles follow calendar months.

MARKETBTC-USD
SOURCECoinbase
TIMEZONEUTC
STARTJUL 2015

Raw OHLCV candles are immutable once a period has closed. Provider responses are validated for missing intervals, duplicates, and non-positive prices before insertion.

Bitstamp BTC/USD is stored as a separate research benchmark. It does not replace or extend the canonical Coinbase population; its purpose is to test whether a detector's result is dependent on one exchange's candle path.

02

Halving research

Bitcoin subsidy halvings occur at exact 210,000-block intervals. Historical events retain their verified block height, block hash, UTC timestamp, and subsidy transition. The next target block is fixed by the consensus schedule; its calendar time is estimated from the latest observed chain height and Bitcoin's ten-minute target interval, so it moves with actual block production.

INTERVAL210,000 BLOCKS
NEXT BLOCK1,050,000
CURRENT SUBSIDY3.125 BTC
EVENTSN = 4

Each event is mapped to the first completed daily close after its exact block timestamp. Coinbase BTC-USD is preferred from 20 July 2015 onward; Bitstamp BTC/USD supplies the earlier market period unavailable on Coinbase. The sources remain identifiable and are not pooled into a larger event count.

Pre-event and forward returns use completed daily closes. Maximum adverse and favorable excursions use daily lows and highs, while running drawdown uses daily closes. Normalized paths set the event close to 100, retain daily calculations, and sample weekly points only for chart rendering. Current-cycle paths stop at the latest completed candle, and unavailable horizons remain blank.

Cycle highs, same-age comparisons, return compression, and outcome medians are descriptive. Four completed protocol events cannot establish causality, statistical independence, or a repeatable return distribution. The complete observations and current methodology version remain available on the halving research page.

03

Indicator formulas

Relative Strength Index

RSI uses Wilder’s smoothing with a 14-period lookback. Daily, weekly, and monthly values use their respective completed candle series.

RS = Wilder Average Gain / Wilder Average Loss
RSI = 100 − (100 / (1 + RS))

Macro moving averages

EMA 10M, 20M, and 50M plus SMA 20M and 50M are calculated only from completed monthly closes. Intramonth price crossings are labeled separately from confirmed monthly closes.

Chart overlays

Selectable EMA 10, 20, and 50 plus SMA 20 and 50 chart overlays use the selected candle timeframe. They are calculated from the full canonical source series beginning in July 2015 before values are aligned to display buckets. This preserves the complete recursive EMA state rather than reseeding it at the selected range boundary. If the latest candle is still open, its timeframe-average values are explicitly provisional.

The separate 50-month EMA overlay uses completed monthly closes only. On daily and weekly charts, each monthly value becomes visible at the start of the following calendar month, so historical lines never use a monthly close before it was observable.

04

Signal recognition

Every signal has an explicit event condition and confirmation timestamp. Pivot-based signals are timestamped only after the necessary right-hand confirmation bars have closed.

Chart markers are read from the stored signal database and positioned in the candle bucket containing the event date. They annotate historical research events only: the provisional open candle may be visible on the price chart, but it does not generate an early signal marker. Category filters only change which stored events are visible; they never change signal detection or study calculations.

Weekly divergences use confirmed three-bar pivot highs or lows. A bullish event requires a second low at least 1% below the first while RSI is at least two points higher. A bearish event requires a second high at least 1% above the first while RSI is at least two points lower. Eligible pivots must be 3–26 weeks apart, and the event is dated only after the third right-side weekly candle closes.

Weekly higher-low and lower-high lifecycles use strict price pivots. A candidate requires three completed bars on the left, one completed reversal bar on the right, and a level above the previous confirmed pivot low or below the previous confirmed pivot high. Either of the next two weekly bars invalidates the candidate by trading through its pivot boundary; otherwise the structure confirms after the third right-side bar closes. Candidate, invalidation, and confirmation events retain their actual observable dates, and only confirmed events enter forward-return studies.

Weekly breakout lifecycles also use confirmed three-left/three-right price pivots. A bullish breakout requires a completed weekly close at least 1% above the latest eligible pivot high; a bearish breakdown requires the symmetric close below a pivot low. Each pivot can start only one lifecycle. During weeks 2–8 after the breakout, a bullish retest succeeds when the weekly low reaches within 1.5% above the level or trades through it and the candle still closes at or above that level; bearish retests use the symmetric high and close rules. A completed close 1% back through the level fails the lifecycle, including before week 2, and an unresolved lifecycle expires after week 8. Breakout, breakdown, and successful-retest events have separate forward-return studies; failed and expired outcomes remain visible for audit but are excluded from those populations.

Macro trend events require completed calendar-month closes. A 50M EMA reclaim requires a move from at or below the contemporaneous EMA to above it; a loss requires the symmetric move from at or above the EMA to below it. Both become observable at the start of the following month, and intramonth crossings never qualify.

Pullback classification

Pullback magnitude compares the current live price with the highest high from the latest 90 completed daily candles. A drawdown smaller than 4% is `NOISE`; 4–10% is `SHALLOW`; 10–20% is `HEALTHY`; and at least 20% is `DEEP`. Exact lower boundaries enter the more severe band. The 20-day daily and weekly EMAs are displayed as context but do not silently alter these magnitude thresholds.

Two confirmed structural conditions take priority. `STRUCTURE_WARNING` requires the latest completed weekly close and the current price both to remain below the latest strict weekly pivot low that already has three completed bars on each side. `TREND_FAILURE` has higher priority and requires the latest completed monthly close and current price both to remain below the contemporaneous 50-month EMA. A live recovery above the broken level removes the override without rewriting the earlier historical state.

Historical classifications are recomputed at each completed daily boundary from information available then and stored inside `MarketSnapshot.details`. Intraday legacy snapshots without that daily boundary remain unclassified. The label describes market geometry and is not a buy, sell, or risk-sizing instruction.

Bottom-zone classification

The bottom-zone model describes a drawdown cycle rather than attempting to label an exact market low. A cycle begins only after a completed daily close is at least 30% below the running all-time closing high. `DEEP_DRAWDOWN` means that cycle is active without completed stabilization; `CAPITULATION` requires a drawdown of at least 50%.

`STABILIZING` is recorded once per cycle, on the first completed close at or above its 20-day EMA when the EMA is above its level five completed sessions earlier and daily RSI(14) is at least 45. Later completed closes are `EARLY_RECOVERY` while above the EMA and `RETEST` while below it. Recovery to within 20% of the running high ends the cycle and restores `OUTSIDE`.

The event date, classification, sensitivity variants, and Bitstamp robustness replay use only information available at each completed close. The eventual low and the subsequent 30D, 90D, 180D, and 365D outcomes are reserved for evaluation and never change an earlier label. A bottom-zone state is descriptive evidence, not confirmation that a final low is in.

Example · Daily RSI extremeRSI(14) crosses from < 75 to ≥ 757-day cooldown before another event can be counted.
05

Statistical integrity

No look-ahead bias

Signals may only use information observable at that point in time. Forward data is reserved for measuring subsequent outcomes.

Overlapping observations

Threshold conditions use first-crossing rules and cooldowns. This limits clusters of highly correlated observations from masquerading as independent evidence.

The pipeline also evaluates overlap separately for every study and forward horizon. Events are ordered by confirmation time; the earliest event is retained, and another event enters the independent sample only when its forward window starts at or after the prior retained window ends. This chronological rule produces the maximum non-overlapping population for equal-length windows without selecting events by their outcome. All raw observations remain visible for audit, while headline returns and confidence use the non-overlapping sample. This controls shared forward windows inside one study, but does not claim that Bitcoin returns are otherwise statistically independent or that separate studies are uncorrelated.

Outcome distributions and drawdowns

Study-detail charts use the individual forward outcomes stored by the research pipeline, not values reconstructed from aggregate percentiles. The return distribution groups the selected horizon into deterministic equal-width ranges spanning the observed minimum, maximum, and zero. The drawdown view plots each event's maximum adverse excursion (MAE) from its signal price over that same forward window; selecting a point also exposes its return and maximum favorable excursion (MFE).

The default chart population is the chronological non-overlapping sample. Readers can switch to the complete raw population for audit, with the corresponding sample size shown beside the chart. Empty or incomplete outcome populations remain empty. Histogram shape and MAE paths are descriptive evidence only; they do not estimate a probability density, confidence interval, liquidation risk, or future loss.

Cross-study comparison

A comparison contains between two and four published studies and always uses their chronological non-overlapping results. Featured mode preserves each study's configured featured horizon; when those horizons differ, the interface states that they are not a like-for-like temporal comparison. Exact shared-horizon controls are offered only when every selected study has a result with the same published horizon label.

Confidence is recalculated from the independent sample size at the currently selected horizon. Temporal assessment is read from that horizon's validation result. Sensitivity and cross-exchange assessments are displayed only when their evaluated horizon matches the selected result; otherwise they are marked `NOT_EVALUATED`. CSV and JSON exports preserve these aggregate audit fields but omit event-level observations. The comparison never ranks studies, combines their samples, or infers a superior signal.

Conditional research builder

The builder accepts two or three published study conditions and one predeclared lookback window of 7, 14, 30, 60, or 90 days. Conditions use their stored confirmation timestamps. A combined activation is recorded only when the full set changes from false to true with every condition observed inside that window. Additional signals do not create repeated events while the combination remains active; after it expires, a later alignment can activate it again.

Forward outcomes are calculated from the activation price against completed canonical Coinbase daily candles at fixed 30, 90, 180, and 365-day horizons. The same chronological non-overlap rule and minimum independent sample gate of eight apply separately to each horizon. The builder does not support OR or NOT operators, arbitrary indicator thresholds, optimized windows, or a claim of causal interaction. Its URL preserves a reproducible query configuration; results are recalculated from the database history available when opened.

Temporal train/test validation

Temporal validation uses only the non-overlapping population and requires at least eight completed observations for an individual horizon. The first 70% form the training period and the later 30% form an untouched chronological holdout. An expanding-window check also begins with the earliest half of the sample and evaluates two or three successive future blocks, each containing at least two observations. No detector threshold or event is selected using the holdout returns.

A fold is directionally stable when its median return has the same sign as the preceding expanding training window. A horizon is labeled consistent when the 70/30 holdout retains the training direction and at least two thirds of walk-forward folds do too. It is labeled unstable when the holdout changes direction and fewer than half of the folds remain stable; all other outcomes are mixed. These labels describe temporal sign stability, not statistical significance, causal predictability, or a trading recommendation.

Detector sensitivity

Each study changes one detector assumption at a time around its published canonical configuration. Depending on the signal, this can include its threshold, cooldown, pivot strength, divergence separation, breakout or retest tolerance, macro EMA period, or drawdown depth. Every variant generates a fresh event population and its own chronological non-overlapping sample at the featured horizon; no canonical event is reused merely to make the comparison look consistent.

The canonical configuration and an alternative each require at least eight independent completed observations before their median directions are compared. `STABLE_DIRECTION` means every eligible one-at-a-time alternative retained the canonical median sign; `DIRECTION_SENSITIVE` means at least one eligible alternative changed it. Smaller populations remain visible but produce `INSUFFICIENT_DATA`. This check describes local parameter robustness only: it does not optimize parameters, prove significance, or validate the signal on another exchange.

Predeclared RSI threshold and regime research

The daily RSI family is fixed at 65, 70, 75, and 80 with a seven-day cooldown. The weekly RSI family is fixed at 45, 50, 55, and 60 with an eight-week cooldown. RSI 75 daily and RSI 50 weekly remain the published canonical definitions. Every threshold is evaluated across every forward horizon already declared for its study; observed returns never determine which thresholds or horizons are displayed.

For each threshold and horizon, the pipeline calculates all completed forward outcomes and then selects one global chronological non-overlapping population. Only after that selection are raw and independent observations split by the exact market-regime snapshot stored at the signal close. If no point-in-time snapshot exists, the observation stays in an explicit unclassified bucket and is never assigned a regime retrospectively.

A threshold or regime cell needs at least eight independent observations to be interpreted. Smaller cells still report descriptive outcomes but are labeled insufficient data. Threshold variants may contain some of the same source events, so their rows are comparative views of fixed definitions—not separate experiments, optimized models, or evidence of statistical significance.

Cross-exchange robustness

The canonical detector is replayed independently on Coinbase BTC-USD and Bitstamp BTC/USD over the intersection of their completed daily history. Weekly and monthly candles, indicators, events, forward outcomes, and chronological non-overlapping samples are rebuilt from each venue's own daily series. Venue events are never copied from Coinbase and venue populations are never pooled.

Both venues require at least eight independent observations at the featured horizon before median-return direction is compared. Matching signs are labeled `CONFIRMED_DIRECTION`, opposite signs `DIRECTION_DIVERGENCE`, and smaller or unavailable populations remain explicit. This is a descriptive robustness check, not proof that either venue predicts future returns.

Confidence from sample size

Very low <10Low 10–29Medium 30–99High 100+
06

Scoring model

The 0–100 Opportunity Score combines four independent perspectives. It describes the quality of current conditions, not a recommendation.

Trend40Momentum25Mean reversion25Confirmation10

The historical regime timeline recomputes this model once per completed daily candle using only candles that were closed at that timestamp. It begins only when at least 51 completed monthly candles are available, allowing both the current and previous 50-month EMA values to be formed without look-ahead data.

Outcome calibration audit

Stored point-in-time snapshots are evaluated at 30, 90, and 180 days. For each horizon, the pipeline first selects one global chronological non-overlapping population and only then divides observations into Defensive, Mixed, Constructive, Bullish, and Strong Trend score bands. This prevents two different bands from claiming the same future return window.

Each band reports raw and independent sample size, median and mean return, win rate, sample confidence, and whether the regime was upgraded, unchanged, or downgraded at the horizon. An ordering assessment requires at least three bands with eight independent outcomes each: `ORDERED` means every adjacent eligible band has a non-decreasing median, `INVERTED` means every one decreases, and other patterns are `MIXED`. Smaller comparisons remain `INSUFFICIENT_DATA`.

The 2026-08-24 audit found an `INVERTED` 30-day ordering across the three eligible bands: Defensive +7.54% (N=10), Mixed +1.15% (N=28), and Constructive −1.74% (N=38). Bullish had N=7 and Strong Trend had no observation, while the 90-day and 180-day comparisons lacked three eligible bands. This is diagnostic evidence against interpreting the current score as a calibrated probability; weights are not changed automatically from this sample.

07

Limitations

Bitcoin has a short and structurally changing history. Exchange microstructure, liquidity, regulation, and market participants evolve. Historical analogues are therefore imperfect.

  • Small samples can produce unstable estimates.
  • Four completed halvings cannot support a predictive cycle distribution or isolate the subsidy change from the market structure and macro conditions of each era.
  • Backtests exclude fees, slippage, taxes, and execution constraints.
  • Multiple studies share observations and should not be treated as independent votes.
  • Exchange comparisons can still share the same underlying global Bitcoin price cycle.
  • The scoring weights remain heuristic. Outcome calibration is audited descriptively, but the limited and currently inverted 30-day ordering does not justify automatic reweighting.

Research, not a recommendation. Live market data can be delayed or temporarily unavailable. Historical results are displayed only when they have been computed and stored by the database research pipeline.