
The classic BTC top indicator — 111-day SMA crossing the 350-day SMA × 2. One signal per cycle, near-perfect track record (2013/2017/2021).
Pi Cycle Top Indicator was introduced by Philip Swift (LookIntoBitcoin) in 2019. It's built on the empirical observation that Bitcoin cycle tops historically align with a specific moving-average cross:
When the fast line crosses above the slow ×2 line, it signals an over-extended market typical of cycle tops. The number 111 × π ≈ 350, hence the name.
Historical hits:
Strategy logic:
buyMode:
symmetric (default): SMA(111) crosses below SMA(350)×2 — symmetric crossover, fires sparsely.price_200w: Price crosses above the 200-week MA — alternative bottom signal (historical bottom-zone marker).Because it only triggers near cycle tops, this strategy produces ~1 trade per 4-year cycle. It's not an active trading system; it's a risk-off signal for HODLers and a portfolio rebalancer. BTC-only — the empirical correlation doesn't generalize to other assets.
| Name | Default | Range | Description |
|---|---|---|---|
| MA Fast (days) | 111 | 20–365 | Fast SMA period. Default 111 from Philip Swift's original spec. |
| MA Slow (days) | 350 | 100–500 | Slow SMA period. Default 350 (111 × π ≈ 348). |
| Slow Multiplier | 2 | 1–3 | Multiplier applied to slow MA before crossover check. 2.0 is the standard. |
| Buy Mode | symmetric | – | `symmetric` (default): buy when fast MA crosses below slow MA × multiplier. `price_200w`: buy when price crosses above 200-week MA. |
The pre-baked mini-backtest is refreshed daily — check back soon or start a live run in the Arena.
Run in Arena →// Calculate moving averages
smaFast = SMA(close, maFast) // default 111
smaSlow = SMA(close, maSlow) // default 350
slowAdj = smaSlow * slowMultiplier // default × 2.0
for each bar:
// SELL: fast MA crosses above slow×mult — top warning
if position.is_long and crossover(smaFast, slowAdj):
SELL
// BUY depending on mode
if position.is_flat:
if buyMode == 'symmetric' and crossunder(smaFast, slowAdj):
BUY
if buyMode == 'price_200w' and crossover(close, SMA(close, 200*7)):
BUYThree hits (2013/2017/2021) is statistically thin — and there's no theoretical reason why 111 × 2 should mark tops. The November 2021 hit fired on the *secondary* peak, not the all-time-high in April 2021 (the secondary peak was lower). Use as one signal among many, not a hard prediction.
Capitulation / euphoria proxy from rolling 155-day price extremes — STH/LTH wave behavior without on-chain data.
Use Bitcoin options market structure as a directional filter — if the 30-day BTC average sits above the Max Pain price, the trend is bullish.
Check out our Strategy Insights Reports — pre-baked deep-dives with historical results, comparisons, and market context.