Crypto Research Labs
EN ▾
GitHub

← All hypotheses

H-027: A daily model gives every coin's chance of rising above fees better than its base rate

Fail  Family: forecast · Status: rejected

Can a daily model predict crypto price direction? The idea did not beat simply buying the coin and holding it. It is rejected.

Result

pooled Brier skill -0.0089 (p = 0.012, need p < 0.025); skill above zero on 5/13 coins; paper portfolio beats holding on 4/13 and the constant share on 4/13

Sharpe: return per unit of risk (higher is better). CAGR: average yearly growth. Max drawdown: worst fall from a peak. p-value: chance the result is luck (lower is better). “Hold” columns are buy-and-hold for the same asset and days. Glossary

AssetDaysBrier skillp-valueq (FDR)Guessed rightSharpeHold SharpeConstant share SharpeIn market
BTC1760-0.00740.2190.31752.2%0.400.470.4748%
ETH1760-0.00230.3660.47651.0%0.160.200.2049%
SOL1760-0.01170.5050.59751.2%0.220.340.3449%
BNB1760+0.00420.0220.04951.2%0.450.410.4148%
XRP1760+0.00280.0030.02154.1%0.500.500.5049%
ADA1760-0.00420.0950.17753.9%-0.06-0.03-0.0349%
LTC1760+0.00080.0150.04052.6%0.130.100.1049%
LINK1760-0.01190.6800.68049.8%0.270.290.2948%
DOGE1760-0.00090.0040.02153.5%0.200.250.2549%
XLM1760+0.00310.0060.02153.3%0.290.290.2949%
TRX1760+0.00340.0050.02153.8%0.810.740.7448%
EVER1306-0.10210.6760.68054.7%-0.06-0.11-0.1149%
GRAM946-0.03140.1610.26157.7%-0.46-0.35-0.3547%
∑21612-0.00890.012—52.8%————

Calibration: forecast vs what happened

ForecastForecast ⌀HappenedDays
20%–30%26.7%33.3%15
30%–40%37.7%44.4%820
40%–50%46.0%44.4%13847
50%–60%53.2%45.9%6447
60%–70%63.3%58.7%455
70%–80%72.9%57.1%28

Equity curves

Growth of 1 unit, log scale, fees included. Only days on which the rule is fully defined are counted.

Why it might work

Idea by F1DevBin: an honest service could publish a daily buy/sell view with a confidence level for every coin and keep score in public. Rephrased as a forecast: every day, for every coin, the probability that the next day's return beats the round-trip cost. One logistic regression shared by all 13 coins. Inputs at the close of day D: log returns over 1, 3, 7 and 30 days, distance from the 50- and 200-day averages, 7- and 30-day volatility, Bitcoin's 1- and 7-day returns, and, lagged one day for publication delay, BTC funding (7-day mean), Fear & Greed, 30-day USDT+USDC supply growth and 7-day BTC net exchange flow. Every input is a rolling 365-day z-score of its own past (min. 180 days, clipped at ±5), so coins with very different volatility share one model. The model is refitted on the first day of every month on decisions whose outcome was already known (up to two days before), L2 = 1. Costs: 0.1 % per side on Binance, 0.4 % per side on Gate.io coins (0.2 % fee + 0.2 % slippage). It passes only if, pooled over all coins from 2022 on, its probabilities beat each coin's base rate in the training window (Brier skill above zero) by more than rotating the forecasts in time does (one shift for all coins, 2000 shifts). Per-coin results are exploratory (Benjamini-Hochberg). Our earlier results (no rule beat luck on any of 156 rule x coin pairs; minute-level direction, H-001/H-002, failed) make a pass unlikely. A paper portfolio holds a share of the coin equal to the probability, trading only when the share moves by 10 points or more; it is reported against holding and against a constant share equal to its own average (timing skill would beat the constant share). Shares alpha with H-028 (0.05 / 2).

Verdict history

Pre-registered specification

kind: forecast
target: direction
model:
  type: pooled_logit
  features:
  - r1
  - r3
  - r7
  - r30
  - d50
  - d200
  - v7
  - v30
  - btc_r1
  - btc_r7
  - funding
  - fear_greed
  - stable30
  - flow7
  zscore_window: 365
  zscore_min_periods: 180
  clip: 5
  l2: 1.0
  refit: monthly
  external_lag: 1
  ffill_limit: 3
universe:
- BTCUSDT
- ETHUSDT
- SOLUSDT
- BNBUSDT
- XRPUSDT
- ADAUSDT
- LTCUSDT
- LINKUSDT
- DOGEUSDT
- XLMUSDT
- TRXUSDT
- EVERUSDT
- GRAMUSDT
costs:
  default: 0.001
  EVERUSDT: 0.004
  GRAMUSDT: 0.004
portfolio:
  weight: probability
  band: 0.1
periods:
- name: oos
  start: '2022-01-01'
significance:
  method: circular_shift
  n: 2000
  alpha: 0.025
criterion:
  metric: brier_skill
  pooled: true