Strategy 1 – Meme Comparative Volume → Forward Return
Hypothesis: 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.
Strategy 2 – Breakout Entries with Trailing Stop
Hypothesis: 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. Fees 10.5 bps/side.
Result (base, no volume confirmation):
| Option | Trades | Win% | PF | E[R] (IS) | E[R] (OOS) | MaxDD | Total Return |
|---|---|---|---|---|---|---|---|
| A (50/70) | 622 | 31.8% | 2.22 | +0.55 | +0.13 | −59.2% | +346.6% |
| B (70/90) | 463 | 27.9% | 1.83 | +0.39 | +0.15 | −59.1% | +160.2% |
| C (100/120) | 325 | 25.5% | 1.59 | +0.29 | +0.01 | −61.8% | +89.2% |
Adding a volume‑confirmation filter (cv_ratio ≥ 1.5 on signal bar) raises E[R] slightly (+0.04 IS, +0.04 OOS).
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. The edge collapses out‑of‑sample vs in‑sample, indicating strong trend‑regime dependence (profitable in 2023, weak in 2022/2025). Maximum drawdown ≈ −60% with 1% risk per trade.
Strategy 3 – Pairs Correlation & Rubber‑Band Effect
Hypothesis: 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 (IS E[R] +0.55, OOS +0.13, PF 2.22). Longer lookbacks degrade performance; edge is trend‑regime dependent.
- 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