Random Forest

Trains hundreds of different decision trees and averages their vote, so one tree's odd opinion can't dominate the final prediction.

Why it matters

Each tree trains on only a random sample of historical days and indicators, so every tree learns slightly different patterns. Averaging trees that "see" different things reduces the risk of the model memorizing noise specific to a handful of days — and lets it capture non-linear relationships between indicators that logistic regression can't see.

Build it yourself

Simplified to two groups of trees (the project trains hundreds at once): drag how many trees in each group vote "up" and watch the combined vote.

Combined vote % = (group A % + group B %) ÷ 2
Probability of a rise (combined vote)

Illustrative example numbers for practice — not real data.

How it works, step by step

  1. Hundreds of different training subsets are created, each with a random sample of historical days and indicators.
  2. A decision tree is trained on each subset: a sequence of questions like "is MVRV > 2?" that keeps splitting days into increasingly similar groups.
  3. For a new day, every tree votes on whether it thinks price will rise or fall within the chosen horizon.
  4. The final probability is simply the percentage of trees that voted "up".
Honest limitation. Hundreds of trees make it much harder to know exactly why it predicted what it did, compared with logistic regression — precision is gained, transparency is lost.

Predictions

These are the real predictions stored day by day, each one produced by walk-forward validation: every day's was produced by a model trained only on prior cycles. They're published for transparency, not because there's an edge behind them — for price direction, the project's research found none that is defensible.

Probability of a rise within 7 days

Probability of a rise within 30 days

Probability of a rise within 90 days

Data last updated on 2026-09-09.

← All models