01Meme Comparative Volume → Forward Return
Mixed — right-tail edge, not next-dayHypothesis: A rise in a meme coin’s volume relative to its recent average predicts a price rise the following day (or over the next few days).
Data: Bybit meme‑perpetual symbols (35 coins, daily OHLCV 2021‑2026). Off‑Bybit sources probed (CoinGecko, GeckoTerminal) but volume too sparse; the on‑Bybit sample is sufficient.
Meme classification: A symbol is considered a meme if its base ticker (without USDT) appears in a curated list of known meme coins (e.g., DOGE, SHIB, PEPE, WIF, BONK, FLOKI, etc.) OR if the ticker contains any of the keywords: dog, shib, pepe, wif, bonk, floki, turbo, brett, mog, cat, popcat, nut, ponke, mew, cheems, moodeng, bome, ordi, sats, toshi, neiro, fart, act, why, giga, mother, daddy, retard, wolf, peng, fish, ladys, meme, bobo, kishu, samo, duko, coq, grok, harambe, whales, pump, cookie, bink, meow, mubarak, spx, wif.
Method: Compute comparative volume ratio = volume(t) / SMA(volume, K)(t). Signal when ratio ≥ threshold (tested K=20/30, threshold=1.25‑3.0). Forward return measured from open(t+1) to close(t+H), H=1,2,3,5. Baseline = same‑day mean forward return of all meme coins (market‑neutral read).
Result: The effect is not next‑day (H=1 weak). Peak predictiveness at H=2–3 with volume ≥2× average: t‑stat ≈ 2.8–3.9, relative forward return +1.0% to +2.2% over baseline. Median forward returns remain negative; the edge is a right‑tail driven by a few large winners.
02Breakout Entries with Trailing Stop
Positive — capacity-capped edge holdsHypothesis: Buying a new N‑day high and exiting when price falls to the X‑day low (trailing) captures profit.
Variants tested:
- A: N=50, X=70
- B: N=70, X=90
- C: N=100, X=120
Data: 121 crypto‑native Bybit USDT perps (≥150 daily candles, ≥$500k/day avg turnover). Window ≈ 2020‑03 → 2026‑09 (BTCUSDT 2,360 days).
Method: Signal at close when close[t] > max(high[t‑N … t‑1]). Entry next open. Stop = min(low[t‑X+1 … t]) trailed daily (never lowered). Risk 1% of $100k equity per trade, max 10 concurrent positions (portfolio-level cap, enforced — signals firing with no free slot are rejected). Fees 10.5 bps/side.
Result (base, no volume confirmation):
| Option | Trades | Win% | PF | E[R] | OOS E[R] | MaxDD | Total Return |
|---|---|---|---|---|---|---|---|
| A (50/70) | 147 | 30.6% | 4.95 | +1.72 | +1.16 | −46.9% | +253.3% |
| B (70/90) | 120 | 25.8% | 1.94 | +0.44 | +1.15 | −37.3% | +52.7% |
| C (100/120) | 88 | 28.4% | 1.77 | +0.35 | +1.14 | −28.9% | +30.9% |
Adding a volume‑confirmation filter (cv_ratio ≥ 1.5 on signal bar) raises PF slightly (A: 4.95→5.21) without materially changing the read.
Directional impact without stop loss: To understand the pure breakout signal, we measured the average forward return after the breakout bar, exiting after H days (no stop, no trailing). The table below shows the mean return over the next H days (averaged across all symbols and all breakout signals). This isolates whether price tends to continue up after a breakout, independent of exit rules.
| Breakout N | H=1 | H=2 | H=3 | H=4 | H=5 | Avg H=1‑10 |
|---|---|---|---|---|---|---|
| 50 | +1.03% | +1.84% | +2.33% | +2.52% | +2.29% | +2.63% |
| 70 | +1.31% | +2.37% | +2.81% | +2.72% | +2.54% | +2.84% |
| 100 | +0.87% | +0.94% | +0.68% | +0.60% | +0.43% | +0.59% |
Even without a stop loss, the breakout shows a positive drift: for the 50‑day breakout, the average return over the next 10 days is +2.63%; for 70‑day it is +2.84%; for 100‑day it is only +0.59%. This confirms that price tends to drift upward after a breakout, especially for shorter lookbacks, but the magnitude is modest and the winning percentage is around 50‑60% (see win_rate column in the full output). The trailing stop in the main strategy captures part of this drift while limiting losses on failed breakouts.
Interpretation: Shorter lookback + tighter stop (Option A) dominates. Correcting an earlier bug where the 10-position cap was documented but not enforced (unlimited concurrent positions were allowed) cut headline trade counts sharply (622→147 for A) and shallowed max drawdown (−59%→−47%), since aggregate risk is now bounded as intended. Maximum drawdown ≈ −29% to −47% with 1% risk per trade and a real 10-position cap.
03Pairs Correlation & Rubber-Band Effect
Rejected — no mean-reversion, trade loses moneyHypothesis: Pairs that move together with high correlation, when they lose that correlation, will exhibit a mean‑reverting “rubber‑band” in their price spread.
Data: 60 most‑liquid crypto‑native Bybit perps (ranked by 24h turnover), daily close prices 2020‑03 → 2026‑09 (2,360 days). 1,770 unique pairs.
Method:
- Compute daily log returns.
- Rolling 60‑day Pearson correlation for each pair.
- Define a “high‑corr” pair when corr > 0.75 for ≥20 consecutive days.
- A “decorrelation event” = correlation drops below 0.30 after a high‑corr stretch.
- Measure forward correlation recovery and forward spread z‑score (log‑price spread vs trailing mean/std).
- Trading rule: at a decorrelation event with spread |z| ≥ 2.0, enter next‑day open: short the outperformer, long the laggard (equal notional). Exit when spread |z| < 0.5, or correlation re‑couples > 0.60, or 20‑day time stop.
Result – Layer 1 (statistical):
| Group | n | Corr‑recover @30d | Corr‑recover @90d | z‑shrink >50% @20d | Mean \|z0\| |
|---|---|---|---|---|---|
| High‑corr (established) | 1,106 | 11.6% | 66.8% | 0.2% | 1.45 |
| Ctrl (never high‑corr) | 8,876 | 8.0% | 48.9% | 51.0% | 1.39 |
Correlation does eventually recover, but slowly. The price spread does not mean‑revert after a high‑corr break – the spread shrinks in only 0.2% of established pairs versus 51% of random pairs.
Result – Layer 2 (trading):
- Trades: 270
- Win rate: 52.6%
- Profit factor: 0.92
- Total net P&L: −$31,236
- Average hold: 18.4 days
- Exits: 215 TIMEOUT, 53 REVERT, 2 RECOUPLE
Interpretation: The rubber‑band hypothesis fails for crypto perps. Decorrelation events of previously‑high‑corr pairs are typically regime shifts; the diverging leg tends to keep diverging rather than snap back. Correlation itself is sticky, but not a tradable spread signal at these horizons.
Analysis Pipeline
- Universe construction: Fetch all Bybit USDT linear perps; exclude stock/ETF perps using a ticker list; keep crypto‑native symbols.
- Data download: For each symbol, download daily OHLCV via Bybit
/v5/market/kline(interval=D, newest‑first pages, paginated backwards to build full history). Cache gzipped JSON per symbol. - Feature calculation: Compute indicators (SMA, rolling max/min, ATR, volume SMA, comparative volume ratio, rolling correlation, etc.) using only historical bars (no look‑ahead).
- Signal generation: Apply strategy‑specific rules (breakout, comparative volume threshold, correlation event).
- Order simulation: Enter at next open, apply trailing stops or time stops, size by fixed fractional risk (1% of equity per trade), cap concurrent positions.
- Cost model: Baseline fee 10.5 bps per side (5.5 bps taker + 5 bps slippage); cost sweeps performed post‑hoc on saved gross trades.
- Performance metrics: Trade‑level (win rate, avg win/loss, payoff, profit factor, expectancy R). Equity‑level via daily mark‑to‑market delta (avoids double‑counting). Annualised return, Sharpe, max drawdown, per‑year breakdown, walk‑forward (70/30 temporal split), Monte Carlo bootstrap of trade returns.
- Output: Dated JSON and CSV files under
results/; summary markdown; validation script re‑derives headline numbers from raw files.
Results Summary
All numbers are re‑derived from committed trade logs (results/*). No data was fabricated; missing observations or weak signals are stated honestly.
- Strategy 1: Comparative volume predicts 2‑5 day forward returns, strongest at volume ≥2× average (t‑stat ~3, relative +1–2 % vs meme‑basket baseline).
- Strategy 2: 50/70 breakout + trailing stop is the best variant (E[R] +1.72, OOS E[R] +1.16, PF 4.95) once the documented 10-position concurrency cap is actually enforced (a bug fix — it was previously unlimited). Longer lookbacks degrade performance.
- Strategy 3: High‑corr pairs that decorrelate do not exhibit a mean‑reverting price spread; the rubber‑band trade loses money (PF 0.92).
Repository: https://github.com/jahrfm/scott-phillips-strategies