Methodology
How the tool turns "full moons cause tops" from a vibe into a measured, falsifiable number โ and how it builds its forward predictions.
1. Price & moon data
- Bitcoin prices: daily BTC-USD closes from Yahoo Finance, back to 2014.
- Moon dates: the exact time of every full and new moon, computed with
the
ephemastronomy library โ not calendar approximations.
2. Detecting true swing tops and bottoms
The naive approach โ "the highest price in the two weeks around each full moon" โ is
circular: it guarantees a high near every moon whether or not one really belongs
there. Instead the tool finds genuine swing pivots in the price series itself
using peak detection (scipy.signal.find_peaks), governed by two controls:
| Control | What it does |
|---|---|
| Minimum spacing | How far apart two pivots must be. Larger = fewer, more significant tops/bottoms. |
| Minimum prominence | How far a swing must stand out from the surrounding price (as a % of price). Filters out insignificant wiggles. |
On the default settings โ one pivot per lunar cycle, 15% prominence โ only the major turning points survive.
3. Matching moons to pivots
Each full moon is matched to the nearest swing high, and each new moon to the nearest swing low, provided one exists within a maximum lag (default 14 days โ half a lunar cycle). That cap stops a top being mis-assigned to a moon on the far side of the cycle.
The key quantity recorded is the signed offset:
offset = (pivot date โ moon date), in days
negative = the turning point came before the moon ยท positive = it came after
The sign is what makes the "tops come a few days after the full moon" claim testable โ an unsigned distance would throw that information away.
4. The statistics
Across all matched pairs the tool reports the mean, median and standard deviation of the offsets, plus a histogram of how they're distributed. Reading it:
- A mean near zero with a wide spread โ turning points scatter symmetrically around the moon: no real timing edge.
- A clearly positive mean โ tops genuinely tend to lag the full moon.
- The standard deviation is the honesty check โ a "3 days after" average with a ยฑ9-day spread is a weak tendency, not a rule.
5. Predicting future turning points
Prediction is deliberately simple, so it can't overfit:
predicted top = next full moon + average top-lag
predicted bottom = next new moon + average bottom-lag
Each prediction is drawn as a date plus a ยฑ1 standard-deviation window, so the uncertainty is always visible. The search also looks back one lunar cycle, so the phase you're currently in still appears and is flagged as an active window until it elapses.
Reproducibility
The analysis engine is open and deterministic: the same settings always produce the same result. Every matched pair and prediction can be exported as CSV from the live tool for independent checking.